Skip to content

Commit b19f64b

Browse files
committed
cleanup
1 parent d8708df commit b19f64b

File tree

3 files changed

+37
-52
lines changed

3 files changed

+37
-52
lines changed

testing-common/src/main/java/io/opentelemetry/instrumentation/testing/InstrumentationTestRunner.java

+36-1
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55

66
package io.opentelemetry.instrumentation.testing;
77

8-
import static io.opentelemetry.instrumentation.testing.internal.AwaitUtil.awaitUntilAsserted;
98
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;
9+
import static org.awaitility.Awaitility.await;
1010

1111
import io.opentelemetry.api.OpenTelemetry;
1212
import io.opentelemetry.instrumentation.testing.util.TelemetryDataUtil;
@@ -18,6 +18,7 @@
1818
import io.opentelemetry.sdk.testing.assertj.TraceAssert;
1919
import io.opentelemetry.sdk.testing.assertj.TracesAssert;
2020
import io.opentelemetry.sdk.trace.data.SpanData;
21+
import java.time.Duration;
2122
import java.util.ArrayList;
2223
import java.util.Arrays;
2324
import java.util.Collection;
@@ -29,6 +30,8 @@
2930
import java.util.stream.Collectors;
3031
import javax.annotation.Nullable;
3132
import org.assertj.core.api.ListAssert;
33+
import org.awaitility.core.ConditionFactory;
34+
import org.awaitility.core.ConditionTimeoutException;
3235

3336
/**
3437
* This interface defines a common set of operations for interaction with OpenTelemetry SDK and
@@ -171,6 +174,13 @@ public final void waitAndAssertMetrics(
171174
});
172175
}
173176

177+
public final List<LogRecordData> waitForLogRecords(int numberOfLogRecords) {
178+
awaitUntilAsserted(
179+
() -> assertThat(getExportedLogRecords().size()).isEqualTo(numberOfLogRecords),
180+
await().timeout(Duration.ofSeconds(20)));
181+
return getExportedLogRecords();
182+
}
183+
174184
private List<MetricData> instrumentationMetrics(String instrumentationName) {
175185
return getExportedMetrics().stream()
176186
.filter(m -> m.getInstrumentationScopeInfo().getName().equals(instrumentationName))
@@ -250,4 +260,29 @@ public final <T, E extends Throwable> T runWithNonRecordingSpan(ThrowingSupplier
250260
throws E {
251261
return testInstrumenters.runWithNonRecordingSpan(callback);
252262
}
263+
264+
private static void awaitUntilAsserted(Runnable runnable) {
265+
awaitUntilAsserted(runnable, await());
266+
}
267+
268+
private static void awaitUntilAsserted(Runnable runnable, ConditionFactory conditionFactory) {
269+
try {
270+
conditionFactory.untilAsserted(runnable::run);
271+
} catch (Throwable t) {
272+
// awaitility is doing a jmx call that is not implemented in GraalVM:
273+
// call:
274+
// https://github.com/awaitility/awaitility/blob/fbe16add874b4260dd240108304d5c0be84eabc8/awaitility/src/main/java/org/awaitility/core/ConditionAwaiter.java#L157
275+
// see https://github.com/oracle/graal/issues/6101 (spring boot graal native image)
276+
if (t.getClass().getName().equals("com.oracle.svm.core.jdk.UnsupportedFeatureError")
277+
|| t instanceof ConditionTimeoutException) {
278+
// Don't throw this failure since the stack is the awaitility thread, causing confusion.
279+
// Instead, just assert one more time on the test thread, which will fail with a better
280+
// stack trace - that is on the same thread as the test.
281+
// TODO: There is probably a better way to do this.
282+
runnable.run();
283+
} else {
284+
throw t;
285+
}
286+
}
287+
}
253288
}

testing-common/src/main/java/io/opentelemetry/instrumentation/testing/internal/AwaitUtil.java

-44
This file was deleted.

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

+1-7
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@
55

66
package io.opentelemetry.instrumentation.testing.junit;
77

8-
import static io.opentelemetry.instrumentation.testing.internal.AwaitUtil.awaitUntilAsserted;
98
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;
10-
import static org.awaitility.Awaitility.await;
119

1210
import io.opentelemetry.api.OpenTelemetry;
1311
import io.opentelemetry.context.ContextStorage;
@@ -23,7 +21,6 @@
2321
import io.opentelemetry.sdk.testing.assertj.MetricAssert;
2422
import io.opentelemetry.sdk.testing.assertj.TraceAssert;
2523
import io.opentelemetry.sdk.trace.data.SpanData;
26-
import java.time.Duration;
2724
import java.util.ArrayList;
2825
import java.util.Arrays;
2926
import java.util.Comparator;
@@ -126,10 +123,7 @@ public List<List<SpanData>> waitForTraces(int numberOfTraces) {
126123
* This waits up to 20 seconds, then times out.
127124
*/
128125
public List<LogRecordData> waitForLogRecords(int numberOfLogRecords) {
129-
awaitUntilAsserted(
130-
() -> assertThat(testRunner.getExportedLogRecords().size()).isEqualTo(numberOfLogRecords),
131-
await().timeout(Duration.ofSeconds(20)));
132-
return testRunner.getExportedLogRecords();
126+
return testRunner.waitForLogRecords(numberOfLogRecords);
133127
}
134128

135129
@SafeVarargs

0 commit comments

Comments
 (0)