@@ -127,6 +127,7 @@ class ITOtelTracing {
127127 private static final String VALUE_SERVICE_UNAVAILABLE = "Service Unavailable" ;
128128 private static final String SPAN_NAME_ECHO_GRPC = "google.showcase.v1beta1.Echo/Echo" ;
129129 private static final String SPAN_NAME_ECHO_HTTP = "POST v1beta1/echo:echo" ;
130+ private static final String SPAN_NAME_OPERATION_ECHO = "google.showcase.v1beta1.Echo.Echo" ;
130131 private static final String SPAN_NAME_GET_USER_GRPC = "google.showcase.v1beta1.Identity/GetUser" ;
131132 private static final String SPAN_NAME_GET_USER_HTTP = "GET v1beta1/{name=users/*}" ;
132133
@@ -501,15 +502,25 @@ void testTracing_retry_grpc_linkedToParentContext() throws Exception {
501502 parentSpan .end ();
502503 }
503504
504- List <SpanData > spans = spanExporter . getFinishedSpanItems ( );
505- assertThat (spans ).hasSize (attempts + 1 );
505+ List <SpanData > spans = waitForSpans ( attempts + 2 );
506+ assertThat (spans ).hasSize (attempts + 2 );
506507
507508 SpanData rootSpan =
508509 spans .stream ()
509510 .filter (span -> span .getName ().equals ("application-parent-operation" ))
510511 .findFirst ()
511512 .orElseThrow (() -> new AssertionError ("Parent span not found" ));
512513
514+ SpanData operationSpan =
515+ spans .stream ()
516+ .filter (span -> span .getName ().equals (SPAN_NAME_OPERATION_ECHO ))
517+ .findFirst ()
518+ .orElseThrow (() -> new AssertionError ("Operation span not found" ));
519+ assertThat (operationSpan .getKind ()).isEqualTo (SpanKind .INTERNAL );
520+ assertThat (operationSpan .getParentSpanId ()).isEqualTo (rootSpan .getSpanContext ().getSpanId ());
521+ assertThat (operationSpan .getSpanContext ().getTraceId ())
522+ .isEqualTo (rootSpan .getSpanContext ().getTraceId ());
523+
513524 List <SpanData > attemptSpans =
514525 spans .stream ()
515526 .filter (span -> span .getName ().equals (SPAN_NAME_ECHO_GRPC ))
@@ -518,7 +529,8 @@ void testTracing_retry_grpc_linkedToParentContext() throws Exception {
518529
519530 for (SpanData attemptSpan : attemptSpans ) {
520531 assertThat (attemptSpan .getKind ()).isEqualTo (SpanKind .CLIENT );
521- assertThat (attemptSpan .getParentSpanId ()).isEqualTo (rootSpan .getSpanContext ().getSpanId ());
532+ assertThat (attemptSpan .getParentSpanId ())
533+ .isEqualTo (operationSpan .getSpanContext ().getSpanId ());
522534 assertThat (attemptSpan .getSpanContext ().getTraceId ())
523535 .isEqualTo (rootSpan .getSpanContext ().getTraceId ());
524536 }
@@ -642,15 +654,25 @@ void testTracing_retry_httpjson_linkedToParentContext() throws Exception {
642654 parentSpan .end ();
643655 }
644656
645- List <SpanData > spans = spanExporter . getFinishedSpanItems ( );
646- assertThat (spans ).hasSize (attempts + 1 );
657+ List <SpanData > spans = waitForSpans ( attempts + 2 );
658+ assertThat (spans ).hasSize (attempts + 2 );
647659
648660 SpanData rootSpan =
649661 spans .stream ()
650662 .filter (span -> span .getName ().equals ("application-parent-operation" ))
651663 .findFirst ()
652664 .orElseThrow (() -> new AssertionError ("Parent span not found" ));
653665
666+ SpanData operationSpan =
667+ spans .stream ()
668+ .filter (span -> span .getName ().equals (SPAN_NAME_OPERATION_ECHO ))
669+ .findFirst ()
670+ .orElseThrow (() -> new AssertionError ("Operation span not found" ));
671+ assertThat (operationSpan .getKind ()).isEqualTo (SpanKind .INTERNAL );
672+ assertThat (operationSpan .getParentSpanId ()).isEqualTo (rootSpan .getSpanContext ().getSpanId ());
673+ assertThat (operationSpan .getSpanContext ().getTraceId ())
674+ .isEqualTo (rootSpan .getSpanContext ().getTraceId ());
675+
654676 List <SpanData > attemptSpans =
655677 spans .stream ()
656678 .filter (span -> span .getName ().equals (SPAN_NAME_ECHO_HTTP ))
@@ -659,7 +681,8 @@ void testTracing_retry_httpjson_linkedToParentContext() throws Exception {
659681
660682 for (SpanData attemptSpan : attemptSpans ) {
661683 assertThat (attemptSpan .getKind ()).isEqualTo (SpanKind .CLIENT );
662- assertThat (attemptSpan .getParentSpanId ()).isEqualTo (rootSpan .getSpanContext ().getSpanId ());
684+ assertThat (attemptSpan .getParentSpanId ())
685+ .isEqualTo (operationSpan .getSpanContext ().getSpanId ());
663686 assertThat (attemptSpan .getSpanContext ().getTraceId ())
664687 .isEqualTo (rootSpan .getSpanContext ().getTraceId ());
665688 }
0 commit comments