|
25 | 25 | import static io.opentelemetry.semconv.UrlAttributes.URL_PATH; |
26 | 26 | import static io.opentelemetry.semconv.UrlAttributes.URL_SCHEME; |
27 | 27 | import static io.opentelemetry.semconv.UserAgentAttributes.USER_AGENT_ORIGINAL; |
| 28 | +import static io.opentelemetry.semconv.incubating.CodeIncubatingAttributes.CODE_FUNCTION; |
| 29 | +import static io.opentelemetry.semconv.incubating.CodeIncubatingAttributes.CODE_NAMESPACE; |
28 | 30 | import static org.junit.jupiter.api.Named.named; |
29 | 31 |
|
30 | 32 | import io.opentelemetry.api.trace.SpanKind; |
@@ -142,7 +144,13 @@ void basicGetTest(Parameter parameter) { |
142 | 144 | stringKey("spring-webflux.handler.type"), |
143 | 145 | parameter.annotatedMethod == null |
144 | 146 | ? val -> val.contains(INNER_HANDLER_FUNCTION_CLASS_TAG_PREFIX) |
145 | | - : val -> val.isEqualTo(TestController.class.getName()))); |
| 147 | + : val -> val.isEqualTo(TestController.class.getName())), |
| 148 | + satisfies(CODE_FUNCTION, val -> val.isEqualTo("handle")), |
| 149 | + satisfies( |
| 150 | + CODE_NAMESPACE, |
| 151 | + parameter.annotatedMethod == null |
| 152 | + ? val -> val.contains(INNER_HANDLER_FUNCTION_CLASS_TAG_PREFIX) |
| 153 | + : val -> val.endsWith("HandlerMethod"))); |
146 | 154 | })); |
147 | 155 | } |
148 | 156 |
|
@@ -261,7 +269,13 @@ void getAsyncResponseTest(Parameter parameter) { |
261 | 269 | stringKey("spring-webflux.handler.type"), |
262 | 270 | parameter.annotatedMethod == null |
263 | 271 | ? val -> val.contains(INNER_HANDLER_FUNCTION_CLASS_TAG_PREFIX) |
264 | | - : val -> val.isEqualTo(TestController.class.getName()))); |
| 272 | + : val -> val.isEqualTo(TestController.class.getName())), |
| 273 | + satisfies(CODE_FUNCTION, val -> val.isEqualTo("handle")), |
| 274 | + satisfies( |
| 275 | + CODE_NAMESPACE, |
| 276 | + parameter.annotatedMethod == null |
| 277 | + ? val -> val.contains(INNER_HANDLER_FUNCTION_CLASS_TAG_PREFIX) |
| 278 | + : val -> val.endsWith("HandlerMethod"))); |
265 | 279 | }, |
266 | 280 | span -> |
267 | 281 | span.hasName("tracedMethod") |
@@ -367,7 +381,13 @@ void createSpanDuringHandlerFunctionTest(Parameter parameter) { |
367 | 381 | stringKey("spring-webflux.handler.type"), |
368 | 382 | parameter.annotatedMethod == null |
369 | 383 | ? val -> val.contains(INNER_HANDLER_FUNCTION_CLASS_TAG_PREFIX) |
370 | | - : val -> val.isEqualTo(TestController.class.getName()))); |
| 384 | + : val -> val.isEqualTo(TestController.class.getName())), |
| 385 | + satisfies(CODE_FUNCTION, val -> val.isEqualTo("handle")), |
| 386 | + satisfies( |
| 387 | + CODE_NAMESPACE, |
| 388 | + parameter.annotatedMethod == null |
| 389 | + ? val -> val.contains(INNER_HANDLER_FUNCTION_CLASS_TAG_PREFIX) |
| 390 | + : val -> val.endsWith("HandlerMethod"))); |
371 | 391 | }, |
372 | 392 | span -> |
373 | 393 | span.hasName("tracedMethod") |
@@ -430,6 +450,10 @@ void get404Test() { |
430 | 450 | .hasAttributesSatisfyingExactly( |
431 | 451 | equalTo( |
432 | 452 | stringKey("spring-webflux.handler.type"), |
| 453 | + "org.springframework.web.reactive.resource.ResourceWebHandler"), |
| 454 | + satisfies(CODE_FUNCTION, val -> val.isEqualTo("handle")), |
| 455 | + equalTo( |
| 456 | + CODE_NAMESPACE, |
433 | 457 | "org.springframework.web.reactive.resource.ResourceWebHandler")))); |
434 | 458 | } |
435 | 459 |
|
@@ -487,7 +511,11 @@ void basicPostTest() { |
487 | 511 | .hasAttributesSatisfyingExactly( |
488 | 512 | satisfies( |
489 | 513 | stringKey("spring-webflux.handler.type"), |
490 | | - val -> val.contains(EchoHandlerFunction.class.getName()))), |
| 514 | + val -> val.contains(EchoHandlerFunction.class.getName())), |
| 515 | + satisfies(CODE_FUNCTION, val -> val.isEqualTo("handle")), |
| 516 | + satisfies( |
| 517 | + CODE_NAMESPACE, |
| 518 | + val -> val.isEqualTo("server.EchoHandlerFunction"))), |
491 | 519 | span -> |
492 | 520 | span.hasName("echo").hasParent(trace.getSpan(1)).hasTotalAttributeCount(0))); |
493 | 521 | } |
@@ -548,7 +576,13 @@ void getToBadEndpointTest(Parameter parameter) { |
548 | 576 | stringKey("spring-webflux.handler.type"), |
549 | 577 | parameter.annotatedMethod == null |
550 | 578 | ? val -> val.contains(INNER_HANDLER_FUNCTION_CLASS_TAG_PREFIX) |
551 | | - : val -> val.isEqualTo(TestController.class.getName()))); |
| 579 | + : val -> val.isEqualTo(TestController.class.getName())), |
| 580 | + satisfies(CODE_FUNCTION, val -> val.isEqualTo("handle")), |
| 581 | + satisfies( |
| 582 | + CODE_NAMESPACE, |
| 583 | + parameter.annotatedMethod == null |
| 584 | + ? val -> val.contains(INNER_HANDLER_FUNCTION_CLASS_TAG_PREFIX) |
| 585 | + : val -> val.endsWith("HandlerMethod"))); |
552 | 586 | })); |
553 | 587 | } |
554 | 588 |
|
@@ -605,6 +639,10 @@ void redirectTest() { |
605 | 639 | .hasAttributesSatisfyingExactly( |
606 | 640 | satisfies( |
607 | 641 | stringKey("spring-webflux.handler.type"), |
| 642 | + val -> val.startsWith("server.RedirectComponent$$Lambda")), |
| 643 | + satisfies(CODE_FUNCTION, val -> val.isEqualTo("handle")), |
| 644 | + satisfies( |
| 645 | + CODE_NAMESPACE, |
608 | 646 | val -> val.startsWith("server.RedirectComponent$$Lambda")))), |
609 | 647 | trace -> |
610 | 648 | trace.hasSpansSatisfyingExactly( |
@@ -633,6 +671,10 @@ void redirectTest() { |
633 | 671 | .hasAttributesSatisfyingExactly( |
634 | 672 | satisfies( |
635 | 673 | stringKey("spring-webflux.handler.type"), |
| 674 | + val -> val.contains(INNER_HANDLER_FUNCTION_CLASS_TAG_PREFIX)), |
| 675 | + satisfies(CODE_FUNCTION, val -> val.isEqualTo("handle")), |
| 676 | + satisfies( |
| 677 | + CODE_NAMESPACE, |
636 | 678 | val -> val.contains(INNER_HANDLER_FUNCTION_CLASS_TAG_PREFIX))); |
637 | 679 | })); |
638 | 680 | } |
@@ -692,7 +734,13 @@ void multipleGetsToDelayingRoute(Parameter parameter) { |
692 | 734 | stringKey("spring-webflux.handler.type"), |
693 | 735 | parameter.annotatedMethod == null |
694 | 736 | ? val -> val.contains(INNER_HANDLER_FUNCTION_CLASS_TAG_PREFIX) |
695 | | - : val -> val.isEqualTo(TestController.class.getName()))); |
| 737 | + : val -> val.isEqualTo(TestController.class.getName())), |
| 738 | + satisfies(CODE_FUNCTION, val -> val.isEqualTo("handle")), |
| 739 | + satisfies( |
| 740 | + CODE_NAMESPACE, |
| 741 | + parameter.annotatedMethod == null |
| 742 | + ? val -> val.contains(INNER_HANDLER_FUNCTION_CLASS_TAG_PREFIX) |
| 743 | + : val -> val.endsWith("HandlerMethod"))); |
696 | 744 | }); |
697 | 745 |
|
698 | 746 | testing.waitAndAssertTraces(Collections.nCopies(requestsCount, traceAssertion)); |
@@ -764,6 +812,12 @@ void cancelRequestTest() throws Exception { |
764 | 812 | stringKey("spring-webflux.handler.type"), |
765 | 813 | value -> |
766 | 814 | value.startsWith( |
| 815 | + "server.SpringWebFluxTestApplication$$Lambda")), |
| 816 | + satisfies(CODE_FUNCTION, val -> val.isEqualTo("handle")), |
| 817 | + satisfies( |
| 818 | + CODE_NAMESPACE, |
| 819 | + val -> |
| 820 | + val.startsWith( |
767 | 821 | "server.SpringWebFluxTestApplication$$Lambda"))))); |
768 | 822 |
|
769 | 823 | SpringWebFluxTestApplication.resumeSlowRequest(); |
|
0 commit comments