From c070dc8dea44ab4a64e868346e0f5bac6b32c9c8 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Wed, 11 Dec 2024 15:03:45 +0200 Subject: [PATCH] Fix jfr tests on openj9 (#12876) --- .../runtimemetrics/java17/JfrRuntimeMetricsTest.java | 4 +++- .../runtimemetrics/java17/RuntimeMetrics.java | 10 ++++++---- .../runtimemetrics/java17/JfrExtension.java | 4 +++- .../java17/RuntimeMetricsBuilderTest.java | 4 +++- .../runtimemetrics/java17/RuntimeMetricsTest.java | 4 +++- 5 files changed, 18 insertions(+), 8 deletions(-) diff --git a/instrumentation/runtime-telemetry/runtime-telemetry-java17/javaagent/src/test/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java17/JfrRuntimeMetricsTest.java b/instrumentation/runtime-telemetry/runtime-telemetry-java17/javaagent/src/test/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java17/JfrRuntimeMetricsTest.java index 8f36953986..2e5daaf79f 100644 --- a/instrumentation/runtime-telemetry/runtime-telemetry-java17/javaagent/src/test/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java17/JfrRuntimeMetricsTest.java +++ b/instrumentation/runtime-telemetry/runtime-telemetry-java17/javaagent/src/test/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java17/JfrRuntimeMetricsTest.java @@ -7,6 +7,7 @@ package io.opentelemetry.instrumentation.javaagent.runtimemetrics.java17; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import jdk.jfr.FlightRecorder; import org.junit.jupiter.api.Assumptions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -20,10 +21,11 @@ class JfrRuntimeMetricsTest { @BeforeAll static void setUp() { try { - Class.forName("jdk.jfr.consumer.RecordingStream"); + Class.forName("jdk.jfr.FlightRecorder"); } catch (ClassNotFoundException exception) { Assumptions.abort("JFR not present"); } + Assumptions.assumeTrue(FlightRecorder.isAvailable(), "JFR not available"); } @Test diff --git a/instrumentation/runtime-telemetry/runtime-telemetry-java17/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/java17/RuntimeMetrics.java b/instrumentation/runtime-telemetry/runtime-telemetry-java17/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/java17/RuntimeMetrics.java index ef69098cdf..96a98b7fcd 100644 --- a/instrumentation/runtime-telemetry/runtime-telemetry-java17/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/java17/RuntimeMetrics.java +++ b/instrumentation/runtime-telemetry/runtime-telemetry-java17/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/java17/RuntimeMetrics.java @@ -17,6 +17,7 @@ import java.util.logging.Level; import java.util.logging.Logger; import javax.annotation.Nullable; import jdk.jfr.EventSettings; +import jdk.jfr.FlightRecorder; import jdk.jfr.consumer.RecordingStream; /** The entry point class for runtime metrics support using JFR and JMX. */ @@ -107,7 +108,7 @@ public final class RuntimeMetrics implements Closeable { static JfrRuntimeMetrics build( OpenTelemetry openTelemetry, Predicate featurePredicate) { - if (!hasJfrRecordingStream()) { + if (!isJfrAvailable()) { return null; } return new JfrRuntimeMetrics(openTelemetry, featurePredicate); @@ -134,13 +135,14 @@ public final class RuntimeMetrics implements Closeable { return startUpLatch; } - private static boolean hasJfrRecordingStream() { + private static boolean isJfrAvailable() { try { - Class.forName("jdk.jfr.consumer.RecordingStream"); - return true; + Class.forName("jdk.jfr.FlightRecorder"); } catch (ClassNotFoundException e) { return false; } + + return FlightRecorder.isAvailable(); } } } diff --git a/instrumentation/runtime-telemetry/runtime-telemetry-java17/library/src/test/java/io/opentelemetry/instrumentation/runtimemetrics/java17/JfrExtension.java b/instrumentation/runtime-telemetry/runtime-telemetry-java17/library/src/test/java/io/opentelemetry/instrumentation/runtimemetrics/java17/JfrExtension.java index 62609b2a3f..2125a02585 100644 --- a/instrumentation/runtime-telemetry/runtime-telemetry-java17/library/src/test/java/io/opentelemetry/instrumentation/runtimemetrics/java17/JfrExtension.java +++ b/instrumentation/runtime-telemetry/runtime-telemetry-java17/library/src/test/java/io/opentelemetry/instrumentation/runtimemetrics/java17/JfrExtension.java @@ -16,6 +16,7 @@ import io.opentelemetry.sdk.testing.exporter.InMemoryMetricReader; import java.util.Collection; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; +import jdk.jfr.FlightRecorder; import org.junit.jupiter.api.Assumptions; import org.junit.jupiter.api.extension.AfterEachCallback; import org.junit.jupiter.api.extension.BeforeEachCallback; @@ -36,10 +37,11 @@ public class JfrExtension implements BeforeEachCallback, AfterEachCallback { @Override public void beforeEach(ExtensionContext context) throws InterruptedException { try { - Class.forName("jdk.jfr.consumer.RecordingStream"); + Class.forName("jdk.jfr.FlightRecorder"); } catch (ClassNotFoundException exception) { Assumptions.abort("JFR not present"); } + Assumptions.assumeTrue(FlightRecorder.isAvailable(), "JFR not available"); metricReader = InMemoryMetricReader.create(); meterProvider = SdkMeterProvider.builder().registerMetricReader(metricReader).build(); diff --git a/instrumentation/runtime-telemetry/runtime-telemetry-java17/library/src/test/java/io/opentelemetry/instrumentation/runtimemetrics/java17/RuntimeMetricsBuilderTest.java b/instrumentation/runtime-telemetry/runtime-telemetry-java17/library/src/test/java/io/opentelemetry/instrumentation/runtimemetrics/java17/RuntimeMetricsBuilderTest.java index 0eca3a1673..78f88af3f4 100644 --- a/instrumentation/runtime-telemetry/runtime-telemetry-java17/library/src/test/java/io/opentelemetry/instrumentation/runtimemetrics/java17/RuntimeMetricsBuilderTest.java +++ b/instrumentation/runtime-telemetry/runtime-telemetry-java17/library/src/test/java/io/opentelemetry/instrumentation/runtimemetrics/java17/RuntimeMetricsBuilderTest.java @@ -10,6 +10,7 @@ import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.OpenTelemetry; import java.util.Arrays; import java.util.HashMap; +import jdk.jfr.FlightRecorder; import org.junit.jupiter.api.Assumptions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -19,10 +20,11 @@ class RuntimeMetricsBuilderTest { @BeforeAll static void setup() { try { - Class.forName("jdk.jfr.consumer.RecordingStream"); + Class.forName("jdk.jfr.FlightRecorder"); } catch (ClassNotFoundException exception) { Assumptions.abort("JFR not present"); } + Assumptions.assumeTrue(FlightRecorder.isAvailable(), "JFR not available"); } @Test diff --git a/instrumentation/runtime-telemetry/runtime-telemetry-java17/library/src/test/java/io/opentelemetry/instrumentation/runtimemetrics/java17/RuntimeMetricsTest.java b/instrumentation/runtime-telemetry/runtime-telemetry-java17/library/src/test/java/io/opentelemetry/instrumentation/runtimemetrics/java17/RuntimeMetricsTest.java index 0e41e8a82d..15b178abf8 100644 --- a/instrumentation/runtime-telemetry/runtime-telemetry-java17/library/src/test/java/io/opentelemetry/instrumentation/runtimemetrics/java17/RuntimeMetricsTest.java +++ b/instrumentation/runtime-telemetry/runtime-telemetry-java17/library/src/test/java/io/opentelemetry/instrumentation/runtimemetrics/java17/RuntimeMetricsTest.java @@ -12,6 +12,7 @@ import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.metrics.SdkMeterProvider; import io.opentelemetry.sdk.testing.exporter.InMemoryMetricReader; import java.util.concurrent.atomic.AtomicBoolean; +import jdk.jfr.FlightRecorder; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assumptions; import org.junit.jupiter.api.BeforeEach; @@ -28,10 +29,11 @@ class RuntimeMetricsTest { @BeforeEach void setup() { try { - Class.forName("jdk.jfr.consumer.RecordingStream"); + Class.forName("jdk.jfr.FlightRecorder"); } catch (ClassNotFoundException exception) { Assumptions.abort("JFR not present"); } + Assumptions.assumeTrue(FlightRecorder.isAvailable(), "JFR not available"); reader = InMemoryMetricReader.createDelta(); sdk =