@@ -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