Skip to content

Commit e07dfff

Browse files
committed
Migrate tests to new TestHttpServer
1 parent 6374690 commit e07dfff

20 files changed

Lines changed: 126 additions & 310 deletions

File tree

dd-java-agent-ittests/dd-java-agent-ittests.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ dependencies {
1111

1212
testCompile deps.opentracingMock
1313
testCompile deps.testLogging
14+
testCompile deps.guava
1415

1516
testCompile group: 'org.mongodb', name: 'mongo-java-driver', version: '3.4.2'
1617
testCompile group: 'org.mongodb', name: 'mongodb-driver-async', version: '3.4.2'

dd-java-agent/instrumentation/akka-http-10.0/src/test/groovy/AkkaHttpClientInstrumentationTest.groovy

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,18 @@ import akka.stream.StreamTcpException
88
import akka.stream.javadsl.Sink
99
import akka.stream.javadsl.Source
1010
import datadog.trace.agent.test.AgentTestRunner
11-
import datadog.trace.agent.test.utils.RatpackUtils
1211
import datadog.trace.api.DDSpanTypes
1312
import datadog.trace.api.DDTags
1413
import io.opentracing.tag.Tags
1514
import scala.util.Try
15+
import spock.lang.AutoCleanup
1616
import spock.lang.Shared
1717

1818
import java.util.concurrent.CompletionStage
1919
import java.util.concurrent.ExecutionException
2020

2121
import static datadog.trace.agent.test.asserts.ListWriterAssert.assertTraces
22-
import static ratpack.groovy.test.embed.GroovyEmbeddedApp.ratpack
22+
import static datadog.trace.agent.test.server.http.TestHttpServer.httpServer
2323

2424
class AkkaHttpClientInstrumentationTest extends AgentTestRunner {
2525
static {
@@ -29,23 +29,20 @@ class AkkaHttpClientInstrumentationTest extends AgentTestRunner {
2929
private static final String MESSAGE = "an\nmultiline\nhttp\nresponse"
3030
private static final long TIMEOUT = 10000L
3131

32+
@AutoCleanup
3233
@Shared
33-
def server = ratpack {
34+
def server = httpServer {
3435
handlers {
3536
prefix("success") {
36-
all {
37-
RatpackUtils.handleDistributedRequest(context)
37+
handleDistributedRequest()
3838

39-
response.status(200).send(MESSAGE)
40-
}
39+
response.status(200).send(MESSAGE)
4140
}
4241

4342
prefix("error") {
44-
all {
45-
RatpackUtils.handleDistributedRequest(context)
43+
handleDistributedRequest()
4644

47-
throw new RuntimeException("error")
48-
}
45+
throw new RuntimeException("error")
4946
}
5047
}
5148
}
@@ -98,7 +95,7 @@ class AkkaHttpClientInstrumentationTest extends AgentTestRunner {
9895
tags {
9996
defaultTags()
10097
"$Tags.HTTP_STATUS.key" expectedStatus
101-
"$Tags.HTTP_URL.key" "${server.address}$route"
98+
"$Tags.HTTP_URL.key" "${server.address}/$route"
10299
"$Tags.HTTP_METHOD.key" "GET"
103100
"$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT
104101
"$DDTags.SPAN_TYPE" DDSpanTypes.HTTP_CLIENT
@@ -227,7 +224,7 @@ class AkkaHttpClientInstrumentationTest extends AgentTestRunner {
227224
tags {
228225
defaultTags()
229226
"$Tags.HTTP_STATUS.key" expectedStatus
230-
"$Tags.HTTP_URL.key" "${server.address}$route"
227+
"$Tags.HTTP_URL.key" "${server.address}/$route"
231228
"$Tags.HTTP_METHOD.key" "GET"
232229
"$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT
233230
"$DDTags.SPAN_TYPE" DDSpanTypes.HTTP_CLIENT

dd-java-agent/instrumentation/apache-httpclient-4.3/src/test/groovy/ApacheHttpClientTest.groovy

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import datadog.opentracing.DDSpan
22
import datadog.trace.agent.test.AgentTestRunner
33
import datadog.trace.agent.test.asserts.ListWriterAssert
44
import datadog.trace.agent.test.asserts.TraceAssert
5-
import datadog.trace.agent.test.utils.RatpackUtils
65
import datadog.trace.api.DDSpanTypes
76
import datadog.trace.api.DDTags
87
import io.opentracing.tag.Tags
@@ -13,37 +12,30 @@ import org.apache.http.client.config.RequestConfig
1312
import org.apache.http.client.methods.HttpGet
1413
import org.apache.http.impl.client.HttpClientBuilder
1514
import org.apache.http.message.BasicHeader
15+
import spock.lang.AutoCleanup
1616
import spock.lang.Shared
1717

1818
import static datadog.trace.agent.test.asserts.ListWriterAssert.assertTraces
19-
import static ratpack.groovy.test.embed.GroovyEmbeddedApp.ratpack
19+
import static datadog.trace.agent.test.server.http.TestHttpServer.httpServer
2020

2121
class ApacheHttpClientTest extends AgentTestRunner {
2222

23+
@AutoCleanup
2324
@Shared
24-
def server = ratpack {
25+
def server = httpServer {
2526
handlers {
2627
prefix("success") {
27-
get {
28-
RatpackUtils.handleDistributedRequest(context)
29-
30-
String msg = "<html><body><h1>Hello test.</h1>\n"
31-
response.status(200).send(msg)
32-
}
28+
handleDistributedRequest()
29+
String msg = "<html><body><h1>Hello test.</h1>\n"
30+
response.status(200).send(msg)
3331
}
3432
prefix("redirect") {
35-
get {
36-
RatpackUtils.handleDistributedRequest(context)
37-
38-
redirect(server.address.resolve("/success").toURL().toString())
39-
}
33+
handleDistributedRequest()
34+
redirect(server.address.resolve("/success").toURL().toString())
4035
}
4136
prefix("another-redirect") {
42-
get {
43-
RatpackUtils.handleDistributedRequest(context)
44-
45-
redirect(server.address.resolve("/redirect").toURL().toString())
46-
}
37+
handleDistributedRequest()
38+
redirect(server.address.resolve("/redirect").toURL().toString())
4739
}
4840
}
4941
}

dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/test/groovy/AWSClientTest.groovy

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ import com.amazonaws.services.s3.S3ClientOptions
99
import datadog.trace.agent.test.AgentTestRunner
1010
import datadog.trace.api.DDTags
1111
import io.opentracing.tag.Tags
12-
import ratpack.http.Headers
12+
import spock.lang.AutoCleanup
1313
import spock.lang.Shared
1414

1515
import java.util.concurrent.atomic.AtomicReference
1616

17-
import static ratpack.groovy.test.embed.GroovyEmbeddedApp.ratpack
17+
import static datadog.trace.agent.test.server.http.TestHttpServer.httpServer
1818

1919
class AWSClientTest extends AgentTestRunner {
2020
def setupSpec() {
@@ -27,15 +27,13 @@ class AWSClientTest extends AgentTestRunner {
2727
System.clearProperty(SDKGlobalConfiguration.SECRET_KEY_SYSTEM_PROPERTY)
2828
}
2929

30-
@Shared
31-
def receivedHeaders = new AtomicReference<Headers>()
3230
@Shared
3331
def responseBody = new AtomicReference<String>()
32+
@AutoCleanup
3433
@Shared
35-
def server = ratpack {
34+
def server = httpServer {
3635
handlers {
3736
all {
38-
receivedHeaders.set(request.headers)
3937
response.status(200).send(responseBody.get())
4038
}
4139
}
@@ -148,8 +146,8 @@ class AWSClientTest extends AgentTestRunner {
148146
tags["thread.id"] != null
149147
tags.size() == 13
150148

151-
receivedHeaders.get().get("x-datadog-trace-id") == "$span.traceId"
152-
receivedHeaders.get().get("x-datadog-parent-id") == "$span.spanId"
149+
server.lastRequest.headers.get("x-datadog-trace-id") == "$span.traceId"
150+
server.lastRequest.headers.get("x-datadog-parent-id") == "$span.spanId"
153151

154152
where:
155153
service | operation | method | url | handlerCount | call | body | params | client

dd-java-agent/instrumentation/aws-java-sdk-1.11.106/src/test/groovy/AWSClientTest.groovy

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ import com.amazonaws.services.s3.AmazonS3ClientBuilder
1414
import datadog.trace.agent.test.AgentTestRunner
1515
import datadog.trace.api.DDTags
1616
import io.opentracing.tag.Tags
17-
import ratpack.http.Headers
17+
import spock.lang.AutoCleanup
1818
import spock.lang.Shared
1919

2020
import java.util.concurrent.atomic.AtomicReference
2121

22-
import static ratpack.groovy.test.embed.GroovyEmbeddedApp.ratpack
22+
import static datadog.trace.agent.test.server.http.TestHttpServer.httpServer
2323

2424
class AWSClientTest extends AgentTestRunner {
2525
def setupSpec() {
@@ -35,14 +35,12 @@ class AWSClientTest extends AgentTestRunner {
3535
@Shared
3636
def credentialsProvider = new AWSStaticCredentialsProvider(new AnonymousAWSCredentials())
3737
@Shared
38-
def receivedHeaders = new AtomicReference<Headers>()
39-
@Shared
4038
def responseBody = new AtomicReference<String>()
39+
@AutoCleanup
4140
@Shared
42-
def server = ratpack {
41+
def server = httpServer {
4342
handlers {
4443
all {
45-
receivedHeaders.set(request.headers)
4644
response.status(200).send(responseBody.get())
4745
}
4846
}
@@ -177,8 +175,8 @@ class AWSClientTest extends AgentTestRunner {
177175
tags["thread.id"] != null
178176
tags.size() == 13
179177

180-
receivedHeaders.get().get("x-datadog-trace-id") == "$span.traceId"
181-
receivedHeaders.get().get("x-datadog-parent-id") == "$span.spanId"
178+
server.lastRequest.headers.get("x-datadog-trace-id") == "$span.traceId"
179+
server.lastRequest.headers.get("x-datadog-parent-id") == "$span.spanId"
182180

183181
where:
184182
service | operation | method | url | handlerCount | call | body | params | client

dd-java-agent/instrumentation/http-url-connection/src/test/groovy/HttpUrlConnectionTest.groovy

Lines changed: 9 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
11
import datadog.trace.agent.test.AgentTestRunner
2-
import datadog.trace.agent.test.utils.RatpackUtils
32
import datadog.trace.api.DDSpanTypes
43
import datadog.trace.api.DDTags
5-
import io.opentracing.propagation.TextMap
64
import io.opentracing.tag.Tags
75
import io.opentracing.util.GlobalTracer
86
import org.springframework.web.client.RestTemplate
9-
import ratpack.handling.Context
7+
import spock.lang.AutoCleanup
108
import spock.lang.Shared
119

1210
import static datadog.trace.agent.test.TestUtils.runUnderTrace
1311
import static datadog.trace.agent.test.asserts.ListWriterAssert.assertTraces
14-
import static ratpack.groovy.test.embed.GroovyEmbeddedApp.ratpack
15-
import static ratpack.http.HttpMethod.HEAD
16-
import static ratpack.http.HttpMethod.POST
12+
import static datadog.trace.agent.test.server.http.TestHttpServer.httpServer
1713

1814
class HttpUrlConnectionTest extends AgentTestRunner {
1915
static {
@@ -23,26 +19,14 @@ class HttpUrlConnectionTest extends AgentTestRunner {
2319
static final RESPONSE = "<html><body><h1>Hello test.</h1>"
2420
static final STATUS = 202
2521

22+
@AutoCleanup
2623
@Shared
27-
def server = ratpack {
24+
def server = httpServer {
2825
handlers {
2926
all {
30-
RatpackUtils.handleDistributedRequest(context)
27+
handleDistributedRequest()
3128

32-
request.body.then {
33-
if (it != null) {
34-
println "RECEIVED: $it.text"
35-
}
36-
response.status(STATUS)
37-
// Ratpack seems to be sending body with HEAD requests - RFC specifically forbids this.
38-
// This becomes a major problem with keep-alived requests - client seems to fail to parse
39-
// such response properly messing up following requests.
40-
if (request.method.isHead()) {
41-
response.send()
42-
} else {
43-
response.send(RESPONSE)
44-
}
45-
}
29+
response.status(STATUS).send(RESPONSE)
4630
}
4731
}
4832
}
@@ -221,7 +205,7 @@ class HttpUrlConnectionTest extends AgentTestRunner {
221205
setup:
222206
runUnderTrace("someTrace") {
223207
HttpURLConnection connection = server.address.toURL().openConnection()
224-
connection.setRequestMethod(HEAD.name)
208+
connection.setRequestMethod("HEAD")
225209
connection.addRequestProperty("is-dd-server", "false")
226210
assert GlobalTracer.get().scopeManager().active() != null
227211
assert connection.getResponseCode() == STATUS
@@ -310,7 +294,7 @@ class HttpUrlConnectionTest extends AgentTestRunner {
310294
setup:
311295
runUnderTrace("someTrace") {
312296
HttpURLConnection connection = server.address.toURL().openConnection()
313-
connection.setRequestMethod(POST.name)
297+
connection.setRequestMethod("POST")
314298

315299
String urlParameters = "q=ASDF&w=&e=&r=12345&t="
316300

@@ -432,7 +416,7 @@ class HttpUrlConnectionTest extends AgentTestRunner {
432416
runUnderTrace("someTrace") {
433417
RestTemplate restTemplate = new RestTemplate()
434418
String res = restTemplate.postForObject(server.address.toString(), "Hello", String)
435-
assert res == RESPONSE
419+
assert res == "$RESPONSE"
436420
}
437421

438422
expect:
@@ -505,22 +489,4 @@ class HttpUrlConnectionTest extends AgentTestRunner {
505489
}
506490
}
507491
}
508-
509-
private static class RatpackResponseAdapter implements TextMap {
510-
final Context context
511-
512-
RatpackResponseAdapter(Context context) {
513-
this.context = context
514-
}
515-
516-
@Override
517-
void put(String key, String value) {
518-
context.response.set(key, value)
519-
}
520-
521-
@Override
522-
Iterator<Map.Entry<String, String>> iterator() {
523-
return context.request.getHeaders().asMultiValueMap().entrySet().iterator()
524-
}
525-
}
526492
}

dd-java-agent/instrumentation/jax-rs-client/src/test/groovy/JaxRsClientTest.groovy

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,25 @@ import io.opentracing.tag.Tags
55
import org.apache.cxf.jaxrs.client.spec.ClientBuilderImpl
66
import org.glassfish.jersey.client.JerseyClientBuilder
77
import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder
8-
import ratpack.http.Headers
8+
import spock.lang.AutoCleanup
9+
import spock.lang.Shared
910

1011
import javax.ws.rs.client.AsyncInvoker
1112
import javax.ws.rs.client.Client
1213
import javax.ws.rs.client.Invocation
1314
import javax.ws.rs.client.WebTarget
1415
import javax.ws.rs.core.MediaType
1516
import javax.ws.rs.core.Response
16-
import java.util.concurrent.atomic.AtomicReference
1717

18-
import static ratpack.groovy.test.embed.GroovyEmbeddedApp.ratpack
18+
import static datadog.trace.agent.test.server.http.TestHttpServer.httpServer
1919

2020
class JaxRsClientTest extends AgentTestRunner {
21-
def receivedHeaders = new AtomicReference<Headers>()
22-
def server = ratpack {
21+
22+
@AutoCleanup
23+
@Shared
24+
def server = httpServer {
2325
handlers {
2426
all {
25-
receivedHeaders.set(request.headers)
2627
response.status(200).send("pong")
2728
}
2829
}
@@ -71,11 +72,8 @@ class JaxRsClientTest extends AgentTestRunner {
7172
tags[DDTags.THREAD_ID] != null
7273
tags.size() == 8
7374

74-
receivedHeaders.get().get("x-datadog-trace-id") == "$span.traceId"
75-
receivedHeaders.get().get("x-datadog-parent-id") == "$span.spanId"
76-
77-
cleanup:
78-
server.close()
75+
server.lastRequest.headers.get("x-datadog-trace-id") == "$span.traceId"
76+
server.lastRequest.headers.get("x-datadog-parent-id") == "$span.spanId"
7977

8078
where:
8179
builder | async | lib

0 commit comments

Comments
 (0)