Skip to content

Commit 20d3858

Browse files
committed
fix: add sleep. Add service name
1 parent 232aeb8 commit 20d3858

File tree

2 files changed

+32
-22
lines changed

2 files changed

+32
-22
lines changed

sdk-platform-java/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITOtelGoldenMetrics.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -99,11 +99,12 @@ void testMetrics_successfulEcho_grpc() throws Exception {
9999
try (EchoClient client =
100100
TestClientInitializer.createGrpcEchoClientOpentelemetry(tracerFactory)) {
101101

102-
EchoResponse echo = client.echo(EchoRequest.newBuilder().setContent("metrics-test").build());
103-
System.out.println(echo.getContent());
104-
System.out.println("in test:" + Thread.currentThread().getName());
102+
client.echo(EchoRequest.newBuilder().setContent("metrics-test").build());
105103

106-
// Slight delay to ensure the background callback completes its OpenTelemetry recording.
104+
// The end of an operation is tracked in a separate thread.
105+
// Add a small sleep to make sure the tracking is completed.
106+
// This is implemented by adding a TraceFinisher to ApiFuture as a callback in TracedUnaryCallable,
107+
// which could be executed in a different thread.
107108
Thread.sleep(100);
108109
Collection<MetricData> metrics = metricReader.collectAllMetrics();
109110
assertThat(metrics).isNotEmpty();
@@ -186,6 +187,7 @@ public void sendMessage(ReqT message) {}
186187
UnavailableException.class,
187188
() -> client.echo(EchoRequest.newBuilder().setContent("metrics-test").build()));
188189

190+
Thread.sleep(100);
189191
Collection<MetricData> metrics = metricReader.collectAllMetrics();
190192
assertThat(metrics).isNotEmpty();
191193

@@ -217,6 +219,7 @@ void testMetrics_successfulEcho_httpjson() throws Exception {
217219

218220
client.echo(EchoRequest.newBuilder().setContent("metrics-test").build());
219221

222+
Thread.sleep(100);
220223
Collection<MetricData> metrics = metricReader.collectAllMetrics();
221224
assertThat(metrics).isNotEmpty();
222225

@@ -228,8 +231,6 @@ void testMetrics_successfulEcho_httpjson() throws Exception {
228231

229232
assertThat(durationMetric.getInstrumentationScopeInfo().getName())
230233
.isEqualTo(SHOWCASE_ARTIFACT);
231-
assertThat(durationMetric.getInstrumentationScopeInfo().getVersion())
232-
.isEqualTo(com.google.api.gax.core.GaxProperties.getLibraryVersion(EchoClient.class));
233234

234235
io.opentelemetry.api.common.Attributes attributes =
235236
durationMetric.getHistogramData().getPoints().iterator().next().getAttributes();
@@ -354,6 +355,7 @@ public String getHeaderValue(int index) {
354355
UnavailableException.class,
355356
() -> client.echo(EchoRequest.newBuilder().setContent("metrics-test").build()));
356357

358+
Thread.sleep(100);
357359
Collection<MetricData> metrics = metricReader.collectAllMetrics();
358360
assertThat(metrics).isNotEmpty();
359361

sdk-platform-java/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/util/TestClientInitializer.java

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@
3838
import com.google.showcase.v1beta1.stub.EchoStubSettings;
3939
import io.grpc.ClientInterceptor;
4040
import io.grpc.ManagedChannelBuilder;
41+
42+
import java.io.IOException;
4143
import java.util.List;
4244
import java.util.Set;
4345

@@ -307,14 +309,7 @@ public static EchoClient createGrpcEchoClientOpentelemetry(
307309
.setEndpoint(DEFAULT_GRPC_ENDPOINT)
308310
.build();
309311

310-
EchoStubSettings echoStubSettings =
311-
(EchoStubSettings)
312-
grpcEchoSettings.getStubSettings().toBuilder()
313-
.setTracerFactory(metricsTracerFactory)
314-
.build();
315-
EchoStub stub = echoStubSettings.createStub();
316-
317-
return EchoClient.create(stub);
312+
return EchoClient.create(createStubWithServiceName(grpcEchoSettings, metricsTracerFactory));
318313
}
319314

320315
public static EchoClient createHttpJsonEchoClientOpentelemetry(
@@ -331,14 +326,7 @@ public static EchoClient createHttpJsonEchoClientOpentelemetry(
331326
.build())
332327
.build();
333328

334-
EchoStubSettings echoStubSettings =
335-
(EchoStubSettings)
336-
httpJsonEchoSettings.getStubSettings().toBuilder()
337-
.setTracerFactory(metricsTracerFactory)
338-
.build();
339-
EchoStub stub = echoStubSettings.createStub();
340-
341-
return EchoClient.create(stub);
329+
return EchoClient.create(createStubWithServiceName(httpJsonEchoSettings, metricsTracerFactory));
342330
}
343331

344332
public static IdentityClient createGrpcIdentityClientOpentelemetry(ApiTracerFactory tracerFactory)
@@ -381,4 +369,24 @@ public static IdentityClient createHttpJsonIdentityClientOpentelemetry(
381369
.build();
382370
return IdentityClient.create(identityStubSettings.createStub());
383371
}
372+
373+
private static EchoStub createStubWithServiceName(
374+
EchoSettings settings, ApiTracerFactory tracingFactory) throws IOException {
375+
EchoStubSettings.Builder builder =
376+
(EchoStubSettings.Builder) settings.getStubSettings().toBuilder();
377+
builder.setTracerFactory(tracingFactory);
378+
return new ExtendedEchoStubSettings(builder).createStub();
379+
}
380+
381+
/** Custom wrapper to set a service name for showcase clients, which lack one by default. */
382+
private static class ExtendedEchoStubSettings extends EchoStubSettings {
383+
protected ExtendedEchoStubSettings(EchoStubSettings.Builder builder) throws IOException {
384+
super(builder);
385+
}
386+
387+
@Override
388+
public String getServiceName() {
389+
return "showcase";
390+
}
391+
}
384392
}

0 commit comments

Comments
 (0)