Skip to content

Commit ca57407

Browse files
author
Andrew Kent
committed
New AgentTestRunner to auto-instrument spock tests
1 parent 9d79531 commit ca57407

12 files changed

Lines changed: 290 additions & 205 deletions

File tree

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

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

1212
testCompile deps.opentracingMock
1313

14-
testCompile project(':dd-java-agent:tooling').sourceSets.test.output
14+
testCompile project(':dd-java-agent:testing')
1515

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

dd-java-agent/integrations/jms-1/jms-1.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ dependencies {
2222

2323
compile project(':dd-trace')
2424
compile project(':dd-java-agent:tooling')
25-
testCompile project(':dd-java-agent:tooling').sourceSets.test.output
2625

26+
testCompile project(':dd-java-agent:testing')
2727
testCompile group: 'org.apache.activemq.tooling', name: 'activemq-junit', version: '5.14.5'
2828
testCompile group: 'org.apache.activemq', name: 'activemq-pool', version: '5.14.5'
2929
testCompile group: 'org.apache.activemq', name: 'activemq-broker', version: '5.14.5'

dd-java-agent/integrations/jms-1/src/test/groovy/JMS1Test.groovy

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
import com.datadoghq.trace.DDTracer
2-
import com.datadoghq.trace.writer.ListWriter
3-
import dd.test.TestUtils
1+
import dd.test.AgentTestRunner
42
import org.apache.activemq.ActiveMQConnectionFactory
53
import org.apache.activemq.ActiveMQMessageConsumer
64
import org.apache.activemq.ActiveMQMessageProducer
75
import org.apache.activemq.junit.EmbeddedActiveMQBroker
86
import spock.lang.Shared
9-
import spock.lang.Specification
107
import spock.lang.Unroll
118

129
import javax.jms.Connection
@@ -15,20 +12,11 @@ import javax.jms.TextMessage
1512
import java.util.concurrent.CountDownLatch
1613
import java.util.concurrent.atomic.AtomicReference
1714

18-
class JMS1Test extends Specification {
19-
20-
@Shared
21-
static ListWriter writer = new ListWriter()
22-
@Shared
23-
static DDTracer tracer = new DDTracer(writer)
24-
15+
class JMS1Test extends AgentTestRunner {
2516
@Shared
2617
static Session session
2718

2819
def setupSpec() {
29-
TestUtils.addByteBuddyAgent()
30-
TestUtils.registerOrReplaceGlobalTracer(tracer)
31-
3220
EmbeddedActiveMQBroker broker = new EmbeddedActiveMQBroker()
3321
broker.start()
3422
final ActiveMQConnectionFactory connectionFactory = broker.createConnectionFactory()
@@ -38,10 +26,6 @@ class JMS1Test extends Specification {
3826
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE)
3927
}
4028

41-
def setup() {
42-
writer.start()
43-
}
44-
4529
@Unroll
4630
def "sending a message to #resourceName generates spans"() {
4731
setup:
@@ -55,10 +39,10 @@ class JMS1Test extends Specification {
5539

5640
expect:
5741
receivedMessage.text == "a message"
58-
writer.size() == 2
42+
TEST_WRITER.size() == 2
5943

6044
and: // producer trace
61-
def trace = writer.firstTrace()
45+
def trace = TEST_WRITER.firstTrace()
6246
trace.size() == 3
6347

6448
and: // span 0
@@ -125,7 +109,7 @@ class JMS1Test extends Specification {
125109
tags2.size() == 5
126110

127111
and: // consumer trace
128-
def consumerTrace = writer.get(1)
112+
def consumerTrace = TEST_WRITER.get(1)
129113
consumerTrace.size() == 1
130114

131115
def consumerSpan = consumerTrace[0]
@@ -175,14 +159,14 @@ class JMS1Test extends Specification {
175159
def message = session.createTextMessage("a message")
176160
producer.send(message)
177161
lock.countDown()
178-
writer.waitForTraces(2)
162+
TEST_WRITER.waitForTraces(2)
179163

180164
expect:
181165
messageRef.get().text == "a message"
182-
writer.size() == 2
166+
TEST_WRITER.size() == 2
183167

184168
and: // producer trace
185-
def trace = writer.firstTrace()
169+
def trace = TEST_WRITER.firstTrace()
186170
trace.size() == 3
187171

188172
and: // span 0
@@ -249,7 +233,7 @@ class JMS1Test extends Specification {
249233
tags2.size() == 5
250234

251235
and: // consumer trace
252-
def consumerTrace = writer.get(1)
236+
def consumerTrace = TEST_WRITER.get(1)
253237
consumerTrace.size() == 1
254238

255239
def consumerSpan = consumerTrace[0]

dd-java-agent/integrations/jms-2/jms-2.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ dependencies {
2626

2727
compile project(':dd-trace')
2828
compile project(':dd-java-agent:tooling')
29-
testCompile project(':dd-java-agent:tooling').sourceSets.test.output
3029

30+
testCompile project(':dd-java-agent:testing')
3131
testCompile group: 'org.hornetq', name: 'hornetq-jms-client', version: '2.4.7.Final'
3232
testCompile group: 'org.hornetq', name: 'hornetq-jms-server', version: '2.4.7.Final'
3333

dd-java-agent/integrations/jms-2/src/test/groovy/JMS2Test.groovy

Lines changed: 9 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
import com.datadoghq.trace.DDTracer
2-
import com.datadoghq.trace.writer.ListWriter
1+
import dd.test.AgentTestRunner
32
import com.google.common.io.Files
4-
import dd.test.TestUtils
53
import org.hornetq.api.core.TransportConfiguration
64
import org.hornetq.api.core.client.HornetQClient
75
import org.hornetq.api.jms.HornetQJMSClient
@@ -16,27 +14,18 @@ import org.hornetq.core.server.HornetQServers
1614
import org.hornetq.jms.client.HornetQMessageConsumer
1715
import org.hornetq.jms.client.HornetQMessageProducer
1816
import spock.lang.Shared
19-
import spock.lang.Specification
2017
import spock.lang.Unroll
2118

2219
import javax.jms.Session
2320
import javax.jms.TextMessage
2421
import java.util.concurrent.CountDownLatch
2522
import java.util.concurrent.atomic.AtomicReference
2623

27-
class JMS2Test extends Specification {
28-
29-
@Shared
30-
static ListWriter writer = new ListWriter()
31-
@Shared
32-
static DDTracer tracer = new DDTracer(writer)
33-
24+
class JMS2Test extends AgentTestRunner {
3425
@Shared
3526
static Session session
3627

3728
def setupSpec() {
38-
TestUtils.addByteBuddyAgent()
39-
TestUtils.registerOrReplaceGlobalTracer(tracer)
4029
def tempDir = Files.createTempDir()
4130
tempDir.deleteOnExit()
4231

@@ -71,10 +60,6 @@ class JMS2Test extends Specification {
7160
session.run()
7261
}
7362

74-
def setup() {
75-
writer.start()
76-
}
77-
7863
@Unroll
7964
def "sending a message to #resourceName generates spans"() {
8065
setup:
@@ -88,10 +73,10 @@ class JMS2Test extends Specification {
8873

8974
expect:
9075
receivedMessage.text == "a message"
91-
writer.size() == 2
76+
TEST_WRITER.size() == 2
9277

9378
and: // producer trace
94-
def trace = writer.firstTrace()
79+
def trace = TEST_WRITER.firstTrace()
9580
trace.size() == 1
9681

9782
def producerSpan = trace[0]
@@ -115,7 +100,7 @@ class JMS2Test extends Specification {
115100
producerTags.size() == 5
116101

117102
and: // consumer trace
118-
def consumerTrace = writer.get(1)
103+
def consumerTrace = TEST_WRITER.get(1)
119104
consumerTrace.size() == 1
120105

121106
def consumerSpan = consumerTrace[0]
@@ -165,14 +150,14 @@ class JMS2Test extends Specification {
165150
def message = session.createTextMessage("a message")
166151
producer.send(message)
167152
lock.countDown()
168-
writer.waitForTraces(2)
153+
TEST_WRITER.waitForTraces(2)
169154

170155
expect:
171156
messageRef.get().text == "a message"
172-
writer.size() == 2
157+
TEST_WRITER.size() == 2
173158

174159
and: // producer trace
175-
def trace = writer.firstTrace()
160+
def trace = TEST_WRITER.firstTrace()
176161
trace.size() == 1
177162

178163
def producerSpan = trace[0]
@@ -196,7 +181,7 @@ class JMS2Test extends Specification {
196181
producerTags.size() == 5
197182

198183
and: // consumer trace
199-
def consumerTrace = writer.get(1)
184+
def consumerTrace = TEST_WRITER.get(1)
200185
consumerTrace.size() == 1
201186

202187
def consumerSpan = consumerTrace[0]

dd-java-agent/integrations/okhttp-3/okhttp-3.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,6 @@ dependencies {
2626
compile deps.bytebuddy
2727
compile deps.opentracing
2828

29+
testCompile project(':dd-java-agent:testing')
2930
testCompile group: 'com.squareup.okhttp3', name: 'okhttp', version: '3.0.0'
30-
testCompile project(':dd-java-agent:tooling').sourceSets.test.output
3131
}

dd-java-agent/integrations/okhttp-3/src/test/groovy/OkHttp3Test.groovy

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,15 @@
11
import com.datadoghq.trace.DDTags
2-
import com.datadoghq.trace.DDTracer
3-
import com.datadoghq.trace.writer.ListWriter
4-
import dd.test.TestUtils
2+
import dd.test.AgentTestRunner
53
import io.opentracing.tag.Tags
64
import okhttp3.OkHttpClient
75
import okhttp3.Request
86
import ratpack.http.Headers
9-
import spock.lang.Shared
10-
import spock.lang.Specification
117

128
import java.util.concurrent.atomic.AtomicReference
139

1410
import static ratpack.groovy.test.embed.GroovyEmbeddedApp.ratpack
1511

16-
class OkHttp3Test extends Specification {
17-
18-
@Shared
19-
def writer = new ListWriter()
20-
@Shared
21-
def tracer = new DDTracer(writer)
22-
23-
def setupSpec() {
24-
TestUtils.addByteBuddyAgent()
25-
TestUtils.registerOrReplaceGlobalTracer(tracer)
26-
}
27-
28-
def setup() {
29-
writer.start()
30-
}
12+
class OkHttp3Test extends AgentTestRunner {
3113

3214
def "sending a request creates spans and sends headers"() {
3315
setup:
@@ -49,9 +31,9 @@ class OkHttp3Test extends Specification {
4931

5032
expect:
5133
response.body.string() == "pong"
52-
writer.size() == 1
34+
TEST_WRITER.size() == 1
5335

54-
def trace = writer.firstTrace()
36+
def trace = TEST_WRITER.firstTrace()
5537
trace.size() == 2
5638

5739
and: // span 0

0 commit comments

Comments
 (0)