Skip to content

Commit 32fd44e

Browse files
authored
jmx allow boolean and enum for metric attributes (#12231)
1 parent 19ae57b commit 32fd44e

File tree

3 files changed

+41
-3
lines changed

3 files changed

+41
-3
lines changed

instrumentation/jmx-metrics/library/src/main/java/io/opentelemetry/instrumentation/jmx/engine/BeanAttributeExtractor.java

+6
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,12 @@ private String extractStringAttribute(MBeanServer server, ObjectName objectName)
272272
if (value instanceof String) {
273273
return (String) value;
274274
}
275+
if (value instanceof Boolean) {
276+
return value.toString();
277+
}
278+
if (value instanceof Enum) {
279+
return ((Enum<?>) value).name();
280+
}
275281
return null;
276282
}
277283
}

instrumentation/jmx-metrics/library/src/main/java/io/opentelemetry/instrumentation/jmx/engine/MetricAttributeExtractor.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@ public interface MetricAttributeExtractor {
2828
String extractValue(@Nullable MBeanServer server, @Nullable ObjectName objectName);
2929

3030
static MetricAttributeExtractor fromConstant(String constantValue) {
31-
return (a, b) -> {
32-
return constantValue;
33-
};
31+
return (a, b) -> constantValue;
3432
}
3533

3634
static MetricAttributeExtractor fromObjectNameParameter(String parameterKey) {

instrumentation/jmx-metrics/library/src/test/java/io/opentelemetry/instrumentation/jmx/engine/AttributeExtractorTest.java

+34
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ public interface Test1MBean {
3434
double getDoubleAttribute();
3535

3636
String getStringAttribute();
37+
38+
boolean getBooleanAttribute();
39+
40+
Enum<?> getEnumAttribute();
3741
}
3842

3943
private static class Test1 implements Test1MBean {
@@ -71,6 +75,20 @@ public double getDoubleAttribute() {
7175
public String getStringAttribute() {
7276
return "";
7377
}
78+
79+
@Override
80+
public boolean getBooleanAttribute() {
81+
return true;
82+
}
83+
84+
@Override
85+
public Enum<?> getEnumAttribute() {
86+
return DummyEnum.ENUM_VALUE;
87+
}
88+
89+
private enum DummyEnum {
90+
ENUM_VALUE
91+
}
7492
}
7593

7694
private static final String DOMAIN = "otel.jmx.test";
@@ -202,4 +220,20 @@ void testStringAttribute() throws Exception {
202220
AttributeInfo info = extractor.getAttributeInfo(theServer, objectName);
203221
assertThat(info == null).isTrue();
204222
}
223+
224+
@Test
225+
void testBooleanAttribute() throws Exception {
226+
BeanAttributeExtractor extractor = BeanAttributeExtractor.fromName("BooleanAttribute");
227+
AttributeInfo info = extractor.getAttributeInfo(theServer, objectName);
228+
assertThat(info).isNull();
229+
assertThat(extractor.extractValue(theServer, objectName)).isEqualTo("true");
230+
}
231+
232+
@Test
233+
void testEnumAttribute() throws Exception {
234+
BeanAttributeExtractor extractor = BeanAttributeExtractor.fromName("EnumAttribute");
235+
AttributeInfo info = extractor.getAttributeInfo(theServer, objectName);
236+
assertThat(info).isNull();
237+
assertThat(extractor.extractValue(theServer, objectName)).isEqualTo("ENUM_VALUE");
238+
}
205239
}

0 commit comments

Comments
 (0)