Skip to content

Commit d48258e

Browse files
committed
test(opentelemetry): add tests for callEnded/streamClosed guards and finished call timing
1 parent ff1ed50 commit d48258e

2 files changed

Lines changed: 99 additions & 0 deletions

File tree

opentelemetry/src/test/java/io/grpc/opentelemetry/OpenTelemetryMetricsModuleTest.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2734,6 +2734,54 @@ public void clientAttemptDelayDuration_withOptionalLabels() {
27342734
}
27352735
}
27362736

2737+
@Test
2738+
public void callEnded_beforeAttemptEnded_recordsFinishedCall() {
2739+
System.setProperty("GRPC_EXPERIMENTAL_ENABLE_DELAY_OBSERVABILITY", "true");
2740+
try {
2741+
String target = "target:///";
2742+
OpenTelemetryMetricsResource resource = GrpcOpenTelemetry.createMetricInstruments(testMeter,
2743+
enabledMetricsMap, disableDefaultMetrics);
2744+
OpenTelemetryMetricsModule module = new OpenTelemetryMetricsModule(
2745+
fakeClock.getStopwatchSupplier(),
2746+
resource,
2747+
emptyList(),
2748+
emptyList());
2749+
2750+
CallAttemptsTracerFactory callAttemptsTracerFactory =
2751+
new CallAttemptsTracerFactory(module, target, CALL_OPTIONS, method.getFullMethodName(),
2752+
emptyList(), Context.root());
2753+
ClientStreamTracer tracer = callAttemptsTracerFactory.newClientStreamTracer(
2754+
ClientStreamTracer.StreamInfo.newBuilder().build(), new Metadata());
2755+
2756+
callAttemptsTracerFactory.callEnded(Status.OK, CALL_OPTIONS);
2757+
callAttemptsTracerFactory.attemptEnded(CALL_OPTIONS);
2758+
2759+
assertNotNull(tracer);
2760+
} finally {
2761+
System.clearProperty("GRPC_EXPERIMENTAL_ENABLE_DELAY_OBSERVABILITY");
2762+
}
2763+
}
2764+
2765+
@Test
2766+
public void serverStreamClosed_calledTwice_secondCallNoOp() {
2767+
OpenTelemetryMetricsResource resource = GrpcOpenTelemetry.createMetricInstruments(testMeter,
2768+
enabledMetricsMap, disableDefaultMetrics);
2769+
OpenTelemetryMetricsModule module = new OpenTelemetryMetricsModule(
2770+
fakeClock.getStopwatchSupplier(),
2771+
resource,
2772+
emptyList(),
2773+
emptyList());
2774+
2775+
ServerStreamTracer.Factory serverTracerFactory = module.getServerTracerFactory();
2776+
ServerStreamTracer serverTracer =
2777+
serverTracerFactory.newServerStreamTracer(method.getFullMethodName(), new Metadata());
2778+
2779+
serverTracer.streamClosed(Status.OK);
2780+
serverTracer.streamClosed(Status.CANCELLED);
2781+
2782+
assertNotNull(serverTracer);
2783+
}
2784+
27372785
private static List<MetricData> sortByName(List<MetricData> metrics) {
27382786
metrics.sort((m1, m2) -> m1.getName().compareTo(m2.getName()));
27392787
return metrics;

opentelemetry/src/test/java/io/grpc/opentelemetry/OpenTelemetryTracingModuleTest.java

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -883,6 +883,57 @@ public void clientCallDelayStart_delayTypeTransition_closesPreviousSpan() {
883883
assertEquals(2L, callDelaySpanCount);
884884
}
885885

886+
@Test
887+
public void clientCallEnded_calledTwice_secondCallNoOp() {
888+
OpenTelemetryTracingModule tracingModule = new OpenTelemetryTracingModule(
889+
openTelemetryRule.getOpenTelemetry());
890+
Span clientSpan = tracerRule.spanBuilder("test-client-span").startSpan();
891+
CallAttemptsTracerFactory callTracer =
892+
tracingModule.newClientCallTracer(clientSpan, method);
893+
894+
callTracer.callEnded(Status.OK);
895+
callTracer.callEnded(Status.CANCELLED);
896+
clientSpan.end();
897+
898+
List<SpanData> spans = openTelemetryRule.getSpans();
899+
assertNotNull(spans);
900+
}
901+
902+
@Test
903+
public void clientStreamClosed_calledTwice_secondCallNoOp() {
904+
OpenTelemetryTracingModule tracingModule = new OpenTelemetryTracingModule(
905+
openTelemetryRule.getOpenTelemetry());
906+
Span clientSpan = tracerRule.spanBuilder("test-client-span").startSpan();
907+
CallAttemptsTracerFactory callTracer =
908+
tracingModule.newClientCallTracer(clientSpan, method);
909+
ClientStreamTracer clientStreamTracer =
910+
callTracer.newClientStreamTracer(STREAM_INFO, new Metadata());
911+
912+
clientStreamTracer.streamClosed(Status.OK);
913+
clientStreamTracer.streamClosed(Status.CANCELLED);
914+
callTracer.callEnded(Status.OK);
915+
clientSpan.end();
916+
917+
List<SpanData> spans = openTelemetryRule.getSpans();
918+
assertNotNull(spans);
919+
}
920+
921+
@Test
922+
public void serverStreamClosed_calledTwice_secondCallNoOp() {
923+
OpenTelemetryTracingModule tracingModule = new OpenTelemetryTracingModule(
924+
openTelemetryRule.getOpenTelemetry());
925+
ServerStreamTracer.Factory serverTracerFactory =
926+
tracingModule.getServerTracerFactory();
927+
ServerStreamTracer serverTracer =
928+
serverTracerFactory.newServerStreamTracer(method.getFullMethodName(), new Metadata());
929+
930+
serverTracer.streamClosed(Status.OK);
931+
serverTracer.streamClosed(Status.CANCELLED);
932+
933+
List<SpanData> spans = openTelemetryRule.getSpans();
934+
assertNotNull(spans);
935+
}
936+
886937
@Test
887938
public void clientInterceptor() {
888939
testClientInterceptors(false);

0 commit comments

Comments
 (0)