Skip to content

Commit 52e041a

Browse files
authored
tests: Update showcase test to include service name in resource extraction (#12665)
This PR updates showcase test to include service name in resource name extraction.
1 parent 2605115 commit 52e041a

File tree

3 files changed

+91
-29
lines changed

3 files changed

+91
-29
lines changed

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

Lines changed: 34 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -35,25 +35,22 @@
3535

3636
import com.google.api.client.http.HttpTransport;
3737
import com.google.api.gax.core.NoCredentialsProvider;
38-
import com.google.api.gax.rpc.StatusCode;
3938
import com.google.api.gax.rpc.TransportChannelProvider;
4039
import com.google.api.gax.rpc.UnavailableException;
4140
import com.google.api.gax.tracing.GoldenSignalsMetricsTracerFactory;
4241
import com.google.api.gax.tracing.ObservabilityAttributes;
4342
import com.google.common.collect.ImmutableList;
44-
import com.google.rpc.Status;
4543
import com.google.showcase.v1beta1.EchoClient;
4644
import com.google.showcase.v1beta1.EchoRequest;
47-
import com.google.showcase.v1beta1.EchoResponse;
4845
import com.google.showcase.v1beta1.EchoSettings;
4946
import com.google.showcase.v1beta1.it.util.TestClientInitializer;
5047
import com.google.showcase.v1beta1.stub.EchoStubSettings;
5148
import io.grpc.CallOptions;
5249
import io.grpc.Channel;
5350
import io.grpc.ClientCall;
5451
import io.grpc.ClientInterceptor;
55-
import io.grpc.MethodDescriptor;
5652
import io.grpc.Metadata;
53+
import io.grpc.MethodDescriptor;
5754
import io.opentelemetry.api.common.AttributeKey;
5855
import io.opentelemetry.sdk.OpenTelemetrySdk;
5956
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
@@ -103,7 +100,8 @@ void testMetrics_successfulEcho_grpc() throws Exception {
103100

104101
// The end of an operation is tracked in a separate thread.
105102
// 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,
103+
// This is implemented by adding a TraceFinisher to ApiFuture as a callback in
104+
// TracedUnaryCallable,
107105
// which could be executed in a different thread.
108106
Thread.sleep(100);
109107
Collection<MetricData> metrics = metricReader.collectAllMetrics();
@@ -122,22 +120,27 @@ void testMetrics_successfulEcho_grpc() throws Exception {
122120
durationMetric.getHistogramData().getPoints().iterator().next().getAttributes();
123121

124122
assertThat(
125-
attributes.get(AttributeKey.stringKey(ObservabilityAttributes.SERVER_ADDRESS_ATTRIBUTE)))
123+
attributes.get(
124+
AttributeKey.stringKey(ObservabilityAttributes.SERVER_ADDRESS_ATTRIBUTE)))
126125
.isEqualTo(SHOWCASE_SERVER_ADDRESS);
127126
assertThat(
128127
attributes.get(AttributeKey.longKey(ObservabilityAttributes.SERVER_PORT_ATTRIBUTE)))
129128
.isEqualTo(SHOWCASE_SERVER_PORT);
130129
assertThat(
131-
attributes.get(AttributeKey.stringKey(ObservabilityAttributes.RPC_SYSTEM_NAME_ATTRIBUTE)))
130+
attributes.get(
131+
AttributeKey.stringKey(ObservabilityAttributes.RPC_SYSTEM_NAME_ATTRIBUTE)))
132132
.isEqualTo("grpc");
133133
assertThat(
134-
attributes.get(AttributeKey.stringKey(ObservabilityAttributes.GCP_CLIENT_SERVICE_ATTRIBUTE)))
134+
attributes.get(
135+
AttributeKey.stringKey(ObservabilityAttributes.GCP_CLIENT_SERVICE_ATTRIBUTE)))
135136
.isEqualTo("showcase");
136137
assertThat(
137-
attributes.get(AttributeKey.stringKey(ObservabilityAttributes.GRPC_RPC_METHOD_ATTRIBUTE)))
138+
attributes.get(
139+
AttributeKey.stringKey(ObservabilityAttributes.GRPC_RPC_METHOD_ATTRIBUTE)))
138140
.isEqualTo("google.showcase.v1beta1.Echo/Echo");
139141
assertThat(
140-
attributes.get(AttributeKey.stringKey(ObservabilityAttributes.RPC_RESPONSE_STATUS_ATTRIBUTE)))
142+
attributes.get(
143+
AttributeKey.stringKey(ObservabilityAttributes.RPC_RESPONSE_STATUS_ATTRIBUTE)))
141144
.isEqualTo("OK");
142145
}
143146
}
@@ -201,7 +204,8 @@ public void sendMessage(ReqT message) {}
201204
durationMetric.getHistogramData().getPoints().iterator().next().getAttributes();
202205

203206
assertThat(
204-
attributes.get(AttributeKey.stringKey(ObservabilityAttributes.RPC_RESPONSE_STATUS_ATTRIBUTE)))
207+
attributes.get(
208+
AttributeKey.stringKey(ObservabilityAttributes.RPC_RESPONSE_STATUS_ATTRIBUTE)))
205209
.isEqualTo("UNAVAILABLE");
206210
assertThat(
207211
attributes.get(AttributeKey.stringKey(ObservabilityAttributes.ERROR_TYPE_ATTRIBUTE)))
@@ -236,29 +240,36 @@ void testMetrics_successfulEcho_httpjson() throws Exception {
236240
durationMetric.getHistogramData().getPoints().iterator().next().getAttributes();
237241

238242
assertThat(
239-
attributes.get(AttributeKey.stringKey(ObservabilityAttributes.SERVER_ADDRESS_ATTRIBUTE)))
243+
attributes.get(
244+
AttributeKey.stringKey(ObservabilityAttributes.SERVER_ADDRESS_ATTRIBUTE)))
240245
.isEqualTo(SHOWCASE_SERVER_ADDRESS);
241246
assertThat(
242247
attributes.get(AttributeKey.longKey(ObservabilityAttributes.SERVER_PORT_ATTRIBUTE)))
243248
.isEqualTo(SHOWCASE_SERVER_PORT);
244249
assertThat(
245-
attributes.get(AttributeKey.stringKey(ObservabilityAttributes.RPC_SYSTEM_NAME_ATTRIBUTE)))
250+
attributes.get(
251+
AttributeKey.stringKey(ObservabilityAttributes.RPC_SYSTEM_NAME_ATTRIBUTE)))
246252
.isEqualTo("http");
247253
assertThat(
248-
attributes.get(AttributeKey.stringKey(ObservabilityAttributes.GCP_CLIENT_SERVICE_ATTRIBUTE)))
254+
attributes.get(
255+
AttributeKey.stringKey(ObservabilityAttributes.GCP_CLIENT_SERVICE_ATTRIBUTE)))
249256
.isEqualTo("showcase");
250257
assertThat(
251-
attributes.get(AttributeKey.stringKey(ObservabilityAttributes.RPC_RESPONSE_STATUS_ATTRIBUTE)))
258+
attributes.get(
259+
AttributeKey.stringKey(ObservabilityAttributes.RPC_RESPONSE_STATUS_ATTRIBUTE)))
252260
.isEqualTo("OK");
253261
assertThat(
254-
attributes.get(AttributeKey.longKey(ObservabilityAttributes.HTTP_RESPONSE_STATUS_ATTRIBUTE)))
262+
attributes.get(
263+
AttributeKey.longKey(ObservabilityAttributes.HTTP_RESPONSE_STATUS_ATTRIBUTE)))
255264
.isEqualTo(200L);
256265
assertThat(
257-
attributes.get(AttributeKey.stringKey(ObservabilityAttributes.URL_TEMPLATE_ATTRIBUTE)))
266+
attributes.get(
267+
AttributeKey.stringKey(ObservabilityAttributes.URL_TEMPLATE_ATTRIBUTE)))
258268
.isEqualTo("v1beta1/echo:echo");
259269
assertThat(
260-
attributes.get(AttributeKey.stringKey(ObservabilityAttributes.GRPC_RPC_METHOD_ATTRIBUTE)))
261-
.isEqualTo("google.showcase.v1beta1.Echo/Echo");
270+
attributes.get(
271+
AttributeKey.stringKey(ObservabilityAttributes.GRPC_RPC_METHOD_ATTRIBUTE)))
272+
.isEqualTo("google.showcase.v1beta1.Echo/Echo");
262273
}
263274
}
264275

@@ -369,10 +380,12 @@ public String getHeaderValue(int index) {
369380
durationMetric.getHistogramData().getPoints().iterator().next().getAttributes();
370381

371382
assertThat(
372-
attributes.get(AttributeKey.stringKey(ObservabilityAttributes.RPC_RESPONSE_STATUS_ATTRIBUTE)))
383+
attributes.get(
384+
AttributeKey.stringKey(ObservabilityAttributes.RPC_RESPONSE_STATUS_ATTRIBUTE)))
373385
.isEqualTo("UNAVAILABLE");
374386
assertThat(
375-
attributes.get(AttributeKey.longKey(ObservabilityAttributes.HTTP_RESPONSE_STATUS_ATTRIBUTE)))
387+
attributes.get(
388+
AttributeKey.longKey(ObservabilityAttributes.HTTP_RESPONSE_STATUS_ATTRIBUTE)))
376389
.isEqualTo(503L);
377390
assertThat(
378391
attributes.get(AttributeKey.stringKey(ObservabilityAttributes.ERROR_TYPE_ATTRIBUTE)))

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

Lines changed: 55 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,12 @@
5353
import com.google.showcase.v1beta1.EchoSettings;
5454
import com.google.showcase.v1beta1.GetUserRequest;
5555
import com.google.showcase.v1beta1.IdentityClient;
56+
import com.google.showcase.v1beta1.IdentitySettings;
5657
import com.google.showcase.v1beta1.it.util.TestClientInitializer;
5758
import com.google.showcase.v1beta1.stub.EchoStub;
5859
import com.google.showcase.v1beta1.stub.EchoStubSettings;
60+
import com.google.showcase.v1beta1.stub.IdentityStub;
61+
import com.google.showcase.v1beta1.stub.IdentityStubSettings;
5962
import io.grpc.CallOptions;
6063
import io.grpc.Channel;
6164
import io.grpc.ClientCall;
@@ -115,7 +118,7 @@ class ITOtelTracing {
115118
private static final String VALUE_GRPC = "grpc";
116119
private static final String VALUE_HTTP = "http";
117120
private static final String VALUE_OK = "OK";
118-
private static final String VALUE_TEST_USER = "users/test-user";
121+
private static final String VALUE_TEST_USER = "//showcase.googleapis.com/users/test-user";
119122
private static final String VALUE_UNAVAILABLE = "UNAVAILABLE";
120123
private static final String VALUE_UNAVAILABLE_EXCEPTION = "UnavailableException";
121124
private static final String VALUE_SERVICE_UNAVAILABLE = "Service Unavailable";
@@ -316,8 +319,10 @@ private long computeExpectedHttpJsonResponseSize(Message message)
316319
void testTracing_successfulIdentityGetUser_grpc() throws Exception {
317320
SpanTracerFactory tracingFactory = new SpanTracerFactory(openTelemetrySdk);
318321

319-
try (IdentityClient client =
320-
TestClientInitializer.createGrpcIdentityClientOpentelemetry(tracingFactory)) {
322+
IdentitySettings grpcIdentitySettings = createIdentitySettings(false);
323+
IdentityStub stub = createIdentityStubWithServiceName(grpcIdentitySettings, tracingFactory);
324+
325+
try (IdentityClient client = IdentityClient.create(stub)) {
321326

322327
try {
323328
client.getUser(GetUserRequest.newBuilder().setName("users/test-user").build());
@@ -343,8 +348,10 @@ void testTracing_successfulIdentityGetUser_grpc() throws Exception {
343348
void testTracing_successfulIdentityGetUser_httpjson() throws Exception {
344349
SpanTracerFactory tracingFactory = new SpanTracerFactory(openTelemetrySdk);
345350

346-
try (IdentityClient client =
347-
TestClientInitializer.createHttpJsonIdentityClientOpentelemetry(tracingFactory)) {
351+
IdentitySettings httpJsonIdentitySettings = createIdentitySettings(true);
352+
IdentityStub stub = createIdentityStubWithServiceName(httpJsonIdentitySettings, tracingFactory);
353+
354+
try (IdentityClient client = IdentityClient.create(stub)) {
348355

349356
try {
350357
client.getUser(GetUserRequest.newBuilder().setName("users/test-user").build());
@@ -797,6 +804,37 @@ private EchoStub createStubWithServiceName(
797804
return new ExtendedEchoStubSettings(builder).createStub();
798805
}
799806

807+
private IdentityStub createIdentityStubWithServiceName(
808+
IdentitySettings settings, SpanTracerFactory tracingFactory) throws IOException {
809+
IdentityStubSettings.Builder builder =
810+
(IdentityStubSettings.Builder) settings.getStubSettings().toBuilder();
811+
builder.setTracerFactory(tracingFactory);
812+
return new ExtendedIdentityStubSettings(builder).createStub();
813+
}
814+
815+
private IdentitySettings createIdentitySettings(boolean isHttpJson) throws Exception {
816+
if (isHttpJson) {
817+
return IdentitySettings.newHttpJsonBuilder()
818+
.setCredentialsProvider(NoCredentialsProvider.create())
819+
.setTransportChannelProvider(
820+
IdentitySettings.defaultHttpJsonTransportProviderBuilder()
821+
.setHttpTransport(
822+
new NetHttpTransport.Builder().doNotValidateCertificate().build())
823+
.build())
824+
.setEndpoint(SHOWCASE_HTTPJSON_ENDPOINT)
825+
.build();
826+
} else {
827+
return IdentitySettings.newBuilder()
828+
.setCredentialsProvider(NoCredentialsProvider.create())
829+
.setTransportChannelProvider(
830+
IdentitySettings.defaultGrpcTransportProviderBuilder()
831+
.setChannelConfigurator(ManagedChannelBuilder::usePlaintext)
832+
.build())
833+
.setEndpoint(SHOWCASE_GRPC_ENDPOINT)
834+
.build();
835+
}
836+
}
837+
800838
/** Custom wrapper to set a service name for showcase clients, which lack one by default. */
801839
private static class ExtendedEchoStubSettings extends EchoStubSettings {
802840
protected ExtendedEchoStubSettings(EchoStubSettings.Builder builder) throws IOException {
@@ -808,4 +846,16 @@ public String getServiceName() {
808846
return "showcase";
809847
}
810848
}
849+
850+
private static class ExtendedIdentityStubSettings extends IdentityStubSettings {
851+
protected ExtendedIdentityStubSettings(IdentityStubSettings.Builder builder)
852+
throws IOException {
853+
super(builder);
854+
}
855+
856+
@Override
857+
public String getServiceName() {
858+
return "showcase";
859+
}
860+
}
811861
}

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
import com.google.showcase.v1beta1.stub.EchoStubSettings;
3939
import io.grpc.ClientInterceptor;
4040
import io.grpc.ManagedChannelBuilder;
41-
4241
import java.io.IOException;
4342
import java.util.List;
4443
import java.util.Set;
@@ -371,9 +370,9 @@ public static IdentityClient createHttpJsonIdentityClientOpentelemetry(
371370
}
372371

373372
private static EchoStub createStubWithServiceName(
374-
EchoSettings settings, ApiTracerFactory tracingFactory) throws IOException {
373+
EchoSettings settings, ApiTracerFactory tracingFactory) throws IOException {
375374
EchoStubSettings.Builder builder =
376-
(EchoStubSettings.Builder) settings.getStubSettings().toBuilder();
375+
(EchoStubSettings.Builder) settings.getStubSettings().toBuilder();
377376
builder.setTracerFactory(tracingFactory);
378377
return new ExtendedEchoStubSettings(builder).createStub();
379378
}

0 commit comments

Comments
 (0)