Skip to content

Commit 23acd5b

Browse files
Migrate "runtime-metrics" test from groovy to java (#8928)
Co-authored-by: Jean Bisutti <[email protected]>
1 parent 002588b commit 23acd5b

File tree

4 files changed

+76
-58
lines changed

4 files changed

+76
-58
lines changed

instrumentation/runtime-telemetry/runtime-telemetry-java17/javaagent/src/test/groovy/JmxRuntimeMetricsTest.groovy

Lines changed: 0 additions & 37 deletions
This file was deleted.

instrumentation/runtime-telemetry/runtime-telemetry-java17/javaagent/src/test/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java17/JfrRuntimeMetricsTest.java

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,31 +5,17 @@
55

66
package io.opentelemetry.instrumentation.javaagent.runtimemetrics.java17;
77

8-
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;
9-
import static org.awaitility.Awaitility.await;
10-
11-
import io.opentelemetry.instrumentation.testing.AgentTestRunner;
12-
import io.opentelemetry.sdk.metrics.data.MetricData;
13-
import io.opentelemetry.sdk.testing.assertj.MetricAssert;
14-
import java.util.Collection;
15-
import java.util.function.Consumer;
8+
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
9+
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
1610
import org.junit.jupiter.api.Assumptions;
1711
import org.junit.jupiter.api.BeforeAll;
1812
import org.junit.jupiter.api.Test;
13+
import org.junit.jupiter.api.extension.RegisterExtension;
1914

2015
class JfrRuntimeMetricsTest {
21-
@SafeVarargs
22-
private static void waitAndAssertMetrics(Consumer<MetricAssert>... assertions) {
23-
await()
24-
.untilAsserted(
25-
() -> {
26-
Collection<MetricData> metrics = AgentTestRunner.instance().getExportedMetrics();
27-
assertThat(metrics).isNotEmpty();
28-
for (Consumer<MetricAssert> assertion : assertions) {
29-
assertThat(metrics).anySatisfy(metric -> assertion.accept(assertThat(metric)));
30-
}
31-
});
32-
}
16+
17+
@RegisterExtension
18+
static final InstrumentationExtension testing = AgentInstrumentationExtension.create();
3319

3420
@BeforeAll
3521
static void setUp() {
@@ -45,7 +31,8 @@ void shouldHaveDefaultMetrics() {
4531
// This should generate some events
4632
System.gc();
4733

48-
waitAndAssertMetrics(
34+
testing.waitAndAssertMetrics(
35+
"io.opentelemetry.runtime-telemetry-java17",
4936
metric -> metric.hasName("process.runtime.jvm.cpu.longlock"),
5037
metric -> metric.hasName("process.runtime.jvm.cpu.limit"),
5138
metric -> metric.hasName("process.runtime.jvm.cpu.context_switch"));
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.instrumentation.javaagent.runtimemetrics.java17;
7+
8+
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
9+
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
10+
import org.junit.jupiter.api.Test;
11+
import org.junit.jupiter.api.extension.RegisterExtension;
12+
13+
class JmxRuntimeMetricsTest {
14+
15+
@RegisterExtension
16+
static final InstrumentationExtension testing = AgentInstrumentationExtension.create();
17+
18+
@Test
19+
void runtimeMetricsAreEnabled() {
20+
// Force a gc to "ensure" gc metrics
21+
System.gc();
22+
23+
testing.waitAndAssertMetrics(
24+
"io.opentelemetry.runtime-telemetry-java8",
25+
metric -> metric.hasName("process.runtime.jvm.classes.loaded"),
26+
metric -> metric.hasName("process.runtime.jvm.classes.unloaded"),
27+
metric -> metric.hasName("process.runtime.jvm.classes.current_loaded"),
28+
metric -> metric.hasName("process.runtime.jvm.system.cpu.load_1m"),
29+
metric -> metric.hasName("process.runtime.jvm.system.cpu.utilization"),
30+
metric -> metric.hasName("process.runtime.jvm.cpu.utilization"),
31+
metric -> metric.hasName("process.runtime.jvm.gc.duration"),
32+
metric -> metric.hasName("process.runtime.jvm.memory.init"),
33+
metric -> metric.hasName("process.runtime.jvm.memory.usage"),
34+
metric -> metric.hasName("process.runtime.jvm.memory.committed"),
35+
metric -> metric.hasName("process.runtime.jvm.memory.limit"),
36+
metric -> metric.hasName("process.runtime.jvm.memory.usage_after_last_gc"),
37+
metric -> metric.hasName("process.runtime.jvm.threads.count"),
38+
metric -> metric.hasName("process.runtime.jvm.buffer.limit"),
39+
metric -> metric.hasName("process.runtime.jvm.buffer.count"),
40+
metric -> metric.hasName("process.runtime.jvm.buffer.usage"));
41+
}
42+
}

testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/InstrumentationExtension.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,16 @@
1818
import io.opentelemetry.sdk.OpenTelemetrySdk;
1919
import io.opentelemetry.sdk.logs.data.LogRecordData;
2020
import io.opentelemetry.sdk.metrics.data.MetricData;
21+
import io.opentelemetry.sdk.testing.assertj.MetricAssert;
22+
import io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions;
2123
import io.opentelemetry.sdk.testing.assertj.TraceAssert;
2224
import io.opentelemetry.sdk.trace.data.SpanData;
2325
import java.time.Duration;
26+
import java.util.Collection;
2427
import java.util.Comparator;
2528
import java.util.List;
2629
import java.util.function.Consumer;
30+
import java.util.stream.Collectors;
2731
import org.assertj.core.api.ListAssert;
2832
import org.junit.jupiter.api.extension.AfterAllCallback;
2933
import org.junit.jupiter.api.extension.AfterEachCallback;
@@ -76,6 +80,12 @@ public List<MetricData> metrics() {
7680
return testRunner.getExportedMetrics();
7781
}
7882

83+
private List<MetricData> instrumentationMetrics(String instrumentationName) {
84+
return metrics().stream()
85+
.filter(m -> m.getInstrumentationScopeInfo().getName().equals(instrumentationName))
86+
.collect(Collectors.toList());
87+
}
88+
7989
/** Return a list of all captured logs. */
8090
public List<LogRecordData> logRecords() {
8191
return testRunner.getExportedLogRecords();
@@ -100,6 +110,22 @@ public void waitAndAssertMetrics(
100110
&& data.getName().equals(metricName))));
101111
}
102112

113+
@SafeVarargs
114+
public final void waitAndAssertMetrics(
115+
String instrumentationName, Consumer<MetricAssert>... assertions) {
116+
await()
117+
.untilAsserted(
118+
() -> {
119+
Collection<MetricData> metrics = instrumentationMetrics(instrumentationName);
120+
assertThat(metrics).isNotEmpty();
121+
for (Consumer<MetricAssert> assertion : assertions) {
122+
assertThat(metrics)
123+
.anySatisfy(
124+
metric -> assertion.accept(OpenTelemetryAssertions.assertThat(metric)));
125+
}
126+
});
127+
}
128+
103129
/**
104130
* Removes all captured telemetry data. After calling this method {@link #spans()} and {@link
105131
* #metrics()} will return empty lists until more telemetry data is captured.

0 commit comments

Comments
 (0)