Skip to content

Commit 47ba387

Browse files
authored
Merge branch 'main' into upgrade-grpc
2 parents 728c548 + 378a3c1 commit 47ba387

File tree

10 files changed

+107
-24
lines changed

10 files changed

+107
-24
lines changed

.github/workflows/ci.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ jobs:
237237
run: |
238238
mvn install -B -ntp -T 1C -DskipTests -Dclirr.skip -Dcheckstyle.skip -Denforcer.skip
239239
- name: Validate gapic-libraries-bom
240-
uses: googleapis/java-cloud-bom/tests/validate-bom@v26.54.0
240+
uses: googleapis/java-cloud-bom/tests/validate-bom@v26.79.0
241241
with:
242242
bom-path: gapic-libraries-bom/pom.xml
243243
generation-config-check:

java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/ConnectionWorkerTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -118,17 +118,17 @@ void testMultiplexedAppendSuccess_NonNullTraceId() throws Exception {
118118
testMultiplexedIngestion(
119119
/* sw1TraceId= */ "header_1:trailer_1",
120120
/* sw2TraceId= */ "header_2:trailer_2",
121-
/* expectedSW1TraceId= */ "java-streamwriter header_1:trailer_1",
122-
/* expectedSW2TraceId= */ "java-streamwriter header_2:trailer_2");
121+
/* expectedSW1TraceId= */ "java-streamwriter(:.+)? header_1:trailer_1",
122+
/* expectedSW2TraceId= */ "java-streamwriter(:.+)? header_2:trailer_2");
123123
}
124124

125125
@Test
126126
void testMultiplexedAppendSuccess_EmptyTraceId() throws Exception {
127127
testMultiplexedIngestion(
128128
/* sw1TraceId= */ "header_1:trailer_1",
129129
/* sw2TraceId= */ "",
130-
/* expectedSW1TraceId= */ "java-streamwriter header_1:trailer_1",
131-
/* expectedSW2TraceId= */ "java-streamwriter");
130+
/* expectedSW1TraceId= */ "java-streamwriter(:.+)? header_1:trailer_1",
131+
/* expectedSW2TraceId= */ "java-streamwriter(:.+)?");
132132
}
133133

134134
private void testMultiplexedIngestion(
@@ -216,7 +216,7 @@ private void testMultiplexedIngestion(
216216
assertThat(
217217
serverRequest.getProtoRows().getWriterSchema().getProtoDescriptor().getName())
218218
.isEqualTo("foo");
219-
assertThat(serverRequest.getTraceId()).isEqualTo(expectedSW1TraceId);
219+
assertThat(serverRequest.getTraceId()).matches(expectedSW1TraceId);
220220
break;
221221
case 1:
222222
// The write stream is empty until we enter multiplexing.
@@ -232,7 +232,7 @@ private void testMultiplexedIngestion(
232232
assertThat(
233233
serverRequest.getProtoRows().getWriterSchema().getProtoDescriptor().getName())
234234
.isEqualTo("complicate");
235-
assertThat(serverRequest.getTraceId()).isEqualTo(expectedSW2TraceId);
235+
assertThat(serverRequest.getTraceId()).matches(expectedSW2TraceId);
236236
break;
237237
case 3:
238238
// Schema is empty if not at the first request after table switch.

java-bigquerystorage/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/JsonStreamWriterTest.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package com.google.cloud.bigquery.storage.v1;
1717

18+
import static com.google.common.truth.Truth.assertThat;
1819
import static org.junit.jupiter.api.Assertions.assertEquals;
1920
import static org.junit.jupiter.api.Assertions.assertFalse;
2021
import static org.junit.jupiter.api.Assertions.assertNotEquals;
@@ -248,8 +249,8 @@ void testSingleAppendSimpleJson() throws Exception {
248249
.getRows()
249250
.getSerializedRows(0),
250251
expectedProto.toByteString());
251-
assertEquals(
252-
"java-jsonwriter test:empty", testBigQueryWrite.getAppendRequests().get(0).getTraceId());
252+
assertThat(testBigQueryWrite.getAppendRequests().get(0).getTraceId())
253+
.matches("java-jsonwriter(:.+)? test:empty");
253254
}
254255
}
255256

@@ -291,8 +292,8 @@ void testSingleAppendSimpleGson() throws Exception {
291292
.getRows()
292293
.getSerializedRows(0),
293294
expectedProto.toByteString());
294-
assertEquals(
295-
"java-jsonwriter test:empty", testBigQueryWrite.getAppendRequests().get(0).getTraceId());
295+
assertThat(testBigQueryWrite.getAppendRequests().get(0).getTraceId())
296+
.matches("java-jsonwriter(:.+)? test:empty");
296297
}
297298
}
298299

@@ -339,7 +340,8 @@ void testFlexibleColumnAppend() throws Exception {
339340
.getRows()
340341
.getSerializedRows(0),
341342
expectedProto.toByteString());
342-
assertEquals("java-jsonwriter", testBigQueryWrite.getAppendRequests().get(0).getTraceId());
343+
assertThat(testBigQueryWrite.getAppendRequests().get(0).getTraceId())
344+
.matches("java-jsonwriter(:.+)?");
343345
}
344346
}
345347

@@ -561,7 +563,8 @@ void testSingleAppendMultipleSimpleJson() throws Exception {
561563
.getProtoRows()
562564
.getRows()
563565
.getSerializedRowsCount());
564-
assertEquals("java-jsonwriter", testBigQueryWrite.getAppendRequests().get(0).getTraceId());
566+
assertThat(testBigQueryWrite.getAppendRequests().get(0).getTraceId())
567+
.matches("java-jsonwriter(:.+)?");
565568
for (int i = 0; i < 4; i++) {
566569
assertEquals(
567570
testBigQueryWrite

java-dns/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file:
2020
<dependency>
2121
<groupId>com.google.cloud</groupId>
2222
<artifactId>libraries-bom</artifactId>
23-
<version>26.72.0</version>
23+
<version>26.78.0</version>
2424
<type>pom</type>
2525
<scope>import</scope>
2626
</dependency>

java-notification/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file:
2323
<dependency>
2424
<groupId>com.google.cloud</groupId>
2525
<artifactId>libraries-bom</artifactId>
26-
<version>26.72.0</version>
26+
<version>26.78.0</version>
2727
<type>pom</type>
2828
<scope>import</scope>
2929
</dependency>

java-samples/native-image-sample/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<dependency>
1919
<groupId>com.google.cloud</groupId>
2020
<artifactId>libraries-bom</artifactId>
21-
<version>26.72.0</version>
21+
<version>26.78.0</version>
2222
<type>pom</type>
2323
<scope>import</scope>
2424
</dependency>

java-vertexai/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file:
2626
<dependency>
2727
<groupId>com.google.cloud</groupId>
2828
<artifactId>libraries-bom</artifactId>
29-
<version>26.72.0</version>
29+
<version>26.78.0</version>
3030
<type>pom</type>
3131
<scope>import</scope>
3232
</dependency>

sdk-platform-java/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,7 @@ public static ClientContext create(StubSettings settings) throws IOException {
276276
.setServerAddress(endpointContext.resolvedServerAddress())
277277
.setServerPort(endpointContext.resolvedServerPort())
278278
.setLibraryMetadata(settings.getLibraryMetadata())
279+
.setServiceName(endpointContext.serviceName())
279280
.build();
280281
ApiTracerFactory apiTracerFactory = settings.getTracerFactory();
281282
if (apiTracerFactory instanceof SpanTracerFactory) {

sdk-platform-java/gax-java/gax/src/test/java/com/google/api/gax/tracing/ApiTracerContextTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,19 @@ void testGetAttemptAttributes_emptyStrings() {
186186
assertThat(attributes).isEmpty();
187187
}
188188

189+
@Test
190+
void testGetAttemptAttributes_serviceName() {
191+
ApiTracerContext context =
192+
ApiTracerContext.newBuilder()
193+
.setLibraryMetadata(LibraryMetadata.empty())
194+
.setServiceName("test-service")
195+
.build();
196+
Map<String, Object> attributes = context.getAttemptAttributes();
197+
198+
assertThat(attributes)
199+
.containsEntry(ObservabilityAttributes.GCP_CLIENT_SERVICE_ATTRIBUTE, "test-service");
200+
}
201+
189202
@Test
190203
void testGetMetricsAttributes_serverPort() {
191204
ApiTracerContext context =

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

Lines changed: 73 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@
4848
import com.google.showcase.v1beta1.EchoRequest;
4949
import com.google.showcase.v1beta1.EchoResponse;
5050
import com.google.showcase.v1beta1.EchoSettings;
51-
import com.google.showcase.v1beta1.it.util.TestClientInitializer;
5251
import com.google.showcase.v1beta1.stub.EchoStub;
5352
import com.google.showcase.v1beta1.stub.EchoStubSettings;
53+
import io.grpc.ManagedChannelBuilder;
5454
import io.opentelemetry.api.GlobalOpenTelemetry;
5555
import io.opentelemetry.api.common.AttributeKey;
5656
import io.opentelemetry.api.trace.SpanKind;
@@ -59,6 +59,7 @@
5959
import io.opentelemetry.sdk.trace.SdkTracerProvider;
6060
import io.opentelemetry.sdk.trace.data.SpanData;
6161
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
62+
import java.io.IOException;
6263
import java.nio.charset.StandardCharsets;
6364
import java.util.List;
6465
import org.junit.jupiter.api.AfterEach;
@@ -68,6 +69,10 @@
6869
class ITOtelTracing {
6970
private static final String SHOWCASE_SERVER_ADDRESS = "localhost";
7071
private static final long SHOWCASE_SERVER_PORT = 7469;
72+
private static final String SHOWCASE_GRPC_ENDPOINT =
73+
String.format("%s:%s", SHOWCASE_SERVER_ADDRESS, SHOWCASE_SERVER_PORT);
74+
private static final String SHOWCASE_HTTPJSON_ENDPOINT =
75+
String.format("http://%s:%s", SHOWCASE_SERVER_ADDRESS, SHOWCASE_SERVER_PORT);
7176
private static final String SHOWCASE_REPO = "googleapis/sdk-platform-java";
7277
private static final String SHOWCASE_ARTIFACT = "com.google.cloud:gapic-showcase";
7378
private static final String SHOWCASE_USER_URL = "http://localhost:7469/v1beta1/echo:echo";
@@ -100,8 +105,11 @@ void tearDown() {
100105
void testTracing_successfulEcho_grpc() throws Exception {
101106
SpanTracerFactory tracingFactory = new SpanTracerFactory(openTelemetrySdk);
102107

103-
try (EchoClient client =
104-
TestClientInitializer.createGrpcEchoClientOpentelemetry(tracingFactory)) {
108+
EchoSettings grpcEchoSettings = createEchoSettings(false);
109+
110+
EchoStub stub = createStubWithServiceName(grpcEchoSettings, tracingFactory);
111+
112+
try (EchoClient client = EchoClient.create(stub)) {
105113

106114
client.echo(EchoRequest.newBuilder().setContent("tracing-test").build());
107115

@@ -144,6 +152,12 @@ void testTracing_successfulEcho_grpc() throws Exception {
144152
.getAttributes()
145153
.get(AttributeKey.stringKey(ObservabilityAttributes.RPC_SYSTEM_NAME_ATTRIBUTE)))
146154
.isEqualTo("grpc");
155+
assertThat(
156+
attemptSpan
157+
.getAttributes()
158+
.get(
159+
AttributeKey.stringKey(ObservabilityAttributes.GCP_CLIENT_SERVICE_ATTRIBUTE)))
160+
.isEqualTo("showcase");
147161
assertThat(
148162
attemptSpan
149163
.getAttributes()
@@ -158,8 +172,11 @@ void testTracing_successfulEcho_grpc() throws Exception {
158172
void testTracing_successfulEcho_httpjson() throws Exception {
159173
SpanTracerFactory tracingFactory = new SpanTracerFactory(openTelemetrySdk);
160174

161-
try (EchoClient client =
162-
TestClientInitializer.createHttpJsonEchoClientOpentelemetry(tracingFactory)) {
175+
EchoSettings httpJsonEchoSettings = createEchoSettings(true);
176+
177+
EchoStub stub = createStubWithServiceName(httpJsonEchoSettings, tracingFactory);
178+
179+
try (EchoClient client = EchoClient.create(stub)) {
163180

164181
client.echo(EchoRequest.newBuilder().setContent("tracing-test").build());
165182

@@ -198,6 +215,12 @@ void testTracing_successfulEcho_httpjson() throws Exception {
198215
.getAttributes()
199216
.get(AttributeKey.stringKey(ObservabilityAttributes.ARTIFACT_ATTRIBUTE)))
200217
.isEqualTo(SHOWCASE_ARTIFACT);
218+
assertThat(
219+
attemptSpan
220+
.getAttributes()
221+
.get(
222+
AttributeKey.stringKey(ObservabilityAttributes.GCP_CLIENT_SERVICE_ATTRIBUTE)))
223+
.isEqualTo("showcase");
201224
assertThat(
202225
attemptSpan
203226
.getAttributes()
@@ -257,7 +280,7 @@ void testTracing_retry_grpc() throws Exception {
257280
grpcEchoSettings.toBuilder()
258281
.setCredentialsProvider(NoCredentialsProvider.create())
259282
.setTransportChannelProvider(EchoSettings.defaultGrpcTransportProviderBuilder().build())
260-
.setEndpoint("localhost:7469")
283+
.setEndpoint(SHOWCASE_GRPC_ENDPOINT)
261284
.build();
262285

263286
SpanTracerFactory tracingFactory = new SpanTracerFactory(openTelemetrySdk);
@@ -332,7 +355,7 @@ void testTracing_retry_httpjson() throws Exception {
332355
EchoSettings.defaultHttpJsonTransportProviderBuilder()
333356
.setHttpTransport(
334357
new NetHttpTransport.Builder().doNotValidateCertificate().build())
335-
.setEndpoint("http://localhost:7469")
358+
.setEndpoint(SHOWCASE_HTTPJSON_ENDPOINT)
336359
.build())
337360
.build();
338361

@@ -380,4 +403,47 @@ void testTracing_retry_httpjson() throws Exception {
380403
.collect(java.util.stream.Collectors.toList());
381404
assertThat(resendCounts).containsExactlyElementsIn(expectedCounts).inOrder();
382405
}
406+
407+
private EchoSettings createEchoSettings(boolean isHttpJson) throws Exception {
408+
if (isHttpJson) {
409+
return EchoSettings.newHttpJsonBuilder()
410+
.setCredentialsProvider(NoCredentialsProvider.create())
411+
.setTransportChannelProvider(
412+
EchoSettings.defaultHttpJsonTransportProviderBuilder()
413+
.setHttpTransport(
414+
new NetHttpTransport.Builder().doNotValidateCertificate().build())
415+
.build())
416+
.setEndpoint(SHOWCASE_HTTPJSON_ENDPOINT)
417+
.build();
418+
} else {
419+
return EchoSettings.newBuilder()
420+
.setCredentialsProvider(NoCredentialsProvider.create())
421+
.setTransportChannelProvider(
422+
EchoSettings.defaultGrpcTransportProviderBuilder()
423+
.setChannelConfigurator(ManagedChannelBuilder::usePlaintext)
424+
.build())
425+
.setEndpoint(SHOWCASE_GRPC_ENDPOINT)
426+
.build();
427+
}
428+
}
429+
430+
private EchoStub createStubWithServiceName(
431+
EchoSettings settings, SpanTracerFactory tracingFactory) throws IOException {
432+
EchoStubSettings.Builder builder =
433+
(EchoStubSettings.Builder) settings.getStubSettings().toBuilder();
434+
builder.setTracerFactory(tracingFactory);
435+
return new ExtendedEchoStubSettings(builder).createStub();
436+
}
437+
438+
/** Custom wrapper to set a service name for showcase clients, which lack one by default. */
439+
private static class ExtendedEchoStubSettings extends EchoStubSettings {
440+
protected ExtendedEchoStubSettings(EchoStubSettings.Builder builder) throws IOException {
441+
super(builder);
442+
}
443+
444+
@Override
445+
public String getServiceName() {
446+
return "showcase";
447+
}
448+
}
383449
}

0 commit comments

Comments
 (0)