Skip to content

Commit 5a82c35

Browse files
committed
Revert "improve assertions by showing the last result on a timeout"
This reverts commit 2cf304e.
1 parent c927ceb commit 5a82c35

File tree

3 files changed

+47
-75
lines changed

3 files changed

+47
-75
lines changed

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

+41-27
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
package io.opentelemetry.instrumentation.testing;
77

88
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;
9+
import static org.awaitility.Awaitility.await;
910

1011
import io.opentelemetry.api.OpenTelemetry;
11-
import io.opentelemetry.instrumentation.testing.internal.AwaitUtil;
1212
import io.opentelemetry.instrumentation.testing.util.TelemetryDataUtil;
1313
import io.opentelemetry.instrumentation.testing.util.ThrowingRunnable;
1414
import io.opentelemetry.instrumentation.testing.util.ThrowingSupplier;
@@ -29,6 +29,7 @@
2929
import java.util.stream.Collectors;
3030
import javax.annotation.Nullable;
3131
import org.assertj.core.api.ListAssert;
32+
import org.awaitility.core.ConditionTimeoutException;
3233

3334
/**
3435
* This interface defines a common set of operations for interaction with OpenTelemetry SDK and
@@ -117,8 +118,25 @@ private <T extends Consumer<TraceAssert>> void waitAndAssertTraces(
117118
List<T> assertionsList = new ArrayList<>();
118119
assertions.forEach(assertionsList::add);
119120

120-
AwaitUtil.awaitUntilAsserted(
121-
() -> doAssertTraces(traceComparator, assertionsList, verifyScopeVersion));
121+
try {
122+
await()
123+
.untilAsserted(() -> doAssertTraces(traceComparator, assertionsList, verifyScopeVersion));
124+
} catch (Throwable t) {
125+
// awaitility is doing a jmx call that is not implemented in GraalVM:
126+
// call:
127+
// https://github.com/awaitility/awaitility/blob/fbe16add874b4260dd240108304d5c0be84eabc8/awaitility/src/main/java/org/awaitility/core/ConditionAwaiter.java#L157
128+
// see https://github.com/oracle/graal/issues/6101 (spring boot graal native image)
129+
if (t.getClass().getName().equals("com.oracle.svm.core.jdk.UnsupportedFeatureError")
130+
|| t instanceof ConditionTimeoutException) {
131+
// Don't throw this failure since the stack is the awaitility thread, causing confusion.
132+
// Instead, just assert one more time on the test thread, which will fail with a better
133+
// stack trace.
134+
// TODO: There is probably a better way to do this.
135+
doAssertTraces(traceComparator, assertionsList, verifyScopeVersion);
136+
} else {
137+
throw t;
138+
}
139+
}
122140
}
123141

124142
private <T extends Consumer<TraceAssert>> void doAssertTraces(
@@ -141,35 +159,31 @@ private <T extends Consumer<TraceAssert>> void doAssertTraces(
141159
*/
142160
public final void waitAndAssertMetrics(
143161
String instrumentationName, String metricName, Consumer<ListAssert<MetricData>> assertion) {
144-
145-
AwaitUtil.awaitUntilAsserted(
146-
() ->
147-
assertion.accept(
148-
assertThat(getExportedMetrics())
149-
.describedAs(
150-
"Metrics for instrumentation %s and metric name %s",
151-
instrumentationName, metricName)
152-
.filteredOn(
153-
data ->
154-
data.getInstrumentationScopeInfo().getName().equals(instrumentationName)
155-
&& data.getName().equals(metricName))));
162+
await()
163+
.untilAsserted(
164+
() ->
165+
assertion.accept(
166+
assertThat(getExportedMetrics())
167+
.filteredOn(
168+
data ->
169+
data.getInstrumentationScopeInfo()
170+
.getName()
171+
.equals(instrumentationName)
172+
&& data.getName().equals(metricName))));
156173
}
157174

158175
@SafeVarargs
159176
public final void waitAndAssertMetrics(
160177
String instrumentationName, Consumer<MetricAssert>... assertions) {
161-
AwaitUtil.awaitUntilAsserted(
162-
() -> {
163-
Collection<MetricData> metrics = instrumentationMetrics(instrumentationName);
164-
assertThat(metrics).isNotEmpty();
165-
for (int i = 0; i < assertions.length; i++) {
166-
int index = i;
167-
assertThat(metrics)
168-
.describedAs(
169-
"Metrics for instrumentation %s and assertion %d", instrumentationName, index)
170-
.anySatisfy(metric -> assertions[index].accept(assertThat(metric)));
171-
}
172-
});
178+
await()
179+
.untilAsserted(
180+
() -> {
181+
Collection<MetricData> metrics = instrumentationMetrics(instrumentationName);
182+
assertThat(metrics).isNotEmpty();
183+
for (Consumer<MetricAssert> assertion : assertions) {
184+
assertThat(metrics).anySatisfy(metric -> assertion.accept(assertThat(metric)));
185+
}
186+
});
173187
}
174188

175189
private List<MetricData> instrumentationMetrics(String instrumentationName) {

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

+6-4
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import io.opentelemetry.context.ContextStorage;
1313
import io.opentelemetry.instrumentation.testing.InstrumentationTestRunner;
1414
import io.opentelemetry.instrumentation.testing.LibraryTestRunner;
15-
import io.opentelemetry.instrumentation.testing.internal.AwaitUtil;
1615
import io.opentelemetry.instrumentation.testing.util.ContextStorageCloser;
1716
import io.opentelemetry.instrumentation.testing.util.ThrowingRunnable;
1817
import io.opentelemetry.instrumentation.testing.util.ThrowingSupplier;
@@ -126,9 +125,12 @@ public List<List<SpanData>> waitForTraces(int numberOfTraces) {
126125
* This waits up to 20 seconds, then times out.
127126
*/
128127
public List<LogRecordData> waitForLogRecords(int numberOfLogRecords) {
129-
AwaitUtil.awaitUntilAsserted(
130-
() -> assertThat(testRunner.getExportedLogRecords().size()).isEqualTo(numberOfLogRecords),
131-
await().timeout(Duration.ofSeconds(20)));
128+
await()
129+
.timeout(Duration.ofSeconds(20))
130+
.untilAsserted(
131+
() ->
132+
assertThat(testRunner.getExportedLogRecords().size())
133+
.isEqualTo(numberOfLogRecords));
132134
return testRunner.getExportedLogRecords();
133135
}
134136

0 commit comments

Comments
 (0)