5
5
6
6
package io .opentelemetry .javaagent .instrumentation .armeria .v1_3 ;
7
7
8
+ import static io .opentelemetry .sdk .testing .assertj .OpenTelemetryAssertions .equalTo ;
9
+ import static io .opentelemetry .sdk .testing .assertj .OpenTelemetryAssertions .satisfies ;
8
10
import static org .assertj .core .api .Assertions .assertThat ;
9
11
10
12
import com .linecorp .armeria .client .WebClient ;
14
16
import com .linecorp .armeria .testing .junit5 .server .ServerExtension ;
15
17
import io .opentelemetry .api .trace .SpanKind ;
16
18
import io .opentelemetry .instrumentation .testing .junit .AgentInstrumentationExtension ;
19
+ import io .opentelemetry .semconv .ClientAttributes ;
20
+ import io .opentelemetry .semconv .HttpAttributes ;
21
+ import io .opentelemetry .semconv .NetworkAttributes ;
22
+ import io .opentelemetry .semconv .ServerAttributes ;
23
+ import io .opentelemetry .semconv .UrlAttributes ;
24
+ import io .opentelemetry .semconv .UserAgentAttributes ;
17
25
import org .junit .jupiter .api .Test ;
18
26
import org .junit .jupiter .api .extension .RegisterExtension ;
19
27
@@ -35,7 +43,7 @@ protected void configure(ServerBuilder sb) {
35
43
new ServerExtension () {
36
44
@ Override
37
45
protected void configure (ServerBuilder sb ) {
38
- sb .service ("/" , (ctx , req ) -> createWebClient (server1 ).execute ( req ));
46
+ sb .service ("/" , (ctx , req ) -> createWebClient (server1 ).get ( "/" ));
39
47
}
40
48
};
41
49
@@ -52,10 +60,77 @@ void testHello() throws Exception {
52
60
testing .waitAndAssertTraces (
53
61
trace ->
54
62
trace .hasSpansSatisfyingExactly (
55
- span -> span .hasName ("GET" ).hasKind (SpanKind .CLIENT ).hasNoParent (),
56
- span -> span .hasName ("GET /" ).hasKind (SpanKind .SERVER ).hasParent (trace .getSpan (0 )),
57
- span -> span .hasName ("GET" ).hasKind (SpanKind .CLIENT ).hasParent (trace .getSpan (1 )),
58
63
span ->
59
- span .hasName ("GET /" ).hasKind (SpanKind .SERVER ).hasParent (trace .getSpan (2 ))));
64
+ span .hasName ("GET" )
65
+ .hasKind (SpanKind .CLIENT )
66
+ .hasNoParent ()
67
+ .hasAttributesSatisfyingExactly (
68
+ equalTo (UrlAttributes .URL_FULL , server2 .httpUri () + "/" ),
69
+ equalTo (HttpAttributes .HTTP_REQUEST_METHOD , "GET" ),
70
+ equalTo (HttpAttributes .HTTP_RESPONSE_STATUS_CODE , 200 ),
71
+ equalTo (NetworkAttributes .NETWORK_PROTOCOL_VERSION , "2" ),
72
+ equalTo (ServerAttributes .SERVER_ADDRESS , "127.0.0.1" ),
73
+ equalTo (ServerAttributes .SERVER_PORT , server2 .httpPort ()),
74
+ equalTo (NetworkAttributes .NETWORK_PEER_ADDRESS , "127.0.0.1" ),
75
+ satisfies (
76
+ NetworkAttributes .NETWORK_PEER_PORT ,
77
+ val -> val .isInstanceOf (Long .class ))),
78
+ span ->
79
+ span .hasName ("GET /" )
80
+ .hasKind (SpanKind .SERVER )
81
+ .hasParent (trace .getSpan (0 ))
82
+ .hasAttributesSatisfyingExactly (
83
+ equalTo (UrlAttributes .URL_SCHEME , "http" ),
84
+ equalTo (UrlAttributes .URL_PATH , "/" ),
85
+ equalTo (HttpAttributes .HTTP_ROUTE , "/" ),
86
+ equalTo (HttpAttributes .HTTP_REQUEST_METHOD , "GET" ),
87
+ equalTo (HttpAttributes .HTTP_RESPONSE_STATUS_CODE , 200 ),
88
+ equalTo (NetworkAttributes .NETWORK_PROTOCOL_VERSION , "2" ),
89
+ equalTo (ClientAttributes .CLIENT_ADDRESS , "127.0.0.1" ),
90
+ equalTo (ServerAttributes .SERVER_ADDRESS , "127.0.0.1" ),
91
+ equalTo (ServerAttributes .SERVER_PORT , server2 .httpPort ()),
92
+ satisfies (
93
+ UserAgentAttributes .USER_AGENT_ORIGINAL ,
94
+ val -> val .isInstanceOf (String .class )),
95
+ equalTo (NetworkAttributes .NETWORK_PEER_ADDRESS , "127.0.0.1" ),
96
+ satisfies (
97
+ NetworkAttributes .NETWORK_PEER_PORT ,
98
+ val -> val .isInstanceOf (Long .class ))),
99
+ span ->
100
+ span .hasName ("GET" )
101
+ .hasKind (SpanKind .CLIENT )
102
+ .hasParent (trace .getSpan (1 ))
103
+ .hasAttributesSatisfyingExactly (
104
+ equalTo (UrlAttributes .URL_FULL , server1 .httpUri () + "/" ),
105
+ equalTo (HttpAttributes .HTTP_REQUEST_METHOD , "GET" ),
106
+ equalTo (HttpAttributes .HTTP_RESPONSE_STATUS_CODE , 200 ),
107
+ equalTo (NetworkAttributes .NETWORK_PROTOCOL_VERSION , "2" ),
108
+ equalTo (ServerAttributes .SERVER_ADDRESS , "127.0.0.1" ),
109
+ equalTo (ServerAttributes .SERVER_PORT , server1 .httpPort ()),
110
+ equalTo (NetworkAttributes .NETWORK_PEER_ADDRESS , "127.0.0.1" ),
111
+ satisfies (
112
+ NetworkAttributes .NETWORK_PEER_PORT ,
113
+ val -> val .isInstanceOf (Long .class ))),
114
+ span ->
115
+ span .hasName ("GET /" )
116
+ .hasKind (SpanKind .SERVER )
117
+ .hasParent (trace .getSpan (2 ))
118
+ .hasAttributesSatisfyingExactly (
119
+ equalTo (UrlAttributes .URL_SCHEME , "http" ),
120
+ equalTo (UrlAttributes .URL_PATH , "/" ),
121
+ equalTo (HttpAttributes .HTTP_ROUTE , "/" ),
122
+ equalTo (HttpAttributes .HTTP_REQUEST_METHOD , "GET" ),
123
+ equalTo (HttpAttributes .HTTP_RESPONSE_STATUS_CODE , 200 ),
124
+ equalTo (NetworkAttributes .NETWORK_PROTOCOL_VERSION , "2" ),
125
+ equalTo (ClientAttributes .CLIENT_ADDRESS , "127.0.0.1" ),
126
+ equalTo (ServerAttributes .SERVER_ADDRESS , "127.0.0.1" ),
127
+ equalTo (ServerAttributes .SERVER_PORT , server1 .httpPort ()),
128
+ satisfies (
129
+ UserAgentAttributes .USER_AGENT_ORIGINAL ,
130
+ val -> val .isInstanceOf (String .class )),
131
+ equalTo (NetworkAttributes .NETWORK_PEER_ADDRESS , "127.0.0.1" ),
132
+ satisfies (
133
+ NetworkAttributes .NETWORK_PEER_PORT ,
134
+ val -> val .isInstanceOf (Long .class )))));
60
135
}
61
136
}
0 commit comments