Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,15 @@

import org.junit.Before;

import io.opentracing.mock.MockTracer;
import com.datadoghq.trace.DDTracer;
import com.datadoghq.trace.writer.ListWriter;

import io.opentracing.util.GlobalTracer;

public class AAgentIntegration {

protected static MockTracer tracer = new MockTracer();
protected static ListWriter writer = new ListWriter();
protected static DDTracer tracer = new DDTracer(writer);

@Before
public void beforeTest() throws Exception {
Expand All @@ -16,7 +19,7 @@ public void beforeTest() throws Exception {
}catch(Exception e){
//DO NOTHING IF ALREADY REGISTERED
}
tracer.reset();
writer.start();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public void test() throws Exception{
result.append(line);
}

assertThat(tracer.finishedSpans().size()).isEqualTo(2);
assertThat(writer.firstTrace().size()).isEqualTo(2);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -19,35 +19,31 @@ public void testAnnotations() {
//Test single span in new trace
SayTracedHello.sayHello();

assertThat(tracer.finishedSpans().size()).isEqualTo(1);
assertThat(tracer.finishedSpans().get(0).operationName()).isEqualTo("SAY_HELLO");
assertThat(tracer.finishedSpans().get(0).tags().get("service-name")).isEqualTo("test");
assertThat(writer.firstTrace().size()).isEqualTo(1);
assertThat(writer.firstTrace().get(0).getOperationName()).isEqualTo("SAY_HELLO");
assertThat(writer.firstTrace().get(0).getServiceName()).isEqualTo("test");

tracer.reset();
writer.start();

//Test new trace with 2 children spans
SayTracedHello.sayHELLOsayHA();
assertThat(tracer.finishedSpans().size()).isEqualTo(3);
assertThat(tracer.finishedSpans().get(0).operationName()).isEqualTo("SAY_HELLO");
assertThat(tracer.finishedSpans().get(0).tags().get("service-name")).isEqualTo("test");
assertThat(writer.firstTrace().size()).isEqualTo(3);
long parentId = writer.firstTrace().get(0).context().getTraceId();

long traceId = tracer.finishedSpans().get(0).context().traceId();
long parentId = tracer.finishedSpans().get(0).parentId();
assertThat(writer.firstTrace().get(0).getOperationName()).isEqualTo("NEW_TRACE");
assertThat(writer.firstTrace().get(0).getParentId()).isEqualTo(0);//ROOT / no parent
assertThat(writer.firstTrace().get(0).context().getParentId()).isEqualTo(0);
assertThat(writer.firstTrace().get(0).getServiceName()).isEqualTo("test2");

assertThat(tracer.finishedSpans().get(1).operationName()).isEqualTo("SAY_HA");
assertThat(tracer.finishedSpans().get(1).parentId()).isEqualTo(parentId);
assertThat(tracer.finishedSpans().get(1).context().traceId()).isEqualTo(traceId);
assertThat(tracer.finishedSpans().get(1).tags().get("span-type")).isEqualTo("DB");
assertThat(tracer.finishedSpans().get(1).tags().get("service-name")).isEqualTo("test");
assertThat(writer.firstTrace().get(1).getOperationName()).isEqualTo("SAY_HELLO");
assertThat(writer.firstTrace().get(1).getServiceName()).isEqualTo("test");
assertThat(writer.firstTrace().get(1).getParentId()).isEqualTo(parentId);

assertThat(tracer.finishedSpans().get(2).operationName()).isEqualTo("NEW_TRACE");
assertThat(tracer.finishedSpans().get(2).parentId()).isEqualTo(0);//ROOT / no parent
assertThat(tracer.finishedSpans().get(2).context().traceId()).isEqualTo(traceId);
assertThat(tracer.finishedSpans().get(2).tags().get("service-name")).isEqualTo("test2");
assertThat(writer.firstTrace().get(2).getOperationName()).isEqualTo("SAY_HA");
assertThat(writer.firstTrace().get(2).getParentId()).isEqualTo(parentId);
assertThat(writer.firstTrace().get(2).context().getSpanType()).isEqualTo("DB");


System.out.println(tracer.finishedSpans());
tracer.reset();
writer.start();
}

}
15 changes: 7 additions & 8 deletions dd-java-agent/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,13 @@
<!-- Datadog versions -->
<dd-trace.version>0.0.7-SNAPSHOT</dd-trace.version>
<!-- Opentracing versions -->
<opentracing.version>0.22.0</opentracing.version>
<ot.agent.version>0.0.12</ot.agent.version>
<ot.contrib.webservlet.version>0.0.8</ot.contrib.webservlet.version>
<ot.contrib.mongo.version>0.0.1</ot.contrib.mongo.version>
<ot.contrib.okhttp.version>0.0.4</ot.contrib.okhttp.version>
<ot.contrib.jdbc.version>0.0.1</ot.contrib.jdbc.version>
<ot.contrib.aws.version>0.0.1</ot.contrib.aws.version>
<ot.contrib.httpclient.version>0.0.1</ot.contrib.httpclient.version>
<ot.agent.version>0.1.0</ot.agent.version>
<ot.contrib.webservlet.version>0.0.9</ot.contrib.webservlet.version>
<ot.contrib.mongo.version>0.0.2</ot.contrib.mongo.version>
<ot.contrib.okhttp.version>0.0.5</ot.contrib.okhttp.version>
<ot.contrib.jdbc.version>0.0.2</ot.contrib.jdbc.version>
<ot.contrib.aws.version>0.0.2</ot.contrib.aws.version>
<ot.contrib.httpclient.version>0.0.2</ot.contrib.httpclient.version>
<!-- Others versions -->
<java.version>1.7</java.version>
</properties>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -180,18 +180,8 @@ public static void loadAnnotationsRules(String... scannedPackages) {
CURRENT_SPAN_EXISTS+
buildSpan(javassistMethod)+
buildWithTags(javassistMethod)+
CHILD_OF_CURRENT_SPAN+
START;
RuleScript script = createRuleScript("Child of ",cc, javassistMethod, Location.create(LocationType.ENTRY,""),ruleText);
generatedScripts.append(script).append("\n");

//AT ENTRY: new trace
ruleText =
CURRENT_SPAN_NOT_EXISTS+
buildSpan(javassistMethod)+
buildWithTags(javassistMethod)+
START;
script = createRuleScript("New trace ",cc, javassistMethod, Location.create(LocationType.ENTRY,""),ruleText);
RuleScript script = createRuleScript("Start Active Span ",cc, javassistMethod, Location.create(LocationType.ENTRY,""),ruleText);
generatedScripts.append(script).append("\n");

//AT EXIT
Expand Down Expand Up @@ -227,7 +217,7 @@ private static RuleScript createRuleScript(

RuleScript ruleScript = new RuleScript(
ruleNamePrefix+loc+" "+javassistMethod.getLongName(),
"^"+cc.getName(),
cc.getName(),
false,
false,
javassistMethod.getName() + Descriptor.toString(javassistMethod.getSignature()),
Expand Down Expand Up @@ -259,19 +249,16 @@ private static void loadRules(URI uri, final List<String> scriptNames,
scriptNames.add(uri.toString());
}

private static String CURRENT_SPAN_EXISTS = "IF currentSpan() != null\n";
private static String CURRENT_SPAN_NOT_EXISTS = "IF currentSpan() == null\n";
private static String CURRENT_SPAN_EXISTS = "IF TRUE\n";

private static String BUILD_SPAN = "DO\n"+"activateSpan(getTracer().buildSpan(\"";
private static String BUILD_SPAN = "DO\n"+"getTracer().buildSpan(\"";
private static String CLOSE_PARENTHESIS = "\")";

private static String CHILD_OF_CURRENT_SPAN = ".asChildOf(currentSpan())";
private static String START = ".start());";
private static String START = ".startActive();";

private static String EXIT_RULE = "IF currentSpan() != null\n"+
private static String EXIT_RULE = "IF getTracer().activeSpan() != null\n"+
"DO\n"+
"currentSpan().finish();\n"+
"deactivateCurrentSpan();";
"getTracer().activeSpan().deactivate();\n";

private static String buildSpan(CtMethod javassistMethod){
try {
Expand Down
8 changes: 5 additions & 3 deletions dd-java-agent/src/main/resources/otarules.btm
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ METHOD build()
HELPER io.opentracing.contrib.agent.OpenTracingHelper
BIND
listener:io.opentracing.contrib.mongo.TracingCommandListener =
new io.opentracing.contrib.mongo.TracingCommandListener();
new io.opentracing.contrib.mongo.TracingCommandListener(getTracer());
AT ENTRY
IF TRUE
DO
Expand All @@ -18,8 +18,9 @@ ENDRULE
RULE AWS SDK Client instrumentation 1
CLASS ^com.amazonaws.client.builder.AwsClientBuilder
METHOD build()
HELPER io.opentracing.contrib.agent.OpenTracingHelper
BIND
requestTracerHandler:io.opentracing.contrib.aws.TracingRequestHandler = new io.opentracing.contrib.aws.TracingRequestHandler();
requestTracerHandler:io.opentracing.contrib.aws.TracingRequestHandler = new io.opentracing.contrib.aws.TracingRequestHandler(getTracer());
requests:java.util.List = new java.util.ArrayList();
AT ENTRY
IF $this.requestHandlers == null
Expand All @@ -31,8 +32,9 @@ ENDRULE
RULE AWS SDK Client instrumentation 2
CLASS ^com.amazonaws.client.builder.AwsClientBuilder
METHOD build()
HELPER io.opentracing.contrib.agent.OpenTracingHelper
BIND
requestTracerHandler:io.opentracing.contrib.aws.TracingRequestHandler = new io.opentracing.contrib.aws.TracingRequestHandler();
requestTracerHandler:io.opentracing.contrib.aws.TracingRequestHandler = new io.opentracing.contrib.aws.TracingRequestHandler(getTracer());
AT ENTRY
IF $this.requestHandlers != null AND $this.requestHandlers.get(0).getClass().getCanonicalName() != "io.opentracing.contrib.aws.TracingRequestHandler"
DO
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import java.io.IOException;

import io.opentracing.contrib.agent.Trace;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
Expand All @@ -14,7 +15,14 @@
*/
public class TracedClient {


public static void main(String[] args) throws Exception{
executeCall();
System.out.println("After execute");
}

@Trace(tagsKV={"service-name","TracedClient"})
private static void executeCall() throws IOException {
OkHttpClient client = new OkHttpClient().newBuilder().build();

Request request = new Request.Builder()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ sampler:
# Skip some traces if the root span tag values matches some regexp patterns
# skipTagsPatterns: {"http.url": ".*/demo/add.*"}

# Enable custom tracing (Custom annotations for now)
enableCustomTracing: true
# Enable custom annotation tracing over a selected set of packages
enableCustomAnnotationTracingOver: ["com.example"]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just to be sure, we have to a set, at minimum, a path for the custom tracing (com.whatever...). Previously, we were able to activate this by default for all packages. So now, we can't.

I think this version is more robust than the previous one.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes this is it. Actually I figured out that it was not working on all the situations. I decided to make scanned packages declarative then....


# Disable some instrumentations
# disabledInstrumentations: ["apache http", "mongo", "jetty", "tomcat", ...]
Loading