Skip to content

Commit ffaf3c6

Browse files
committed
Merge pull request #105 from tomcz/master
Handle Gauges that return both Numbers and Booleans
2 parents 6c99b1a + 8edf17e commit ffaf3c6

File tree

2 files changed

+16
-11
lines changed

2 files changed

+16
-11
lines changed

simpleclient_dropwizard/src/main/java/io/prometheus/client/dropwizard/DropwizardExports.java

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package io.prometheus.client.dropwizard;
22

3-
43
import com.codahale.metrics.*;
54

65
import java.util.ArrayList;
@@ -44,15 +43,11 @@ private static String getHelpMessage(String metricName, Metric metric){
4443
*/
4544
List<MetricFamilySamples> fromGauge(String name, Gauge gauge) {
4645
Object obj = gauge.getValue();
47-
Double value;
48-
if (obj instanceof Integer) {
49-
value = Double.valueOf(((Integer) obj).doubleValue());
50-
} else if (obj instanceof Double) {
51-
value = (Double) obj;
52-
} else if (obj instanceof Float) {
53-
value = Double.valueOf(((Float) obj).doubleValue());
54-
} else if (obj instanceof Long) {
55-
value = Double.valueOf(((Long) obj).doubleValue());
46+
double value;
47+
if (obj instanceof Number) {
48+
value = ((Number) obj).doubleValue();
49+
} else if (obj instanceof Boolean) {
50+
value = ((Boolean) obj) ? 1 : 0;
5651
} else {
5752
LOGGER.log(Level.FINE, String.format("Invalid type for Gauge %s: %s", name,
5853
obj.getClass().getName()));

simpleclient_dropwizard/src/test/java/io/prometheus/client/dropwizard/DropwizardExportsTest.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,17 +52,25 @@ public Long getValue() {
5252
return 1234L;
5353
}
5454
};
55-
5655
Gauge<Float> floatGauge = new Gauge<Float>() {
5756
@Override
5857
public Float getValue() {
5958
return 0.1234F;
6059
}
6160
};
61+
Gauge<Boolean> booleanGauge = new Gauge<Boolean>() {
62+
@Override
63+
public Boolean getValue() {
64+
return true;
65+
}
66+
};
67+
6268
metricRegistry.register("double_gauge", doubleGauge);
6369
metricRegistry.register("long_gauge", longGauge);
6470
metricRegistry.register("integer_gauge", integerGauge);
6571
metricRegistry.register("float_gauge", floatGauge);
72+
metricRegistry.register("boolean_gauge", booleanGauge);
73+
6674
assertEquals(new Double(1234),
6775
registry.getSampleValue("integer_gauge", new String[]{}, new String[]{}));
6876
assertEquals(new Double(1234),
@@ -71,6 +79,8 @@ public Float getValue() {
7179
registry.getSampleValue("double_gauge", new String[]{}, new String[]{}));
7280
assertEquals(new Double(0.1234F),
7381
registry.getSampleValue("float_gauge", new String[]{}, new String[]{}));
82+
assertEquals(new Double(1),
83+
registry.getSampleValue("boolean_gauge", new String[]{}, new String[]{}));
7484
}
7585

7686
@Test

0 commit comments

Comments
 (0)