diff --git a/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpc.java b/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpc.java index 16737dc4b713..2d014ea49c6d 100644 --- a/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpc.java +++ b/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpc.java @@ -70,6 +70,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.SpanKind; import java.io.IOException; @@ -1196,10 +1197,10 @@ public boolean deleteRoutineSkipExceptionTranslation( deleteRoutine = this.options .getOpenTelemetryTracer() - .spanBuilder("com.google.cloud.bigquery.BigQueryRpc.listRoutines") + .spanBuilder("com.google.cloud.bigquery.BigQueryRpc.deleteRoutine") .setSpanKind(SpanKind.CLIENT) .setAttribute("bq.rpc.service", "RoutineService") - .setAttribute("bq.rpc.method", "ListRoutines") + .setAttribute("bq.rpc.method", "DeleteRoutine") .setAttribute("bq.rpc.system", "http") .startSpan(); } @@ -1987,10 +1988,10 @@ public TestIamPermissionsResponse testIamPermissionsSkipExceptionTranslation( testIamPermissions = this.options .getOpenTelemetryTracer() - .spanBuilder("com.google.cloud.bigquery.BigQueryRpc.setIamPolicy") + .spanBuilder("com.google.cloud.bigquery.BigQueryRpc.testIamPermissions") .setSpanKind(SpanKind.CLIENT) .setAttribute("bq.rpc.service", "TableService") - .setAttribute("bq.rpc.method", "SetIamPolicy") + .setAttribute("bq.rpc.method", "TestIamPermissions") .setAttribute("bq.rpc.system", "http") .setAllAttributes(otelAttributesFromOptions(options)) .startSpan(); @@ -2004,10 +2005,10 @@ public TestIamPermissionsResponse testIamPermissionsSkipExceptionTranslation( } private static Attributes otelAttributesFromOptions(Map options) { - Attributes attributes = Attributes.builder().build(); + AttributesBuilder builder = Attributes.builder(); for (Map.Entry entry : options.entrySet()) { - attributes.toBuilder().put(entry.getKey().toString(), entry.getValue().toString()); + builder.put(entry.getKey().toString(), entry.getValue().toString()); } - return attributes; + return builder.build(); } } diff --git a/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpcTest.java b/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpcTest.java index 30f3d4a53b2f..98f59d3af5a5 100644 --- a/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpcTest.java +++ b/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpcTest.java @@ -542,9 +542,9 @@ public void testDeleteRoutineTelemetry() throws Exception { "DELETE", "/projects/" + PROJECT_ID + "/datasets/" + DATASET_ID + "/routines/" + ROUTINE_ID); verifySpan( - "com.google.cloud.bigquery.BigQueryRpc.listRoutines", + "com.google.cloud.bigquery.BigQueryRpc.deleteRoutine", "RoutineService", - "ListRoutines", + "DeleteRoutine", null); } @@ -854,11 +854,40 @@ public void testTestIamPermissionsTelemetry() throws Exception { + TABLE_ID + ":testIamPermissions"); verifySpan( - "com.google.cloud.bigquery.BigQueryRpc.setIamPolicy", + "com.google.cloud.bigquery.BigQueryRpc.testIamPermissions", "TableService", - "SetIamPolicy", + "TestIamPermissions", null); } + + @Test + public void testOtelAttributesFromOptionsGetAddedtoSpan() throws Exception { + setMockResponse( + "{\"kind\":\"bigquery#dataset\",\"id\":\"" + + PROJECT_ID + + ":" + + DATASET_ID + + "\",\"datasetReference\":{\"projectId\":\"" + + PROJECT_ID + + "\",\"datasetId\":\"" + + DATASET_ID + + "\"}}"); + + Map options = new HashMap<>(); + options.put(BigQueryRpc.Option.FIELDS, "foo,bar"); + + rpc.getDatasetSkipExceptionTranslation(PROJECT_ID, DATASET_ID, options); + + Map expectedAttributes = new HashMap<>(); + expectedAttributes.put("FIELDS", "foo,bar"); + expectedAttributes.put("bq.rpc.response.dataset.id", PROJECT_ID + ":" + DATASET_ID); + + verifySpan( + "com.google.cloud.bigquery.BigQueryRpc.getDataset", + "DatasetService", + "GetDataset", + expectedAttributes); + } } @Nested