|
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