1
- import datadog.trace.bootstrap.debugger.DebuggerContext.CodeOriginRecorder
2
1
import com.google.common.util.concurrent.MoreExecutors
3
2
import datadog.trace.agent.test.naming.VersionedNamingTestBase
4
- import datadog.trace.api.DDSpanTypes
5
3
import datadog.trace.bootstrap.debugger.DebuggerContext
6
- import datadog.trace.bootstrap.instrumentation.api.Tags
7
4
import example.GreeterGrpc
8
5
import example.Helloworld
9
6
import io.grpc.BindableService
@@ -13,17 +10,15 @@ import io.grpc.inprocess.InProcessChannelBuilder
13
10
import io.grpc.inprocess.InProcessServerBuilder
14
11
import io.grpc.stub.StreamObserver
15
12
16
- import java.lang.reflect.Method
17
13
import java.util.concurrent.CopyOnWriteArrayList
18
14
import java.util.concurrent.Executors
19
15
import java.util.concurrent.TimeUnit
20
16
import java.util.concurrent.atomic.AtomicReference
21
17
22
- import static datadog.trace.api.config.TraceInstrumentationConfig.*
18
+ import static datadog.trace.agent.test.asserts.TagsAssert.assertTags
23
19
24
- abstract class GrpcCodeOriginTest extends VersionedNamingTestBase {
25
- def codeOriginRecorder
26
20
21
+ abstract class GrpcCodeOriginTest extends VersionedNamingTestBase {
27
22
@Override
28
23
final String service () {
29
24
return null
@@ -56,7 +51,7 @@ abstract class GrpcCodeOriginTest extends VersionedNamingTestBase {
56
51
codeOriginSetup()
57
52
}
58
53
59
- def " test conversation #name" () {
54
+ def " code origin test #name" () {
60
55
setup :
61
56
62
57
def msgCount = serverMessageCount
@@ -155,77 +150,13 @@ abstract class GrpcCodeOriginTest extends VersionedNamingTestBase {
155
150
}
156
151
}. flatten(). sort()
157
152
158
-
159
- assert codeOriginRecorder. invoked
160
- assertTraces(2 ) {
161
- trace((hasClientMessageSpans() ? clientMessageCount * serverMessageCount : 0 ) + 1 ) {
162
- span {
163
- operationName clientOperation()
164
- resourceName " example.Greeter/Conversation"
165
- spanType DDSpanTypes . RPC
166
- parent()
167
- errored false
168
- tags {
169
- " $Tags . COMPONENT " " grpc-client"
170
- " $Tags . SPAN_KIND " Tags . SPAN_KIND_CLIENT
171
- " $Tags . RPC_SERVICE " " example.Greeter"
172
- " status.code" " OK"
173
- " request.type" " example.Helloworld\$ Response"
174
- " response.type" " example.Helloworld\$ Response"
175
- peerServiceFrom(Tags . RPC_SERVICE )
176
- defaultTags()
177
- }
178
- }
179
- if (hasClientMessageSpans()) {
180
- (1 .. (clientMessageCount * serverMessageCount)). each {
181
- span {
182
- operationName " grpc.message"
183
- resourceName " grpc.message"
184
- spanType DDSpanTypes . RPC
185
- childOf span(0 )
186
- errored false
187
- tags {
188
- " $Tags . COMPONENT " " grpc-client"
189
- " $Tags . SPAN_KIND " Tags . SPAN_KIND_CLIENT
190
- " message.type" " example.Helloworld\$ Response"
191
- defaultTagsNoPeerService()
192
- }
193
- }
194
- }
195
- }
196
- }
197
- trace(clientMessageCount + 1 ) {
198
- span {
199
- operationName serverOperation()
200
- resourceName " example.Greeter/Conversation"
201
- spanType DDSpanTypes . RPC
202
- childOf trace(0 ). get(0 )
203
- errored false
204
- tags {
205
- " $Tags . COMPONENT " " grpc-server"
206
- " $Tags . SPAN_KIND " Tags . SPAN_KIND_SERVER
207
- " status.code" " OK"
208
-
209
- defaultTags(true )
210
- }
211
- }
212
- clientRange. each {
213
- span {
214
- operationName " grpc.message"
215
- resourceName " grpc.message"
216
- spanType DDSpanTypes . RPC
217
- childOf span(0 )
218
- errored false
219
- tags {
220
- " $Tags . COMPONENT " " grpc-server"
221
- " $Tags . SPAN_KIND " Tags . SPAN_KIND_SERVER
222
- " message.type" " example.Helloworld\$ Response"
223
- defaultTags()
224
- }
225
- }
226
- }
227
- }
153
+ assert DebuggerContext . codeOriginRecorder != null
154
+ def span = TEST_WRITER . flatten(). find {
155
+ it. operationName. toString() == " grpc.server.request"
228
156
}
157
+ assertTags(span, {
158
+ it. codeOriginTags()
159
+ }, false )
229
160
230
161
cleanup :
231
162
channel?. shutdownNow()?. awaitTermination(10 , TimeUnit . SECONDS )
@@ -247,26 +178,6 @@ abstract class GrpcCodeOriginTest extends VersionedNamingTestBase {
247
178
clientRange = 1 .. clientMessageCount
248
179
serverRange = 1 .. serverMessageCount
249
180
}
250
-
251
-
252
- void codeOriginSetup () {
253
- injectSysConfig(CODE_ORIGIN_FOR_SPANS_ENABLED , " true" , true )
254
- codeOriginRecorder = new CodeOriginRecorder () {
255
- def invoked = false
256
- @Override
257
- String captureCodeOrigin (boolean entry ) {
258
- invoked = true
259
- return " done"
260
- }
261
-
262
- @Override
263
- String captureCodeOrigin (Method method , boolean entry ) {
264
- invoked = true
265
- return " done"
266
- }
267
- }
268
- DebuggerContext . initCodeOrigin(codeOriginRecorder)
269
- }
270
181
}
271
182
272
183
class GrpcCodeOriginForkedTest extends GrpcCodeOriginTest {
0 commit comments