-
Notifications
You must be signed in to change notification settings - Fork 331
Expand file tree
/
Copy pathVertxHttpServerForkedTest.groovy
More file actions
185 lines (155 loc) · 3.85 KB
/
VertxHttpServerForkedTest.groovy
File metadata and controls
185 lines (155 loc) · 3.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
package server
import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.ERROR
import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.EXCEPTION
import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.LOGIN
import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.NOT_FOUND
import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.PATH_PARAM
import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.SUCCESS
import datadog.trace.agent.test.asserts.TraceAssert
import datadog.trace.agent.test.base.HttpServer
import datadog.trace.agent.test.base.HttpServerTest
import datadog.trace.api.DDSpanTypes
import datadog.trace.bootstrap.instrumentation.api.Tags
import datadog.trace.instrumentation.netty41.server.NettyHttpServerDecorator
import datadog.trace.instrumentation.vertx_4_0.server.VertxDecorator
import io.vertx.core.AbstractVerticle
import io.vertx.core.Vertx
class VertxHttpServerForkedTest extends HttpServerTest<Vertx> {
@Override
HttpServer server() {
return new VertxServer(verticle(), routerBasePath())
}
protected Class<AbstractVerticle> verticle() {
VertxTestServer
}
String routerBasePath() {
return "/"
}
@Override
String component() {
return NettyHttpServerDecorator.DECORATE.component()
}
@Override
String expectedOperationName() {
"netty.request"
}
@Override
protected boolean enabledFinishTimingChecks() {
true
}
@Override
String testPathParam() {
routerBasePath() + "path/:id/param"
}
@Override
boolean testExceptionBody() {
// Vertx wraps the exception
false
}
@Override
Map<String, ?> expectedIGPathParams() {
[id: '123']
}
@Override
boolean testRequestBody() {
true
}
@Override
boolean testBodyUrlencoded() {
true
}
@Override
boolean testBodyMultipart() {
true
}
@Override
boolean testBodyJson() {
true
}
@Override
boolean testResponseBodyJson() {
true
}
@Override
boolean testBlocking() {
true
}
@Override
boolean testEncodedQuery() {
true
}
@Override
boolean testBlockingOnResponse() {
true
}
@Override
boolean isRequestBodyNoStreaming() {
true
}
@Override
Class<? extends Exception> expectedExceptionType() {
return RuntimeException
}
boolean testExceptionTag() {
true
}
@Override
boolean hasDecodedResource() {
return false
}
@Override
int spanCount(ServerEndpoint endpoint) {
if (endpoint == NOT_FOUND) {
return super.spanCount(endpoint) - 1
}
return super.spanCount(endpoint)
}
@Override
boolean hasHandlerSpan() {
true
}
@Override
boolean testSessionId() {
true
}
@Override
Serializable expectedServerSpanRoute(ServerEndpoint endpoint) {
switch (endpoint) {
case LOGIN:
case NOT_FOUND:
return null
case PATH_PARAM:
return testPathParam()
default:
return routerBasePath() + endpoint.relativePath()
}
}
@Override
void handlerSpan(TraceAssert trace, ServerEndpoint endpoint = SUCCESS) {
if (endpoint == NOT_FOUND) {
return
}
trace.span {
serviceName expectedServiceName()
operationName "vertx.route-handler"
spanType DDSpanTypes.HTTP_SERVER
errored endpoint == ERROR || endpoint == EXCEPTION
childOfPrevious()
tags {
"$Tags.COMPONENT" VertxDecorator.DECORATE.component()
"$Tags.SPAN_KIND" Tags.SPAN_KIND_SERVER
"$Tags.HTTP_STATUS" Integer
if (endpoint == EXCEPTION && this.testExceptionTag()) {
errorTags(RuntimeException, EXCEPTION.body)
}
defaultTags()
}
}
}
}
class VertxHttpServerWorkerForkedTest extends VertxHttpServerForkedTest {
@Override
HttpServer server() {
return new VertxServer(verticle(), routerBasePath(), true)
}
}