From 30fc14e247ba64f034488eded40d985f5517a30c Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Tue, 16 May 2023 09:42:07 +0300 Subject: [PATCH] Fix JFR lock wait test (#8494) --- .../runtimemetrics/java17/JfrCpuLockTest.java | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/instrumentation/runtime-metrics/runtime-metrics-java17/library/src/test/java/io/opentelemetry/instrumentation/runtimemetrics/java17/JfrCpuLockTest.java b/instrumentation/runtime-metrics/runtime-metrics-java17/library/src/test/java/io/opentelemetry/instrumentation/runtimemetrics/java17/JfrCpuLockTest.java index a8bc539f90..0e10b500d7 100644 --- a/instrumentation/runtime-metrics/runtime-metrics-java17/library/src/test/java/io/opentelemetry/instrumentation/runtimemetrics/java17/JfrCpuLockTest.java +++ b/instrumentation/runtime-metrics/runtime-metrics-java17/library/src/test/java/io/opentelemetry/instrumentation/runtimemetrics/java17/JfrCpuLockTest.java @@ -6,7 +6,10 @@ package io.opentelemetry.instrumentation.runtimemetrics.java17; import static io.opentelemetry.instrumentation.runtimemetrics.java17.internal.Constants.MILLISECONDS; +import static org.assertj.core.api.Assertions.assertThat; +import java.time.Duration; +import java.util.concurrent.atomic.AtomicBoolean; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -19,12 +22,31 @@ class JfrCpuLockTest { @Test void shouldHaveLockEvents() throws Exception { - // This should generate some events - System.gc(); - synchronized (this) { - Thread.sleep(1000); + AtomicBoolean done = new AtomicBoolean(false); + synchronized (done) { + new Thread( + () -> { + try { + Thread.sleep(1000); + } catch (InterruptedException exception) { + Thread.currentThread().interrupt(); + } + synchronized (done) { + done.set(true); + done.notifyAll(); + } + }) + .start(); + long waitTime = Duration.ofSeconds(10).toMillis(); + long endTime = System.currentTimeMillis() + Duration.ofSeconds(10).toMillis(); + while (!done.get() && waitTime > 0) { + done.wait(waitTime); + waitTime = endTime - System.currentTimeMillis(); + } } + assertThat(done.get()).isEqualTo(true); + jfrExtension.waitAndAssertMetrics( metric -> metric