Skip to content

Commit 2577419

Browse files
committed
metrics test refactoring
1 parent ac22e7c commit 2577419

File tree

1 file changed

+26
-45
lines changed

1 file changed

+26
-45
lines changed

google-cloud-spanner/src/test/java/com/google/cloud/spanner/OpenTelemetryBuiltInMetricsTracerTest.java

+26-45
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@
2828
import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
2929
import com.google.api.gax.retrying.RetrySettings;
3030
import com.google.api.gax.tracing.ApiTracerFactory;
31-
import com.google.api.gax.tracing.MetricsTracerFactory;
32-
import com.google.api.gax.tracing.OpenTelemetryMetricsRecorder;
3331
import com.google.cloud.NoCredentials;
3432
import com.google.cloud.spanner.MockSpannerServiceImpl.SimulatedExecutionTime;
3533
import com.google.cloud.spanner.MockSpannerServiceImpl.StatementResult;
@@ -65,54 +63,37 @@
6563

6664
@RunWith(JUnit4.class)
6765
public class OpenTelemetryBuiltInMetricsTracerTest extends AbstractNettyMockServerTest {
68-
6966
private static final Statement SELECT_RANDOM = Statement.of("SELECT * FROM random");
70-
7167
private static final Statement UPDATE_RANDOM = Statement.of("UPDATE random SET foo=1 WHERE id=1");
7268
private static InMemoryMetricReader metricReader;
73-
74-
private static OpenTelemetry openTelemetry;
75-
76-
private static Map<String, String> attributes;
77-
78-
private static Attributes expectedCommonBaseAttributes;
79-
private static Attributes expectedCommonRequestAttributes;
80-
private static ApiTracerFactory metricsTracerFactory;
69+
private static Map<String, String> attributes =
70+
BuiltInMetricsProvider.INSTANCE.createClientAttributes();
71+
private static Attributes expectedCommonBaseAttributes =
72+
Attributes.builder()
73+
.put(BuiltInMetricsConstant.CLIENT_NAME_KEY, "spanner-java/")
74+
.put(BuiltInMetricsConstant.CLIENT_UID_KEY, attributes.get("client_uid"))
75+
.put(BuiltInMetricsConstant.INSTANCE_ID_KEY, "i")
76+
.put(BuiltInMetricsConstant.DATABASE_KEY, "d")
77+
.put(BuiltInMetricsConstant.DIRECT_PATH_ENABLED_KEY, "false")
78+
.build();;
79+
private static Attributes expectedCommonRequestAttributes =
80+
Attributes.builder().put(BuiltInMetricsConstant.DIRECT_PATH_USED_KEY, "false").build();;
8181

8282
private static final long MIN_LATENCY = 0;
8383

8484
private DatabaseClient client;
8585

86-
@BeforeClass
87-
public static void setup() {
86+
public ApiTracerFactory createMetricsTracerFactory() {
8887
metricReader = InMemoryMetricReader.create();
8988

90-
BuiltInMetricsProvider provider = BuiltInMetricsProvider.INSTANCE;
91-
9289
SdkMeterProviderBuilder meterProvider =
9390
SdkMeterProvider.builder().registerMetricReader(metricReader);
94-
9591
BuiltInMetricsConstant.getAllViews().forEach(meterProvider::registerView);
92+
OpenTelemetry openTelemetry =
93+
OpenTelemetrySdk.builder().setMeterProvider(meterProvider.build()).build();
9694

97-
String client_name = "spanner-java/";
98-
openTelemetry = OpenTelemetrySdk.builder().setMeterProvider(meterProvider.build()).build();
99-
attributes = provider.createClientAttributes();
100-
101-
expectedCommonBaseAttributes =
102-
Attributes.builder()
103-
.put(BuiltInMetricsConstant.CLIENT_NAME_KEY, client_name)
104-
.put(BuiltInMetricsConstant.CLIENT_UID_KEY, attributes.get("client_uid"))
105-
.put(BuiltInMetricsConstant.INSTANCE_ID_KEY, "i")
106-
.put(BuiltInMetricsConstant.DATABASE_KEY, "d")
107-
.put(BuiltInMetricsConstant.DIRECT_PATH_ENABLED_KEY, "false")
108-
.build();
109-
110-
expectedCommonRequestAttributes =
111-
Attributes.builder().put(BuiltInMetricsConstant.DIRECT_PATH_USED_KEY, "false").build();
112-
metricsTracerFactory =
113-
new BuiltInMetricsTracerFactory(
114-
new BuiltInMetricsRecorder(openTelemetry, BuiltInMetricsConstant.METER_NAME),
115-
attributes);
95+
return new BuiltInMetricsTracerFactory(
96+
new BuiltInMetricsRecorder(openTelemetry, BuiltInMetricsConstant.METER_NAME), attributes);
11697
}
11798

11899
@BeforeClass
@@ -123,9 +104,9 @@ public static void setupResults() {
123104
}
124105

125106
@After
126-
public void clearRequests() {
107+
public void clearRequests() throws IOException {
127108
mockSpanner.clearRequests();
128-
metricReader.forceFlush();
109+
metricReader.close();
129110
}
130111

131112
@Override
@@ -159,7 +140,7 @@ public void createSpannerInstance() {
159140
// Setting this to false so that Spanner Options does not register Metrics Tracer
160141
// factory again.
161142
.setBuiltInMetricsEnabled(false)
162-
.setApiTracerFactory(metricsTracerFactory)
143+
.setApiTracerFactory(createMetricsTracerFactory())
163144
.build()
164145
.getService();
165146
client = spanner.getDatabaseClient(DatabaseId.of("test-project", "i", "d"));
@@ -209,6 +190,8 @@ public void testMetricsSingleUseQuery() {
209190
long gfeLatencyValue = getAggregatedValue(gfeLatencyMetricData, expectedAttributes);
210191
assertEquals(fakeServerTiming.get(), gfeLatencyValue, 0);
211192

193+
assertFalse(
194+
checkIfMetricExists(metricReader, BuiltInMetricsConstant.GFE_CONNECTIVITY_ERROR_NAME));
212195
assertFalse(checkIfMetricExists(metricReader, BuiltInMetricsConstant.AFE_LATENCIES_NAME));
213196
assertFalse(
214197
checkIfMetricExists(metricReader, BuiltInMetricsConstant.AFE_CONNECTIVITY_ERROR_NAME));
@@ -284,10 +267,6 @@ public void testNoNetworkConnection() {
284267
return null;
285268
});
286269

287-
ApiTracerFactory metricsTracerFactory =
288-
new MetricsTracerFactory(
289-
new OpenTelemetryMetricsRecorder(openTelemetry, BuiltInMetricsConstant.METER_NAME),
290-
attributes);
291270
Spanner spanner =
292271
builder
293272
.setProjectId("test-project")
@@ -305,7 +284,7 @@ public void testNoNetworkConnection() {
305284
// Setting this to false so that Spanner Options does not register Metrics Tracer
306285
// factory again.
307286
.setBuiltInMetricsEnabled(false)
308-
.setApiTracerFactory(metricsTracerFactory)
287+
.setApiTracerFactory(createMetricsTracerFactory())
309288
.build()
310289
.getService();
311290
String instance = "i";
@@ -370,7 +349,7 @@ public void testNoServerTimingHeader() throws IOException, InterruptedException
370349
// Setting this to false so that Spanner Options does not register Metrics Tracer
371350
// factory again.
372351
.setBuiltInMetricsEnabled(false)
373-
.setApiTracerFactory(metricsTracerFactory)
352+
.setApiTracerFactory(createMetricsTracerFactory())
374353
.build()
375354
.getService();
376355
DatabaseClient databaseClientNoHeader =
@@ -391,6 +370,8 @@ public void testNoServerTimingHeader() throws IOException, InterruptedException
391370
MetricData gfeConnectivityMetricData =
392371
getMetricData(metricReader, BuiltInMetricsConstant.GFE_CONNECTIVITY_ERROR_NAME);
393372
assertThat(getAggregatedValue(gfeConnectivityMetricData, expectedAttributes)).isEqualTo(1);
373+
assertFalse(checkIfMetricExists(metricReader, BuiltInMetricsConstant.AFE_LATENCIES_NAME));
374+
assertFalse(checkIfMetricExists(metricReader, BuiltInMetricsConstant.GFE_LATENCIES_NAME));
394375
assertFalse(
395376
checkIfMetricExists(metricReader, BuiltInMetricsConstant.AFE_CONNECTIVITY_ERROR_NAME));
396377
spannerNoHeader.close();

0 commit comments

Comments
 (0)