|
39 | 39 | import com.google.cloud.spanner.connection.ConnectionOptions;
|
40 | 40 | import com.google.cloud.trace.v1.TraceServiceClient;
|
41 | 41 | import com.google.cloud.trace.v1.TraceServiceSettings;
|
42 |
| -import com.google.devtools.cloudtrace.v1.Trace; |
| 42 | +import com.google.common.base.Stopwatch; |
43 | 43 | import io.opentelemetry.api.trace.Span;
|
44 | 44 | import io.opentelemetry.api.trace.Tracer;
|
45 | 45 | import io.opentelemetry.context.Scope;
|
46 | 46 | import java.io.IOException;
|
47 | 47 | import java.util.Arrays;
|
48 | 48 | import java.util.Collection;
|
| 49 | +import java.util.concurrent.TimeUnit; |
49 | 50 | import org.junit.AfterClass;
|
50 | 51 | import org.junit.BeforeClass;
|
51 | 52 | import org.junit.ClassRule;
|
@@ -96,23 +97,21 @@ private void assertTrace(String traceId) throws IOException, InterruptedExceptio
|
96 | 97 | env.getTestHelper().getOptions().getCredentials()))
|
97 | 98 | .build();
|
98 | 99 | try (TraceServiceClient client = TraceServiceClient.create(settings)) {
|
99 |
| - // It can take a few seconds before the trace is visible. |
100 |
| - Thread.sleep(10000); |
101 | 100 | boolean foundTrace = false;
|
102 |
| - for (int attempts = 0; attempts < 2; attempts++) { |
| 101 | + Stopwatch metricsPollingStopwatch = Stopwatch.createStarted(); |
| 102 | + while (!foundTrace && metricsPollingStopwatch.elapsed(TimeUnit.SECONDS) < 30) { |
| 103 | + // Try every 5 seconds |
| 104 | + Thread.sleep(5000); |
103 | 105 | try {
|
104 |
| - Trace trace = client.getTrace(env.getTestHelper().getInstanceId().getProject(), traceId); |
105 |
| - // Assert Spanner Frontend Trace is present |
106 |
| - assertTrue( |
107 |
| - trace.getSpansList().stream() |
108 |
| - .anyMatch(span -> "Spanner.ExecuteStreamingSql".equals(span.getName()))); |
109 |
| - foundTrace = true; |
110 |
| - break; |
| 106 | + foundTrace = |
| 107 | + client.getTrace(env.getTestHelper().getInstanceId().getProject(), traceId) |
| 108 | + .getSpansList().stream() |
| 109 | + .anyMatch(span -> "Spanner.ExecuteStreamingSql".equals(span.getName())); |
111 | 110 | } catch (ApiException apiException) {
|
112 | 111 | assumeTrue(
|
113 | 112 | apiException.getStatusCode() != null
|
114 | 113 | && StatusCode.Code.NOT_FOUND.equals(apiException.getStatusCode().getCode()));
|
115 |
| - Thread.sleep(5000L); |
| 114 | + System.out.println("Trace NOT_FOUND error ignored"); |
116 | 115 | }
|
117 | 116 | }
|
118 | 117 | assertTrue(foundTrace);
|
|
0 commit comments