JMS1: make resouce names more descriptive

This commit is contained in:
Nikolay Martynov 2018-06-20 13:55:24 -04:00
parent fe118adc6e
commit 3be5a78a53
2 changed files with 11 additions and 7 deletions

View File

@ -26,6 +26,7 @@ import io.opentracing.Tracer;
import io.opentracing.propagation.Format; import io.opentracing.propagation.Format;
import io.opentracing.tag.Tags; import io.opentracing.tag.Tags;
import io.opentracing.util.GlobalTracer; import io.opentracing.util.GlobalTracer;
import java.lang.reflect.Method;
import java.util.Collections; import java.util.Collections;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.jms.Message; import javax.jms.Message;
@ -74,6 +75,7 @@ public final class JMS1MessageConsumerInstrumentation extends Instrumenter.Confi
public static void stopSpan( public static void stopSpan(
@Advice.This final MessageConsumer consumer, @Advice.This final MessageConsumer consumer,
@Advice.Enter final long startTime, @Advice.Enter final long startTime,
@Advice.Origin final Method method,
@Advice.Return final Message message, @Advice.Return final Message message,
@Advice.Thrown final Throwable throwable) { @Advice.Thrown final Throwable throwable) {
Tracer.SpanBuilder spanBuilder = Tracer.SpanBuilder spanBuilder =
@ -86,12 +88,14 @@ public final class JMS1MessageConsumerInstrumentation extends Instrumenter.Confi
.withTag("span.origin.type", consumer.getClass().getName()) .withTag("span.origin.type", consumer.getClass().getName())
.withStartTimestamp(TimeUnit.MILLISECONDS.toMicros(startTime)); .withStartTimestamp(TimeUnit.MILLISECONDS.toMicros(startTime));
String resourceNamePrefix = "JMS " + method.getName() + ": ";
if (message == null) { if (message == null) {
spanBuilder = spanBuilder.withTag(DDTags.RESOURCE_NAME, "No message to consume"); spanBuilder = spanBuilder.withTag(DDTags.RESOURCE_NAME, resourceNamePrefix + "no message");
} else { } else {
spanBuilder = spanBuilder =
spanBuilder.withTag( spanBuilder.withTag(
DDTags.RESOURCE_NAME, "Consumed from " + toResourceName(message, null)); DDTags.RESOURCE_NAME,
resourceNamePrefix + "consumed from " + toResourceName(message, null));
final SpanContext extractedContext = final SpanContext extractedContext =
GlobalTracer.get() GlobalTracer.get()

View File

@ -55,7 +55,7 @@ class JMS1Test extends AgentTestRunner {
childOf TEST_WRITER.firstTrace().get(2) childOf TEST_WRITER.firstTrace().get(2)
serviceName "jms" serviceName "jms"
operationName "jms.consume" operationName "jms.consume"
resourceName "Consumed from $jmsResourceName" resourceName "JMS receive: consumed from $jmsResourceName"
spanType DDSpanTypes.MESSAGE_PRODUCER spanType DDSpanTypes.MESSAGE_PRODUCER
errored false errored false
@ -98,10 +98,8 @@ class JMS1Test extends AgentTestRunner {
producer.send(message) producer.send(message)
lock.countDown() lock.countDown()
TEST_WRITER.waitForTraces(2)
expect: expect:
messageRef.get().text == messageText
assertTraces(TEST_WRITER, 2) { assertTraces(TEST_WRITER, 2) {
producerTrace(it, 0, jmsResourceName) producerTrace(it, 0, jmsResourceName)
trace(1, 1) { // Consumer trace trace(1, 1) { // Consumer trace
@ -123,6 +121,8 @@ class JMS1Test extends AgentTestRunner {
} }
} }
} }
// This check needs to go after all traces have been accounted for
messageRef.get().text == messageText
cleanup: cleanup:
producer.close() producer.close()
@ -151,7 +151,7 @@ class JMS1Test extends AgentTestRunner {
parent() parent()
serviceName "jms" serviceName "jms"
operationName "jms.consume" operationName "jms.consume"
resourceName "No message to consume" resourceName "JMS receiveNoWait: no message"
spanType DDSpanTypes.MESSAGE_PRODUCER spanType DDSpanTypes.MESSAGE_PRODUCER
errored false errored false
@ -190,7 +190,7 @@ class JMS1Test extends AgentTestRunner {
parent() parent()
serviceName "jms" serviceName "jms"
operationName "jms.consume" operationName "jms.consume"
resourceName "No message to consume" resourceName "JMS receive: no message"
spanType DDSpanTypes.MESSAGE_PRODUCER spanType DDSpanTypes.MESSAGE_PRODUCER
errored false errored false