Skip to content

Commit 29cb47e

Browse files
committed
Use hasValueSatisfying in metric assertions
Depends on SDK 1.62.0 (open-telemetry/opentelemetry-java#TBD) which adds LongPointAssert#hasValueSatisfying and DoublePointAssert#hasValueSatisfying. Converted: - oshi AbstractProcessMetricsTest: drops raw AssertJ on getPoints() in favor of the typed fluent chain. - runtime-telemetry BufferMetricTest: replaces point.satisfies(pointData -> ... assertThat(pointData.getValue())...) blocks with the typed hasValueSatisfying + hasAttributes.
1 parent fe4688b commit 29cb47e

5 files changed

Lines changed: 68 additions & 57 deletions

File tree

instrumentation/oshi/testing/src/main/java/io/opentelemetry/instrumentation/oshi/AbstractProcessMetricsTest.java

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,17 @@
66
package io.opentelemetry.instrumentation.oshi;
77

88
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;
9+
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
910

11+
import io.opentelemetry.api.common.AttributeKey;
1012
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
1113
import org.junit.jupiter.api.Test;
1214
import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
1315

1416
public abstract class AbstractProcessMetricsTest {
1517

18+
private static final AttributeKey<String> TYPE = AttributeKey.stringKey("type");
19+
1620
protected abstract void registerMetrics();
1721

1822
protected abstract InstrumentationExtension testing();
@@ -33,12 +37,17 @@ void test() {
3337
metric ->
3438
assertThat(metric)
3539
.hasUnit("By")
36-
// TODO: Provide fuzzy value matching
3740
.hasLongSumSatisfying(
3841
sum ->
39-
assertThat(metric.getLongSumData().getPoints())
40-
.anySatisfy(
41-
point -> assertThat(point.getValue()).isPositive()))));
42+
sum.hasPointsSatisfying(
43+
point ->
44+
point
45+
.hasAttributesSatisfying(equalTo(TYPE, "rss"))
46+
.hasValueSatisfying(v -> v.isPositive()),
47+
point ->
48+
point
49+
.hasAttributesSatisfying(equalTo(TYPE, "vms"))
50+
.hasValueSatisfying(v -> v.isPositive())))));
4251
testing()
4352
.waitAndAssertMetrics(
4453
"io.opentelemetry.oshi",
@@ -48,11 +57,16 @@ void test() {
4857
metric ->
4958
assertThat(metric)
5059
.hasUnit("ms")
51-
// TODO: Provide fuzzy value matching
5260
.hasLongGaugeSatisfying(
5361
gauge ->
54-
assertThat(metric.getLongGaugeData().getPoints())
55-
.anySatisfy(
56-
point -> assertThat(point.getValue()).isPositive()))));
62+
gauge.hasPointsSatisfying(
63+
point ->
64+
point
65+
.hasAttributesSatisfying(equalTo(TYPE, "user"))
66+
.hasValueSatisfying(v -> v.isNotNegative()),
67+
point ->
68+
point
69+
.hasAttributesSatisfying(equalTo(TYPE, "system"))
70+
.hasValueSatisfying(v -> v.isNotNegative())))));
5771
}
5872
}

instrumentation/oshi/testing/src/main/java/io/opentelemetry/instrumentation/oshi/AbstractSystemMetricsTest.java

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,16 @@
66
package io.opentelemetry.instrumentation.oshi;
77

88
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;
9+
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
910

11+
import io.opentelemetry.api.common.AttributeKey;
1012
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
1113
import org.junit.jupiter.api.Test;
1214

1315
public abstract class AbstractSystemMetricsTest {
1416

17+
private static final AttributeKey<String> STATE = AttributeKey.stringKey("state");
18+
1519
protected abstract void registerMetrics();
1620

1721
protected abstract InstrumentationExtension testing();
@@ -31,12 +35,17 @@ void test() {
3135
metric ->
3236
assertThat(metric)
3337
.hasUnit("By")
34-
// TODO: Provide fuzzy value matching
3538
.hasLongSumSatisfying(
3639
sum ->
37-
assertThat(metric.getLongSumData().getPoints())
38-
.anySatisfy(
39-
point -> assertThat(point.getValue()).isPositive()))));
40+
sum.hasPointsSatisfying(
41+
point ->
42+
point
43+
.hasAttributesSatisfying(equalTo(STATE, "used"))
44+
.hasValueSatisfying(v -> v.isPositive()),
45+
point ->
46+
point
47+
.hasAttributesSatisfying(equalTo(STATE, "free"))
48+
.hasValueSatisfying(v -> v.isPositive())))));
4049
testing()
4150
.waitAndAssertMetrics(
4251
"io.opentelemetry.oshi",
@@ -46,12 +55,17 @@ void test() {
4655
metric ->
4756
assertThat(metric)
4857
.hasUnit("1")
49-
// TODO: Provide fuzzy value matching
5058
.hasDoubleGaugeSatisfying(
5159
gauge ->
52-
assertThat(metric.getDoubleGaugeData().getPoints())
53-
.anySatisfy(
54-
point -> assertThat(point.getValue()).isPositive()))));
60+
gauge.hasPointsSatisfying(
61+
point ->
62+
point
63+
.hasAttributesSatisfying(equalTo(STATE, "used"))
64+
.hasValueSatisfying(v -> v.isPositive()),
65+
point ->
66+
point
67+
.hasAttributesSatisfying(equalTo(STATE, "free"))
68+
.hasValueSatisfying(v -> v.isPositive())))));
5569
testing()
5670
.waitAndAssertMetrics(
5771
"io.opentelemetry.oshi",

instrumentation/runtime-telemetry/library/src/testJava17/java/io/opentelemetry/instrumentation/runtimetelemetry/BufferMetricTest.java

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import static io.opentelemetry.instrumentation.runtimetelemetry.internal.Constants.BYTES;
99
import static io.opentelemetry.instrumentation.runtimetelemetry.internal.Constants.UNIT_BUFFERS;
1010
import static java.nio.charset.StandardCharsets.UTF_8;
11-
import static org.assertj.core.api.Assertions.assertThat;
1211

1312
import io.opentelemetry.api.common.AttributeKey;
1413
import io.opentelemetry.api.common.Attributes;
@@ -55,11 +54,9 @@ void shouldHaveJfrLoadedClassesCountEvents() {
5554
sum ->
5655
sum.hasPointsSatisfying(
5756
point ->
58-
point.satisfies(
59-
pointData -> {
60-
assertThat(pointData.getValue()).isGreaterThan(0);
61-
assertThat(pointData.getAttributes()).isEqualTo(directBuffer);
62-
}))),
57+
point
58+
.hasAttributes(directBuffer)
59+
.hasValueSatisfying(v -> v.isPositive()))),
6360
metric ->
6461
metric
6562
.hasName("jvm.buffer.memory.limit")
@@ -69,11 +66,9 @@ void shouldHaveJfrLoadedClassesCountEvents() {
6966
sum ->
7067
sum.hasPointsSatisfying(
7168
point ->
72-
point.satisfies(
73-
pointData -> {
74-
assertThat(pointData.getValue()).isGreaterThan(0);
75-
assertThat(pointData.getAttributes()).isEqualTo(directBuffer);
76-
}))),
69+
point
70+
.hasAttributes(directBuffer)
71+
.hasValueSatisfying(v -> v.isPositive()))),
7772
metric ->
7873
metric
7974
.hasName("jvm.buffer.memory.used")
@@ -83,10 +78,8 @@ void shouldHaveJfrLoadedClassesCountEvents() {
8378
sum ->
8479
sum.hasPointsSatisfying(
8580
point ->
86-
point.satisfies(
87-
pointData -> {
88-
assertThat(pointData.getValue()).isGreaterThan(0);
89-
assertThat(pointData.getAttributes()).isEqualTo(directBuffer);
90-
}))));
81+
point
82+
.hasAttributes(directBuffer)
83+
.hasValueSatisfying(v -> v.isPositive()))));
9184
}
9285
}

instrumentation/runtime-telemetry/library/src/testJava17/java/io/opentelemetry/instrumentation/runtimetelemetry/JfrClassesLoadedCountTest.java

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
package io.opentelemetry.instrumentation.runtimetelemetry;
77

88
import static io.opentelemetry.instrumentation.runtimetelemetry.internal.Constants.UNIT_CLASSES;
9-
import static org.assertj.core.api.Assertions.assertThat;
109

1110
import io.opentelemetry.instrumentation.runtimetelemetry.internal.JfrFeature;
1211
import org.junit.jupiter.api.Test;
@@ -36,10 +35,7 @@ void shouldHaveJfrLoadedClassesCountEvents() throws Exception {
3635
sum ->
3736
sum.hasPointsSatisfying(
3837
point ->
39-
point.satisfies(
40-
pointData ->
41-
assertThat(pointData.getValue())
42-
.isGreaterThanOrEqualTo(0)))),
38+
point.hasValueSatisfying(v -> v.isGreaterThanOrEqualTo(0)))),
4339
metric ->
4440
metric
4541
.hasName("jvm.class.count")
@@ -49,10 +45,7 @@ void shouldHaveJfrLoadedClassesCountEvents() throws Exception {
4945
sum ->
5046
sum.hasPointsSatisfying(
5147
point ->
52-
point.satisfies(
53-
pointData ->
54-
assertThat(pointData.getValue())
55-
.isGreaterThanOrEqualTo(0)))),
48+
point.hasValueSatisfying(v -> v.isGreaterThanOrEqualTo(0)))),
5649
metric ->
5750
metric
5851
.hasName("jvm.class.unloaded")
@@ -62,9 +55,6 @@ void shouldHaveJfrLoadedClassesCountEvents() throws Exception {
6255
sum ->
6356
sum.hasPointsSatisfying(
6457
point ->
65-
point.satisfies(
66-
pointData ->
67-
assertThat(pointData.getValue())
68-
.isGreaterThanOrEqualTo(0)))));
58+
point.hasValueSatisfying(v -> v.isGreaterThanOrEqualTo(0)))));
6959
}
7060
}

instrumentation/runtime-telemetry/library/src/testJava17/java/io/opentelemetry/instrumentation/runtimetelemetry/JfrThreadCountTest.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,9 @@
77

88
import static io.opentelemetry.instrumentation.runtimetelemetry.internal.Constants.ATTR_DAEMON;
99
import static io.opentelemetry.instrumentation.runtimetelemetry.internal.Constants.UNIT_THREADS;
10-
import static java.util.Objects.requireNonNull;
11-
import static org.assertj.core.api.Assertions.assertThat;
10+
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
1211

1312
import io.opentelemetry.instrumentation.runtimetelemetry.internal.JfrFeature;
14-
import io.opentelemetry.sdk.metrics.data.LongPointData;
1513
import org.junit.jupiter.api.Test;
1614
import org.junit.jupiter.api.extension.RegisterExtension;
1715

@@ -52,14 +50,16 @@ void shouldHaveJfrThreadCountEvents() throws Exception {
5250
metric
5351
.hasName("jvm.thread.count")
5452
.hasUnit(UNIT_THREADS)
55-
.satisfies(
56-
data ->
57-
assertThat(data.getLongSumData().getPoints())
58-
.anyMatch(p -> p.getValue() > 0 && !isDaemon(p))
59-
.anyMatch(p -> p.getValue() > 0 && isDaemon(p))));
60-
}
61-
62-
private static boolean isDaemon(LongPointData p) {
63-
return requireNonNull(p.getAttributes().get(ATTR_DAEMON));
53+
.hasLongSumSatisfying(
54+
sum ->
55+
sum.hasPointsSatisfying(
56+
point ->
57+
point
58+
.hasAttributesSatisfying(equalTo(ATTR_DAEMON, false))
59+
.hasValueSatisfying(v -> v.isPositive()),
60+
point ->
61+
point
62+
.hasAttributesSatisfying(equalTo(ATTR_DAEMON, true))
63+
.hasValueSatisfying(v -> v.isPositive()))));
6464
}
6565
}

0 commit comments

Comments
 (0)