Fix flaky spring jms test (#2202)

This commit is contained in:
Lauri Tulmin 2021-02-06 02:06:09 +02:00 committed by GitHub
parent facaf8e46f
commit 22109b2719
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 4 deletions

View File

@ -8,7 +8,6 @@ import static Jms2Test.producerSpan
import com.google.common.io.Files
import io.opentelemetry.instrumentation.test.AgentInstrumentationSpecification
import java.util.concurrent.CountDownLatch
import java.util.concurrent.TimeUnit
import java.util.concurrent.atomic.AtomicReference
import javax.jms.Session
@ -102,9 +101,7 @@ class SpringTemplateJms2Test extends AgentInstrumentationSpecification {
def "send and receive message generates spans"() {
setup:
AtomicReference<String> msgId = new AtomicReference<>()
CountDownLatch countDownLatch = new CountDownLatch(1)
Thread.start {
countDownLatch.countDown()
TextMessage msg = template.receive(destination)
assert msg.text == messageText
msgId.set(msg.getJMSMessageID())
@ -115,7 +112,6 @@ class SpringTemplateJms2Test extends AgentInstrumentationSpecification {
}
}
// wait for thread to start, we expect the first span to be from receive
countDownLatch.await()
TextMessage receivedMessage = template.sendAndReceive(destination) {
session -> template.getMessageConverter().toMessage(messageText, session)
}
@ -123,6 +119,17 @@ class SpringTemplateJms2Test extends AgentInstrumentationSpecification {
expect:
receivedMessage.text == "responded!"
assertTraces(4) {
sortTraces {
def expectedOrder = ["$destinationName receive",
"$destinationName send",
"(temporary) receive",
"(temporary) send"]
// ensure that traces appear in expected order
traces.sort {a,b ->
expectedOrder.indexOf(a[0].name) - expectedOrder.indexOf(b[0].name)
}
}
trace(0, 1) {
consumerSpan(it, 0, destinationType, destinationName, msgId.get(), null, "receive")
}

View File

@ -97,6 +97,17 @@ class SpringTemplateJms1Test extends AgentInstrumentationSpecification {
expect:
receivedMessage.text == "responded!"
assertTraces(4) {
sortTraces {
def expectedOrder = ["$destinationName receive",
"$destinationName send",
"(temporary) receive",
"(temporary) send"]
// ensure that traces appear in expected order
traces.sort {a,b ->
expectedOrder.indexOf(a[0].name) - expectedOrder.indexOf(b[0].name)
}
}
trace(0, 1) {
consumerSpan(it, 0, destinationType, destinationName, msgId.get(), null, "receive")
}