From 1a988df22f7e3d15ce6b121bf26897c59ab468e4 Mon Sep 17 00:00:00 2001 From: surbhigarg92 Date: Tue, 17 Sep 2024 01:29:10 +0530 Subject: [PATCH] feat: Metrics tracer addAttribute map overload (#3202) This PR adds an overload for adding multiple attributes at once. Earlier the client had to call the `addAttributes` method in a loop to add each attributes. Below overload takes a map and add all the attributes at once ``` public void addAttributes(Map attributes) { this.attributes.putAll(attributes); }; ``` --------- Co-authored-by: Blake Li --- .../com/google/api/gax/tracing/MetricsTracer.java | 9 +++++++++ .../com/google/api/gax/tracing/MetricsTracerTest.java | 11 +++++++++++ 2 files changed, 20 insertions(+) diff --git a/gax-java/gax/src/main/java/com/google/api/gax/tracing/MetricsTracer.java b/gax-java/gax/src/main/java/com/google/api/gax/tracing/MetricsTracer.java index 3de156a562..279d375be5 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/tracing/MetricsTracer.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/tracing/MetricsTracer.java @@ -245,6 +245,15 @@ public void addAttributes(String key, String value) { attributes.put(key, value); }; + /** + * Add attributes that will be attached to all metrics. This is expected to be called by + * handwritten client teams to add additional attributes that are not supposed be collected by + * Gax. + */ + public void addAttributes(Map attributes) { + this.attributes.putAll(attributes); + }; + @VisibleForTesting Map getAttributes() { return attributes; diff --git a/gax-java/gax/src/test/java/com/google/api/gax/tracing/MetricsTracerTest.java b/gax-java/gax/src/test/java/com/google/api/gax/tracing/MetricsTracerTest.java index 18162f1ee9..1864eba7e1 100644 --- a/gax-java/gax/src/test/java/com/google/api/gax/tracing/MetricsTracerTest.java +++ b/gax-java/gax/src/test/java/com/google/api/gax/tracing/MetricsTracerTest.java @@ -43,6 +43,7 @@ import com.google.api.gax.rpc.StatusCode.Code; import com.google.api.gax.rpc.testing.FakeStatusCode; import com.google.common.collect.ImmutableMap; +import java.util.HashMap; import java.util.Map; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -228,6 +229,16 @@ void testAddAttributes_recordsAttributes() { assertThat(metricsTracer.getAttributes().get("FakeTableId")).isEqualTo("12345"); } + @Test + void testAddAttributes_recordsAttributesWithMap() { + Map attributes = new HashMap<>(); + attributes.put("FakeTableId", "12345"); + attributes.put("FakeInstanceId", "67890"); + metricsTracer.addAttributes(attributes); + assertThat(metricsTracer.getAttributes().get("FakeTableId")).isEqualTo("12345"); + assertThat(metricsTracer.getAttributes().get("FakeInstanceId")).isEqualTo("67890"); + } + @Test void testExtractStatus_errorConversion_apiExceptions() { ApiException error =