commit
5b4c965c5c
|
@ -33,7 +33,7 @@ function save_libs () {
|
|||
save_reports dd-java-agent
|
||||
save_reports dd-java-agent/tooling
|
||||
# Save reports for all instrumentation projects
|
||||
for integration_path in dd-java-agent/integrations/*; do
|
||||
for integration_path in dd-java-agent/instrumentation/*; do
|
||||
save_reports $integration_path
|
||||
done
|
||||
save_reports dd-java-agent-ittests
|
||||
|
|
|
@ -11,7 +11,7 @@ target
|
|||
/.gradle
|
||||
*/.gradle
|
||||
**/build/
|
||||
dd-trace-examples/**/build/
|
||||
examples/**/build/
|
||||
|
||||
# Eclipse #
|
||||
###########
|
||||
|
@ -49,9 +49,9 @@ Thumbs.db
|
|||
/bin
|
||||
/out
|
||||
*/out
|
||||
dd-java-agent/integrations/*/out
|
||||
dd-java-agent/instrumentation/*/out
|
||||
dd-java-agent/benchmark-integration/perf-test-settings.rc
|
||||
dd-trace-examples/*/out
|
||||
examples/*/out
|
||||
derby.log
|
||||
|
||||
!dd-java-agent/benchmark/releases/*.jar
|
||||
|
|
24
README.md
24
README.md
|
@ -17,7 +17,7 @@ These three things help you instrument Java applications:
|
|||
|
||||
**Note:** dd-java-agent is considered experimental. Some integrations may not activate in all cases. Additional manual instrumentation using the [Opentracing API](https://github.com/opentracing/opentracing-java) is strongly encouraged.
|
||||
|
||||
**[Datadog Tracer](https://github.com/DataDog/dd-trace-java/tree/master/dd-trace)**: an OpenTracing-compatible library that lets you trace any piece of your Java code, not just whole methods.
|
||||
**[Datadog Tracer](https://github.com/DataDog/dd-trace-java/tree/master/dd-trace-ot)**: an OpenTracing-compatible library that lets you trace any piece of your Java code, not just whole methods.
|
||||
|
||||
**[Datadog APM Agent](https://github.com/DataDog/datadog-trace-agent)**: a (non-Java) service that runs on your application servers, accepting trace data from the Datadog Java Agent and/or Datadog Tracer and sending it to Datadog. (The APM Agent is not part of this repo; it's the same Agent to which all Datadog tracers—Go, Python, etc—send data)
|
||||
|
||||
|
@ -91,12 +91,12 @@ The Java Agent lets you add a `@Trace` annotation to any method to measure its e
|
|||
|
||||
#### Setup
|
||||
|
||||
Add the `dd-trace-annotations` dependency to your project. For Maven, add this to pom.xml:
|
||||
Add the `dd-trace-api` dependency to your project. For Maven, add this to pom.xml:
|
||||
|
||||
```xml
|
||||
<dependency>
|
||||
<groupId>com.datadoghq</groupId>
|
||||
<artifactId>dd-trace-annotations</artifactId>
|
||||
<artifactId>dd-trace-api</artifactId>
|
||||
<version>{version}</version>
|
||||
</dependency>
|
||||
```
|
||||
|
@ -104,7 +104,7 @@ Add the `dd-trace-annotations` dependency to your project. For Maven, add this t
|
|||
For gradle, add:
|
||||
|
||||
```gradle
|
||||
compile group: 'com.datadoghq', name: 'dd-trace-annotations', version: {version}
|
||||
compile group: 'com.datadoghq', name: 'dd-trace-api', version: {version}
|
||||
```
|
||||
|
||||
The Java Agent lets you use `@Trace` not just for `com.example.myproject`, but also for any application whose name _begins_ like that, e.g. `com.example.myproject.foobar`. If you're tempted to list something like `["com", "io"]` to avoid having to fuss with this configuration as you add new projects, be careful; providing `@Trace`-ability to too many applications could hurt your package's build time.
|
||||
|
@ -133,7 +133,7 @@ When you don't pass an `operationName`, the Java Agent sets it to the method nam
|
|||
|
||||
### Manual Instrumentation
|
||||
|
||||
You can use the Datadog Tracer (`dd-trace`) library to measure execution times for specific pieces of code. This lets you trace your application more precisely than you can with the Java Agent alone.
|
||||
You can use the Datadog Tracer (`dd-trace-ot`) library to measure execution times for specific pieces of code. This lets you trace your application more precisely than you can with the Java Agent alone.
|
||||
|
||||
#### Setup
|
||||
|
||||
|
@ -157,7 +157,7 @@ For Maven, add this to pom.xml:
|
|||
<!-- Datadog Tracer (only needed if you do not use dd-java-agent) -->
|
||||
<dependency>
|
||||
<groupId>com.datadoghq</groupId>
|
||||
<artifactId>dd-trace</artifactId>
|
||||
<artifactId>dd-trace-ot</artifactId>
|
||||
<version>${dd-trace-java.version}</version>
|
||||
</dependency>
|
||||
```
|
||||
|
@ -167,14 +167,14 @@ For gradle, add:
|
|||
```
|
||||
compile group: 'io.opentracing', name: 'opentracing-api', version: "0.30.0"
|
||||
compile group: 'io.opentracing', name: 'opentracing-util', version: "0.30.0"
|
||||
compile group: 'com.datadoghq', name: 'dd-trace', version: "${dd-trace-java.version}"
|
||||
compile group: 'com.datadoghq', name: 'dd-trace-ot', version: "${dd-trace-java.version}"
|
||||
```
|
||||
|
||||
Configure your application using environment variables or system properties as discussed in the [config](#configuration) section.
|
||||
|
||||
#### Examples
|
||||
|
||||
Rather than referencing classes directly from `dd-trace` (other than registering `DDTracer`), we strongly suggest using the [OpenTracing API](https://github.com/opentracing/opentracing-java).
|
||||
Rather than referencing classes directly from `dd-trace-ot` (other than registering `DDTracer`), we strongly suggest using the [OpenTracing API](https://github.com/opentracing/opentracing-java).
|
||||
[Additional documentation on the api](docs/opentracing-api.md) is also available.
|
||||
|
||||
Let's look at a simple example.
|
||||
|
@ -230,9 +230,9 @@ public class Application {
|
|||
io.opentracing.util.GlobalTracer.register(tracer);
|
||||
|
||||
// OR from the API
|
||||
Writer writer = new com.datadoghq.trace.writer.DDAgentWriter();
|
||||
Sampler sampler = new com.datadoghq.trace.sampling.AllSampler();
|
||||
Tracer tracer = new com.datadoghq.trace.DDTracer(writer, sampler);
|
||||
Writer writer = new datadog.trace.api.writer.DDAgentWriter();
|
||||
Sampler sampler = new datadog.trace.api.sampling.AllSampler();
|
||||
Tracer tracer = new datadog.opentracing.DDTracer(writer, sampler);
|
||||
io.opentracing.util.GlobalTracer.register(tracer);
|
||||
|
||||
// ...
|
||||
|
@ -242,7 +242,7 @@ public class Application {
|
|||
|
||||
## Further Reading
|
||||
|
||||
- Browse the [example applications](dd-trace-examples) in this repository to see Java tracing in action
|
||||
- Browse the [example applications](examples) in this repository to see Java tracing in action
|
||||
- Read [OpenTracing's documentation](https://github.com/opentracing/opentracing-java); feel free to use the Trace Java API to customize your instrumentation.
|
||||
- Brush up on [Datadog APM Terminology](https://docs.datadoghq.com/tracing/terminology/)
|
||||
- Read the [Datadog APM FAQ](https://docs.datadoghq.com/tracing/faq/)
|
||||
|
|
|
@ -6,12 +6,16 @@ evaluationDependsOn(':dd-java-agent:tooling')
|
|||
compileTestJava.dependsOn tasks.getByPath(':dd-java-agent:tooling:testClasses')
|
||||
|
||||
dependencies {
|
||||
testCompile project(':dd-trace-annotations')
|
||||
testCompile project(':dd-trace')
|
||||
testCompile project(':dd-trace-api')
|
||||
testCompile project(':dd-trace-ot')
|
||||
|
||||
testCompile deps.opentracingMock
|
||||
|
||||
testCompile project(':dd-java-agent:testing')
|
||||
testCompile(project(':dd-java-agent:testing')) {
|
||||
// Otherwise this can bring in classes that aren't "shadowed"
|
||||
// that conflicts with those that are which are in the agent.
|
||||
transitive = false
|
||||
}
|
||||
|
||||
testCompile group: 'org.mongodb', name: 'mongo-java-driver', version: '3.4.2'
|
||||
testCompile group: 'org.mongodb', name: 'mongodb-driver-async', version: '3.4.2'
|
||||
|
@ -54,7 +58,7 @@ test {
|
|||
}
|
||||
|
||||
if (project.hasProperty("disableShadowRelocate") && disableShadowRelocate) {
|
||||
exclude 'com/datadoghq/agent/ShadowPackageRenamingTest.class'
|
||||
exclude 'datadog/trace/agent/ShadowPackageRenamingTest.class'
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package com.datadoghq.agent.integration
|
||||
package datadog.trace.agent.integration
|
||||
|
||||
import io.opentracing.ActiveSpan
|
||||
import io.opentracing.SpanContext
|
|
@ -1,10 +1,10 @@
|
|||
package com.datadoghq.agent.integration.httpclient
|
||||
package datadog.trace.agent.integration.httpclient
|
||||
|
||||
import com.datadoghq.agent.integration.TestHttpServer
|
||||
import com.datadoghq.trace.DDBaseSpan
|
||||
import com.datadoghq.trace.DDTracer
|
||||
import com.datadoghq.trace.writer.ListWriter
|
||||
import dd.test.TestUtils
|
||||
import datadog.opentracing.DDBaseSpan
|
||||
import datadog.opentracing.DDTracer
|
||||
import datadog.trace.agent.integration.TestHttpServer
|
||||
import datadog.trace.agent.test.TestUtils
|
||||
import datadog.trace.common.writer.ListWriter
|
||||
import io.opentracing.tag.Tags
|
||||
import org.apache.http.HttpResponse
|
||||
import org.apache.http.client.HttpClient
|
|
@ -1,8 +1,8 @@
|
|||
package com.datadoghq.agent.integration.jdbc
|
||||
package datadog.trace.agent.integration.jdbc
|
||||
|
||||
import com.datadoghq.trace.DDTracer
|
||||
import com.datadoghq.trace.writer.ListWriter
|
||||
import dd.test.TestUtils
|
||||
import datadog.opentracing.DDTracer
|
||||
import datadog.trace.agent.test.TestUtils
|
||||
import datadog.trace.common.writer.ListWriter
|
||||
import org.apache.derby.jdbc.EmbeddedDriver
|
||||
import org.h2.Driver
|
||||
import org.hsqldb.jdbc.JDBCDriver
|
|
@ -1,8 +1,8 @@
|
|||
package com.datadoghq.agent.integration.servlet
|
||||
package datadog.trace.agent.integration.servlet
|
||||
|
||||
import com.datadoghq.trace.DDBaseSpan
|
||||
import com.datadoghq.trace.DDTracer
|
||||
import com.datadoghq.trace.writer.ListWriter
|
||||
import datadog.opentracing.DDBaseSpan
|
||||
import datadog.opentracing.DDTracer
|
||||
import datadog.trace.common.writer.ListWriter
|
||||
import io.opentracing.util.GlobalTracer
|
||||
import okhttp3.Interceptor
|
||||
import okhttp3.OkHttpClient
|
||||
|
@ -15,6 +15,7 @@ import spock.lang.Unroll
|
|||
|
||||
import java.lang.reflect.Field
|
||||
import java.util.concurrent.CountDownLatch
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
class JettyServletTest extends Specification {
|
||||
|
||||
|
@ -27,7 +28,7 @@ class JettyServletTest extends Specification {
|
|||
@Override
|
||||
Response intercept(Interceptor.Chain chain) throws IOException {
|
||||
def response = chain.proceed(chain.request())
|
||||
JettyServletTest.latch.await()
|
||||
JettyServletTest.latch.await(10, TimeUnit.SECONDS) // don't block forever or test never fails.
|
||||
return response
|
||||
}
|
||||
})
|
|
@ -1,4 +1,4 @@
|
|||
package com.datadoghq.agent.integration.servlet
|
||||
package datadog.trace.agent.integration.servlet
|
||||
|
||||
import groovy.servlet.AbstractHttpServlet
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
package com.datadoghq.agent.integration.servlet
|
||||
package datadog.trace.agent.integration.servlet
|
||||
|
||||
import com.datadoghq.trace.DDTracer
|
||||
import com.datadoghq.trace.writer.ListWriter
|
||||
import com.google.common.io.Files
|
||||
import datadog.opentracing.DDTracer
|
||||
import datadog.trace.common.writer.ListWriter
|
||||
import io.opentracing.util.GlobalTracer
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
|
@ -1,8 +1,8 @@
|
|||
package com.datadoghq.agent;
|
||||
package datadog.trace.agent;
|
||||
|
||||
import static dd.test.TestUtils.createJarWithClasses;
|
||||
import static datadog.trace.agent.test.TestUtils.createJarWithClasses;
|
||||
|
||||
import com.datadoghq.trace.Trace;
|
||||
import datadog.trace.api.Trace;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import org.junit.Assert;
|
||||
|
@ -13,17 +13,17 @@ public class ClassLoaderTest {
|
|||
/** Assert that we can instrument classloaders which cannot resolve agent advice classes. */
|
||||
@Test
|
||||
public void instrumentClassLoadersWithoutAgentClasses() throws Exception {
|
||||
URL[] classpath = new URL[] {createJarWithClasses(ClassToInstrument.class, Trace.class)};
|
||||
URLClassLoader loader = new URLClassLoader(classpath, null);
|
||||
final URL[] classpath = new URL[] {createJarWithClasses(ClassToInstrument.class, Trace.class)};
|
||||
final URLClassLoader loader = new URLClassLoader(classpath, null);
|
||||
|
||||
try {
|
||||
loader.loadClass("com.datadoghq.agent.TracingAgent");
|
||||
loader.loadClass("datadog.agent.TracingAgent");
|
||||
Assert.fail("loader should not see agent classes.");
|
||||
} catch (ClassNotFoundException cnfe) {
|
||||
} catch (final ClassNotFoundException cnfe) {
|
||||
// Good. loader can't see agent classes.
|
||||
}
|
||||
|
||||
Class<?> instrumentedClass = loader.loadClass(ClassToInstrument.class.getName());
|
||||
final Class<?> instrumentedClass = loader.loadClass(ClassToInstrument.class.getName());
|
||||
Assert.assertEquals(
|
||||
"Class must be loaded by loader.", loader, instrumentedClass.getClassLoader());
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.datadoghq.agent;
|
||||
package datadog.trace.agent;
|
||||
|
||||
import com.google.common.collect.MapMaker;
|
||||
import org.junit.Assert;
|
||||
|
@ -8,14 +8,14 @@ public class ShadowPackageRenamingTest {
|
|||
@Test
|
||||
public void agentDependenciesRenamed() throws Exception {
|
||||
final Class<?> ddClass =
|
||||
ClassLoader.getSystemClassLoader().loadClass("com.datadoghq.agent.TracingAgent");
|
||||
ClassLoader.getSystemClassLoader().loadClass("datadog.trace.agent.TracingAgent");
|
||||
|
||||
final String userGuava =
|
||||
MapMaker.class.getProtectionDomain().getCodeSource().getLocation().getFile();
|
||||
final String agentGuavaDep =
|
||||
ddClass
|
||||
.getClassLoader()
|
||||
.loadClass("dd.deps." + MapMaker.class.getName())
|
||||
.loadClass("datadog.trace.agent.deps.google.common.collect.MapMaker")
|
||||
.getProtectionDomain()
|
||||
.getCodeSource()
|
||||
.getLocation()
|
|
@ -1,13 +1,13 @@
|
|||
package com.datadoghq.agent.instrumentation.annotation;
|
||||
package datadog.trace.agent.instrumentation.annotation;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import com.datadoghq.agent.test.SayTracedHello;
|
||||
import com.datadoghq.trace.DDBaseSpan;
|
||||
import com.datadoghq.trace.DDTracer;
|
||||
import com.datadoghq.trace.integration.ErrorFlag;
|
||||
import com.datadoghq.trace.writer.ListWriter;
|
||||
import dd.test.TestUtils;
|
||||
import datadog.opentracing.DDBaseSpan;
|
||||
import datadog.opentracing.DDTracer;
|
||||
import datadog.opentracing.decorators.ErrorFlag;
|
||||
import datadog.trace.agent.test.SayTracedHello;
|
||||
import datadog.trace.agent.test.TestUtils;
|
||||
import datadog.trace.common.writer.ListWriter;
|
||||
import io.opentracing.util.GlobalTracer;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
|
@ -32,8 +32,7 @@ public class TraceAnnotationsTest {
|
|||
SayTracedHello.sayHello();
|
||||
|
||||
assertThat(writer.firstTrace().size()).isEqualTo(1);
|
||||
assertThat(writer.firstTrace().get(0).getOperationName())
|
||||
.isEqualTo("com.datadoghq.agent.test.SayTracedHello.sayHello");
|
||||
assertThat(writer.firstTrace().get(0).getOperationName()).isEqualTo("SayTracedHello.sayHello");
|
||||
assertThat(writer.firstTrace().get(0).getServiceName()).isEqualTo("test");
|
||||
}
|
||||
|
||||
|
@ -50,8 +49,7 @@ public class TraceAnnotationsTest {
|
|||
assertThat(writer.firstTrace().get(0).context().getParentId()).isEqualTo(0);
|
||||
assertThat(writer.firstTrace().get(0).getServiceName()).isEqualTo("test2");
|
||||
|
||||
assertThat(writer.firstTrace().get(1).getOperationName())
|
||||
.isEqualTo("com.datadoghq.agent.test.SayTracedHello.sayHello");
|
||||
assertThat(writer.firstTrace().get(1).getOperationName()).isEqualTo("SayTracedHello.sayHello");
|
||||
assertThat(writer.firstTrace().get(1).getServiceName()).isEqualTo("test");
|
||||
assertThat(writer.firstTrace().get(1).getParentId()).isEqualTo(parentId);
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.datadoghq.agent.integration;
|
||||
package datadog.trace.agent.integration;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
|
@ -12,7 +12,7 @@ public class AWSInstrumentationTest {
|
|||
public void test() {
|
||||
|
||||
// Build AWS client with TracingRequestHandler e.g.
|
||||
AmazonS3ClientBuilder builder = AmazonS3ClientBuilder.standard();
|
||||
final AmazonS3ClientBuilder builder = AmazonS3ClientBuilder.standard();
|
||||
builder.withRegion(Regions.US_EAST_1);
|
||||
builder.build();
|
||||
|
|
@ -1,17 +1,17 @@
|
|||
package com.datadoghq.agent.integration;
|
||||
package datadog.trace.agent.integration;
|
||||
|
||||
import static com.datadoghq.agent.integration.MongoClientInstrumentationTest.MONGO_DB_NAME;
|
||||
import static com.datadoghq.agent.integration.MongoClientInstrumentationTest.MONGO_HOST;
|
||||
import static com.datadoghq.agent.integration.MongoClientInstrumentationTest.MONGO_PORT;
|
||||
import static datadog.trace.agent.integration.MongoClientInstrumentationTest.MONGO_DB_NAME;
|
||||
import static datadog.trace.agent.integration.MongoClientInstrumentationTest.MONGO_HOST;
|
||||
import static datadog.trace.agent.integration.MongoClientInstrumentationTest.MONGO_PORT;
|
||||
|
||||
import com.datadoghq.trace.DDBaseSpan;
|
||||
import com.datadoghq.trace.DDTracer;
|
||||
import com.datadoghq.trace.writer.ListWriter;
|
||||
import com.mongodb.async.SingleResultCallback;
|
||||
import com.mongodb.async.client.MongoClient;
|
||||
import com.mongodb.async.client.MongoClients;
|
||||
import com.mongodb.async.client.MongoDatabase;
|
||||
import dd.test.TestUtils;
|
||||
import datadog.opentracing.DDBaseSpan;
|
||||
import datadog.opentracing.DDTracer;
|
||||
import datadog.trace.agent.test.TestUtils;
|
||||
import datadog.trace.common.writer.ListWriter;
|
||||
import io.opentracing.tag.Tags;
|
||||
import java.net.InetAddress;
|
||||
import java.nio.ByteBuffer;
|
|
@ -1,12 +1,12 @@
|
|||
package com.datadoghq.agent.integration;
|
||||
package datadog.trace.agent.integration;
|
||||
|
||||
import com.datadoghq.trace.DDBaseSpan;
|
||||
import com.datadoghq.trace.DDTracer;
|
||||
import com.datadoghq.trace.writer.ListWriter;
|
||||
import com.mongodb.MongoClient;
|
||||
import com.mongodb.client.MongoCollection;
|
||||
import com.mongodb.client.MongoDatabase;
|
||||
import dd.test.TestUtils;
|
||||
import datadog.opentracing.DDBaseSpan;
|
||||
import datadog.opentracing.DDTracer;
|
||||
import datadog.trace.agent.test.TestUtils;
|
||||
import datadog.trace.common.writer.ListWriter;
|
||||
import de.flapdoodle.embed.mongo.MongodExecutable;
|
||||
import de.flapdoodle.embed.mongo.MongodProcess;
|
||||
import de.flapdoodle.embed.mongo.MongodStarter;
|
|
@ -1,4 +1,4 @@
|
|||
package com.datadoghq.agent.integration;
|
||||
package datadog.trace.agent.integration;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package com.datadoghq.agent.test;
|
||||
package datadog.trace.agent.test;
|
||||
|
||||
import com.datadoghq.trace.DDTags;
|
||||
import com.datadoghq.trace.Trace;
|
||||
import datadog.trace.api.DDTags;
|
||||
import datadog.trace.api.Trace;
|
||||
import io.opentracing.tag.StringTag;
|
||||
import io.opentracing.util.GlobalTracer;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
package dd.perftest;
|
||||
package datadog.perftest;
|
||||
|
||||
public class Worker {
|
||||
|
||||
/** Simulate work for the give number of milliseconds. */
|
||||
public static void doWork(long workTimeMS) {
|
||||
public static void doWork(final long workTimeMS) {
|
||||
final long doneTimestamp = System.currentTimeMillis() + workTimeMS;
|
||||
while (System.currentTimeMillis() < doneTimestamp) {
|
||||
// busy-wait to simulate work
|
|
@ -1,6 +1,6 @@
|
|||
package dd.perftest.jetty;
|
||||
package datadog.perftest.jetty;
|
||||
|
||||
import dd.perftest.Worker;
|
||||
import datadog.perftest.Worker;
|
||||
import java.io.IOException;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
|
@ -16,7 +16,7 @@ public class JettyPerftest {
|
|||
private static final Server jettyServer = new Server(PORT);
|
||||
private static final ServletContextHandler servletContext = new ServletContextHandler();
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
public static void main(final String[] args) throws Exception {
|
||||
servletContext.addServlet(PerfServlet.class, PATH);
|
||||
jettyServer.setHandler(servletContext);
|
||||
jettyServer.start();
|
||||
|
@ -24,11 +24,12 @@ public class JettyPerftest {
|
|||
Runtime.getRuntime()
|
||||
.addShutdownHook(
|
||||
new Thread() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
jettyServer.stop();
|
||||
jettyServer.destroy();
|
||||
} catch (Exception e) {
|
||||
} catch (final Exception e) {
|
||||
throw new IllegalStateException(e);
|
||||
}
|
||||
}
|
||||
|
@ -36,10 +37,9 @@ public class JettyPerftest {
|
|||
}
|
||||
|
||||
@WebServlet
|
||||
@SuppressWarnings("serial")
|
||||
public static class PerfServlet extends HttpServlet {
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
protected void doGet(final HttpServletRequest request, final HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
if (request.getParameter("error") != null) {
|
||||
throw new RuntimeException("some sync error");
|
|
@ -5,7 +5,7 @@ plugins {
|
|||
apply from: "${rootDir}/gradle/java.gradle"
|
||||
|
||||
dependencies {
|
||||
jmh project(':dd-trace-annotations')
|
||||
jmh project(':dd-trace-api')
|
||||
jmh group: 'net.bytebuddy', name: 'byte-buddy-agent', version: '1.7.6'
|
||||
|
||||
// Add a bunch of dependencies so instrumentation is not disabled.
|
||||
|
|
|
@ -1 +1 @@
|
|||
enableCustomAnnotationTracingOver: ["com.datadoghq.benchmark"]
|
||||
enableCustomAnnotationTracingOver: ["datadog.benchmark"]
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
package com.datadoghq.benchmark.classes;
|
||||
|
||||
public interface A {
|
||||
void a();
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
package com.datadoghq.benchmark;
|
||||
package datadog.benchmark;
|
||||
|
||||
import com.datadoghq.benchmark.classes.TracedClass;
|
||||
import com.datadoghq.benchmark.classes.UntracedClass;
|
||||
import datadog.benchmark.classes.TracedClass;
|
||||
import datadog.benchmark.classes.UntracedClass;
|
||||
import java.lang.instrument.Instrumentation;
|
||||
import java.lang.instrument.UnmodifiableClassException;
|
||||
import java.lang.reflect.Field;
|
|
@ -0,0 +1,5 @@
|
|||
package datadog.benchmark.classes;
|
||||
|
||||
public interface A {
|
||||
void a();
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package com.datadoghq.benchmark.classes;
|
||||
package datadog.benchmark.classes;
|
||||
|
||||
public interface B extends A {
|
||||
void b();
|
|
@ -1,4 +1,4 @@
|
|||
package com.datadoghq.benchmark.classes;
|
||||
package datadog.benchmark.classes;
|
||||
|
||||
public interface C extends B {
|
||||
void c();
|
|
@ -1,4 +1,4 @@
|
|||
package com.datadoghq.benchmark.classes;
|
||||
package datadog.benchmark.classes;
|
||||
|
||||
public interface D extends C {
|
||||
void d();
|
|
@ -1,4 +1,4 @@
|
|||
package com.datadoghq.benchmark.classes;
|
||||
package datadog.benchmark.classes;
|
||||
|
||||
public interface E extends D {
|
||||
void e();
|
|
@ -1,4 +1,4 @@
|
|||
package com.datadoghq.benchmark.classes;
|
||||
package datadog.benchmark.classes;
|
||||
|
||||
public abstract class F implements E {
|
||||
public abstract void f();
|
|
@ -1,6 +1,6 @@
|
|||
package com.datadoghq.benchmark.classes;
|
||||
package datadog.benchmark.classes;
|
||||
|
||||
import com.datadoghq.trace.Trace;
|
||||
import datadog.trace.api.Trace;
|
||||
|
||||
public class TracedClass extends UntracedClass {
|
||||
@Trace
|
|
@ -1,4 +1,4 @@
|
|||
package com.datadoghq.benchmark.classes;
|
||||
package datadog.benchmark.classes;
|
||||
|
||||
public class UntracedClass extends F {
|
||||
@Override
|
|
@ -1 +1 @@
|
|||
enableCustomAnnotationTracingOver: ["com.datadoghq.benchmark"]
|
||||
enableCustomAnnotationTracingOver: ["datadog.benchmark"]
|
||||
|
|
|
@ -10,16 +10,16 @@ apply from: "${rootDir}/gradle/jacoco.gradle"
|
|||
jacocoTestReport.dependsOn ':dd-java-agent-ittests:test'
|
||||
|
||||
whitelistedInstructionClasses += whitelistedBranchClasses += [
|
||||
'com.datadoghq.agent.*',
|
||||
'com.datadoghq.agent.integration.*',
|
||||
'datadog.agent.*',
|
||||
'datadog.agent.decorators.*',
|
||||
'io.opentracing.contrib.*',
|
||||
'dd.opentracing.contrib.*',
|
||||
]
|
||||
|
||||
dependencies {
|
||||
compile project(':dd-trace')
|
||||
compile project(':dd-trace-ot')
|
||||
compile project(':dd-java-agent:tooling')
|
||||
compile project(':dd-trace-annotations')
|
||||
compile project(':dd-trace-api')
|
||||
|
||||
compile deps.bytebuddy
|
||||
|
||||
|
@ -31,10 +31,10 @@ dependencies {
|
|||
|
||||
testCompile deps.opentracingMock
|
||||
}
|
||||
// add all subprojects under 'integrations' to the agent's dependencies
|
||||
// add all subprojects under 'instrumentation' to the agent's dependencies
|
||||
Project java_agent_project = project
|
||||
subprojects { subProj ->
|
||||
if (subProj.getPath().startsWith(java_agent_project.getPath() + ':integrations:')) {
|
||||
if (subProj.getPath().startsWith(java_agent_project.getPath() + ':instrumentation:')) {
|
||||
java_agent_project.dependencies {
|
||||
compile(project(subProj.getPath()))
|
||||
}
|
||||
|
@ -46,10 +46,9 @@ jar {
|
|||
|
||||
manifest {
|
||||
attributes(
|
||||
"Main-Class": "com.datadoghq.agent.DDJavaAgentInfo",
|
||||
// I don't think we want to define this since we can't really load after startup:
|
||||
//"Agent-Class": "com.datadoghq.trace.agent.TracingAgent",
|
||||
"Premain-Class": "com.datadoghq.agent.TracingAgent",
|
||||
"Main-Class": "datadog.trace.agent.DDJavaAgentInfo",
|
||||
"Agent-Class": "datadog.trace.agent.TracingAgent",
|
||||
"Premain-Class": "datadog.trace.agent.TracingAgent",
|
||||
"Can-Redefine-Classes": true,
|
||||
"Can-Retransform-Classes": true,
|
||||
)
|
||||
|
@ -61,24 +60,26 @@ shadowJar {
|
|||
|
||||
mergeServiceFiles() // This triggers shadow to also apply the relocate rules below to the service files.
|
||||
|
||||
relocate 'org.slf4j', 'dd.slf4j' // Prevents conflict with other SLF4J instances. Important for premain.
|
||||
relocate 'org.slf4j', 'datadog.slf4j' // Prevents conflict with other SLF4J instances. Important for premain.
|
||||
|
||||
if (!project.hasProperty("disableShadowRelocate") || !disableShadowRelocate) {
|
||||
|
||||
// These need to be relocated to prevent conflicts in case the regular dd-trace is already on the classpath.
|
||||
relocate('com.datadoghq.trace', 'com.datadoghq.agent.tracer') {
|
||||
relocate('datadog.trace.api', 'datadog.trace.agent.api') {
|
||||
// We want to ensure to not miss if a user is using the annotation.
|
||||
exclude 'com.datadoghq.trace.Trace'
|
||||
exclude 'datadog.trace.api.Trace'
|
||||
}
|
||||
relocate 'datadog.trace.common', 'datadog.trace.agent.common'
|
||||
relocate 'datadog.opentracing', 'datadog.trace.agent.ot'
|
||||
|
||||
relocate 'io.opentracing.contrib', 'dd.opentracing.contrib'
|
||||
relocate 'io.opentracing.contrib', 'datadog.trace.agent.opentracing.contrib'
|
||||
|
||||
relocate 'org.yaml', 'dd.deps.org.yaml'
|
||||
relocate 'org.msgpack', 'dd.deps.org.msgpack'
|
||||
relocate 'com.fasterxml', 'dd.deps.com.fasterxml'
|
||||
relocate 'org.yaml', 'datadog.trace.agent.deps.yaml'
|
||||
relocate 'org.msgpack', 'datadog.trace.agent.deps.msgpack'
|
||||
relocate 'com.fasterxml', 'datadog.trace.agent.deps.fasterxml'
|
||||
|
||||
relocate 'net.bytebuddy', 'dd.deps.net.bytebuddy'
|
||||
relocate('com.google', 'dd.deps.com.google') {
|
||||
relocate 'net.bytebuddy', 'datadog.trace.agent.deps.bytebuddy'
|
||||
relocate('com.google', 'datadog.trace.agent.deps.google') {
|
||||
// This is used in the Cassandra Cluster.connectAsync signature so we can't relocate it. :fingers_crossed:
|
||||
exclude 'com.google.common.util.concurrent.ListenableFuture'
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ apply from: "${rootDir}/gradle/java.gradle"
|
|||
dependencies {
|
||||
compileOnly group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.3'
|
||||
|
||||
compile project(':dd-trace')
|
||||
compile project(':dd-trace-ot')
|
||||
compile project(':dd-java-agent:tooling')
|
||||
|
||||
compile deps.bytebuddy
|
|
@ -1,12 +1,13 @@
|
|||
package dd.inst.apachehttpclient;
|
||||
package datadog.trace.instrumentation.apachehttpclient;
|
||||
|
||||
import static dd.trace.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.*;
|
||||
import static datadog.trace.agent.tooling.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.named;
|
||||
|
||||
import com.google.auto.service.AutoService;
|
||||
import dd.trace.DDAdvice;
|
||||
import dd.trace.HelperInjector;
|
||||
import dd.trace.Instrumenter;
|
||||
import datadog.trace.agent.tooling.DDAdvice;
|
||||
import datadog.trace.agent.tooling.HelperInjector;
|
||||
import datadog.trace.agent.tooling.Instrumenter;
|
||||
import io.opentracing.util.GlobalTracer;
|
||||
import net.bytebuddy.agent.builder.AgentBuilder;
|
||||
import net.bytebuddy.asm.Advice;
|
||||
|
@ -17,7 +18,7 @@ import org.apache.http.impl.execchain.ClientExecChain;
|
|||
public class ApacheHttpClientInstrumentation implements Instrumenter {
|
||||
|
||||
@Override
|
||||
public AgentBuilder instrument(AgentBuilder agentBuilder) {
|
||||
public AgentBuilder instrument(final AgentBuilder agentBuilder) {
|
||||
return agentBuilder
|
||||
.type(
|
||||
named("org.apache.http.impl.client.HttpClientBuilder"),
|
||||
|
@ -31,7 +32,9 @@ public class ApacheHttpClientInstrumentation implements Instrumenter {
|
|||
"org.apache.http.client.protocol.HttpClientContext",
|
||||
"org.apache.http.conn.routing.HttpRoute",
|
||||
"org.apache.http.impl.execchain.ClientExecChain"))
|
||||
.transform(new HelperInjector("dd.inst.apachehttpclient.DDTracingClientExec"))
|
||||
.transform(
|
||||
new HelperInjector(
|
||||
"datadog.trace.instrumentation.apachehttpclient.DDTracingClientExec"))
|
||||
.transform(
|
||||
DDAdvice.create()
|
||||
.advice(
|
|
@ -1,4 +1,4 @@
|
|||
package dd.inst.apachehttpclient;
|
||||
package datadog.trace.instrumentation.apachehttpclient;
|
||||
|
||||
import io.opentracing.ActiveSpan;
|
||||
import io.opentracing.Tracer;
|
|
@ -21,7 +21,7 @@ dependencies {
|
|||
transitive = false
|
||||
}
|
||||
|
||||
compile project(':dd-trace')
|
||||
compile project(':dd-trace-ot')
|
||||
compile project(':dd-java-agent:tooling')
|
||||
|
||||
compile deps.bytebuddy
|
|
@ -1,6 +1,6 @@
|
|||
package dd.inst.aws;
|
||||
package datadog.trace.instrumentation.aws;
|
||||
|
||||
import static dd.trace.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static datadog.trace.agent.tooling.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.named;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
|
||||
|
@ -8,9 +8,9 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
|
|||
import com.amazonaws.client.builder.AwsClientBuilder;
|
||||
import com.amazonaws.handlers.RequestHandler2;
|
||||
import com.google.auto.service.AutoService;
|
||||
import dd.trace.DDAdvice;
|
||||
import dd.trace.HelperInjector;
|
||||
import dd.trace.Instrumenter;
|
||||
import datadog.trace.agent.tooling.DDAdvice;
|
||||
import datadog.trace.agent.tooling.HelperInjector;
|
||||
import datadog.trace.agent.tooling.Instrumenter;
|
||||
import io.opentracing.contrib.aws.TracingRequestHandler;
|
||||
import io.opentracing.util.GlobalTracer;
|
||||
import java.util.Arrays;
|
|
@ -37,7 +37,7 @@ dependencies {
|
|||
transitive = false
|
||||
}
|
||||
|
||||
compile project(':dd-trace')
|
||||
compile project(':dd-trace-ot')
|
||||
compile project(':dd-java-agent:tooling')
|
||||
|
||||
compile deps.bytebuddy
|
|
@ -1,13 +1,16 @@
|
|||
package dd.inst.datastax.cassandra;
|
||||
package datadog.trace.instrumentation.datastax.cassandra;
|
||||
|
||||
import static dd.trace.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.*;
|
||||
import static datadog.trace.agent.tooling.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isPrivate;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.named;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
|
||||
|
||||
import com.datastax.driver.core.Session;
|
||||
import com.google.auto.service.AutoService;
|
||||
import dd.trace.DDAdvice;
|
||||
import dd.trace.HelperInjector;
|
||||
import dd.trace.Instrumenter;
|
||||
import datadog.trace.agent.tooling.DDAdvice;
|
||||
import datadog.trace.agent.tooling.HelperInjector;
|
||||
import datadog.trace.agent.tooling.Instrumenter;
|
||||
import io.opentracing.Tracer;
|
||||
import io.opentracing.util.GlobalTracer;
|
||||
import java.lang.reflect.Constructor;
|
||||
|
@ -17,7 +20,7 @@ import net.bytebuddy.asm.Advice;
|
|||
@AutoService(Instrumenter.class)
|
||||
public class CassandraClientInstrumentation implements Instrumenter {
|
||||
@Override
|
||||
public AgentBuilder instrument(AgentBuilder agentBuilder) {
|
||||
public AgentBuilder instrument(final AgentBuilder agentBuilder) {
|
||||
return agentBuilder
|
||||
.type(
|
||||
named("com.datastax.driver.core.Cluster$Manager"),
|
||||
|
@ -68,8 +71,8 @@ public class CassandraClientInstrumentation implements Instrumenter {
|
|||
return;
|
||||
}
|
||||
|
||||
Class<?> clazz = Class.forName("io.opentracing.contrib.cassandra.TracingSession");
|
||||
Constructor<?> constructor = clazz.getDeclaredConstructor(Session.class, Tracer.class);
|
||||
final Class<?> clazz = Class.forName("io.opentracing.contrib.cassandra.TracingSession");
|
||||
final Constructor<?> constructor = clazz.getDeclaredConstructor(Session.class, Tracer.class);
|
||||
constructor.setAccessible(true);
|
||||
session = (Session) constructor.newInstance(session, GlobalTracer.get());
|
||||
}
|
|
@ -1,8 +1,8 @@
|
|||
import com.datadoghq.trace.DDBaseSpan
|
||||
import com.datadoghq.trace.DDTracer
|
||||
import com.datastax.driver.core.Cluster
|
||||
import com.datastax.driver.core.Session
|
||||
import dd.test.AgentTestRunner
|
||||
import datadog.opentracing.DDBaseSpan
|
||||
import datadog.opentracing.DDTracer
|
||||
import datadog.trace.agent.test.AgentTestRunner
|
||||
import io.opentracing.tag.Tags
|
||||
import org.cassandraunit.utils.EmbeddedCassandraServerHelper
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
apply from: "${rootDir}/gradle/java.gradle"
|
||||
|
||||
dependencies {
|
||||
compile project(':dd-trace')
|
||||
compile project(':dd-trace-ot')
|
||||
compile project(':dd-java-agent:tooling')
|
||||
|
||||
compile deps.bytebuddy
|
|
@ -1,4 +1,4 @@
|
|||
package dd.trace.instrumentation.jdbc;
|
||||
package datadog.trace.instrumentation.jdbc;
|
||||
|
||||
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isConstructor;
|
||||
|
@ -10,8 +10,8 @@ import static net.bytebuddy.matcher.ElementMatchers.returns;
|
|||
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
|
||||
|
||||
import com.google.auto.service.AutoService;
|
||||
import dd.trace.DDAdvice;
|
||||
import dd.trace.Instrumenter;
|
||||
import datadog.trace.agent.tooling.DDAdvice;
|
||||
import datadog.trace.agent.tooling.Instrumenter;
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.util.Map;
|
|
@ -1,4 +1,4 @@
|
|||
package dd.trace.instrumentation.jdbc;
|
||||
package datadog.trace.instrumentation.jdbc;
|
||||
|
||||
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isInterface;
|
||||
|
@ -8,10 +8,10 @@ import static net.bytebuddy.matcher.ElementMatchers.named;
|
|||
import static net.bytebuddy.matcher.ElementMatchers.not;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
|
||||
|
||||
import com.datadoghq.trace.DDTags;
|
||||
import com.google.auto.service.AutoService;
|
||||
import dd.trace.DDAdvice;
|
||||
import dd.trace.Instrumenter;
|
||||
import datadog.trace.agent.tooling.DDAdvice;
|
||||
import datadog.trace.agent.tooling.Instrumenter;
|
||||
import datadog.trace.api.DDTags;
|
||||
import io.opentracing.ActiveSpan;
|
||||
import io.opentracing.NoopActiveSpanSource;
|
||||
import io.opentracing.tag.Tags;
|
|
@ -1,4 +1,4 @@
|
|||
package dd.trace.instrumentation.jdbc;
|
||||
package datadog.trace.instrumentation.jdbc;
|
||||
|
||||
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isInterface;
|
||||
|
@ -8,10 +8,10 @@ import static net.bytebuddy.matcher.ElementMatchers.named;
|
|||
import static net.bytebuddy.matcher.ElementMatchers.not;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
|
||||
|
||||
import com.datadoghq.trace.DDTags;
|
||||
import com.google.auto.service.AutoService;
|
||||
import dd.trace.DDAdvice;
|
||||
import dd.trace.Instrumenter;
|
||||
import datadog.trace.agent.tooling.DDAdvice;
|
||||
import datadog.trace.agent.tooling.Instrumenter;
|
||||
import datadog.trace.api.DDTags;
|
||||
import io.opentracing.ActiveSpan;
|
||||
import io.opentracing.NoopActiveSpanSource;
|
||||
import io.opentracing.tag.Tags;
|
|
@ -20,7 +20,7 @@ dependencies {
|
|||
compile deps.opentracing
|
||||
compile deps.autoservice
|
||||
|
||||
compile project(':dd-trace')
|
||||
compile project(':dd-trace-ot')
|
||||
compile project(':dd-java-agent:tooling')
|
||||
|
||||
testCompile project(':dd-java-agent:testing')
|
|
@ -1,4 +1,4 @@
|
|||
package dd.inst.jms.util;
|
||||
package datadog.trace.instrumentation.jms.util;
|
||||
|
||||
import javax.jms.Destination;
|
||||
import javax.jms.Message;
|
|
@ -1,4 +1,4 @@
|
|||
package dd.inst.jms.util;
|
||||
package datadog.trace.instrumentation.jms.util;
|
||||
|
||||
import io.opentracing.propagation.TextMap;
|
||||
import java.util.Enumeration;
|
|
@ -1,7 +1,7 @@
|
|||
package dd.inst.jms1;
|
||||
package datadog.trace.instrumentation.jms1;
|
||||
|
||||
import static dd.inst.jms.util.JmsUtil.toResourceName;
|
||||
import static dd.trace.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static datadog.trace.agent.tooling.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static datadog.trace.instrumentation.jms.util.JmsUtil.toResourceName;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isInterface;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
|
||||
|
@ -9,12 +9,12 @@ import static net.bytebuddy.matcher.ElementMatchers.named;
|
|||
import static net.bytebuddy.matcher.ElementMatchers.not;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
|
||||
|
||||
import com.datadoghq.trace.DDTags;
|
||||
import com.google.auto.service.AutoService;
|
||||
import dd.inst.jms.util.MessagePropertyTextMap;
|
||||
import dd.trace.DDAdvice;
|
||||
import dd.trace.HelperInjector;
|
||||
import dd.trace.Instrumenter;
|
||||
import datadog.trace.agent.tooling.DDAdvice;
|
||||
import datadog.trace.agent.tooling.HelperInjector;
|
||||
import datadog.trace.agent.tooling.Instrumenter;
|
||||
import datadog.trace.api.DDTags;
|
||||
import datadog.trace.instrumentation.jms.util.MessagePropertyTextMap;
|
||||
import io.opentracing.ActiveSpan;
|
||||
import io.opentracing.SpanContext;
|
||||
import io.opentracing.propagation.Format;
|
||||
|
@ -30,7 +30,9 @@ import net.bytebuddy.asm.Advice;
|
|||
@AutoService(Instrumenter.class)
|
||||
public final class JMS1MessageConsumerInstrumentation implements Instrumenter {
|
||||
public static final HelperInjector JMS1_HELPER_INJECTOR =
|
||||
new HelperInjector("dd.inst.jms.util.JmsUtil", "dd.inst.jms.util.MessagePropertyTextMap");
|
||||
new HelperInjector(
|
||||
"datadog.trace.instrumentation.jms.util.JmsUtil",
|
||||
"datadog.trace.instrumentation.jms.util.MessagePropertyTextMap");
|
||||
|
||||
@Override
|
||||
public AgentBuilder instrument(final AgentBuilder agentBuilder) {
|
|
@ -1,7 +1,7 @@
|
|||
package dd.inst.jms1;
|
||||
package datadog.trace.instrumentation.jms1;
|
||||
|
||||
import static dd.inst.jms.util.JmsUtil.toResourceName;
|
||||
import static dd.trace.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static datadog.trace.agent.tooling.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static datadog.trace.instrumentation.jms.util.JmsUtil.toResourceName;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isInterface;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
|
||||
|
@ -9,11 +9,11 @@ import static net.bytebuddy.matcher.ElementMatchers.named;
|
|||
import static net.bytebuddy.matcher.ElementMatchers.not;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
|
||||
|
||||
import com.datadoghq.trace.DDTags;
|
||||
import com.google.auto.service.AutoService;
|
||||
import dd.inst.jms.util.MessagePropertyTextMap;
|
||||
import dd.trace.DDAdvice;
|
||||
import dd.trace.Instrumenter;
|
||||
import datadog.trace.agent.tooling.DDAdvice;
|
||||
import datadog.trace.agent.tooling.Instrumenter;
|
||||
import datadog.trace.api.DDTags;
|
||||
import datadog.trace.instrumentation.jms.util.MessagePropertyTextMap;
|
||||
import io.opentracing.ActiveSpan;
|
||||
import io.opentracing.SpanContext;
|
||||
import io.opentracing.propagation.Format;
|
|
@ -1,7 +1,7 @@
|
|||
package dd.inst.jms1;
|
||||
package datadog.trace.instrumentation.jms1;
|
||||
|
||||
import static dd.inst.jms.util.JmsUtil.toResourceName;
|
||||
import static dd.trace.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static datadog.trace.agent.tooling.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static datadog.trace.instrumentation.jms.util.JmsUtil.toResourceName;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isInterface;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
|
||||
|
@ -9,11 +9,11 @@ import static net.bytebuddy.matcher.ElementMatchers.named;
|
|||
import static net.bytebuddy.matcher.ElementMatchers.not;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
|
||||
|
||||
import com.datadoghq.trace.DDTags;
|
||||
import com.google.auto.service.AutoService;
|
||||
import dd.inst.jms.util.MessagePropertyTextMap;
|
||||
import dd.trace.DDAdvice;
|
||||
import dd.trace.Instrumenter;
|
||||
import datadog.trace.agent.tooling.DDAdvice;
|
||||
import datadog.trace.agent.tooling.Instrumenter;
|
||||
import datadog.trace.api.DDTags;
|
||||
import datadog.trace.instrumentation.jms.util.MessagePropertyTextMap;
|
||||
import io.opentracing.ActiveSpan;
|
||||
import io.opentracing.propagation.Format;
|
||||
import io.opentracing.tag.Tags;
|
|
@ -1,4 +1,4 @@
|
|||
import dd.test.AgentTestRunner
|
||||
import datadog.trace.agent.test.AgentTestRunner
|
||||
import org.apache.activemq.ActiveMQConnectionFactory
|
||||
import org.apache.activemq.ActiveMQMessageConsumer
|
||||
import org.apache.activemq.ActiveMQMessageProducer
|
|
@ -15,7 +15,7 @@ apply from: "${rootDir}/gradle/java.gradle"
|
|||
|
||||
dependencies {
|
||||
// use jms1 helpers
|
||||
compile(project(':dd-java-agent:integrations:jms-1')) {
|
||||
compile(project(':dd-java-agent:instrumentation:jms-1')) {
|
||||
transitive = false
|
||||
}
|
||||
compileOnly group: 'javax.jms', name: 'javax.jms-api', version: '2.0.1'
|
||||
|
@ -24,7 +24,7 @@ dependencies {
|
|||
compile deps.opentracing
|
||||
compile deps.autoservice
|
||||
|
||||
compile project(':dd-trace')
|
||||
compile project(':dd-trace-ot')
|
||||
compile project(':dd-java-agent:tooling')
|
||||
|
||||
testCompile project(':dd-java-agent:testing')
|
|
@ -1,7 +1,7 @@
|
|||
package dd.inst.jms2;
|
||||
package datadog.trace.instrumentation.jms2;
|
||||
|
||||
import static dd.inst.jms.util.JmsUtil.toResourceName;
|
||||
import static dd.trace.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static datadog.trace.agent.tooling.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static datadog.trace.instrumentation.jms.util.JmsUtil.toResourceName;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isInterface;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
|
||||
|
@ -9,12 +9,12 @@ import static net.bytebuddy.matcher.ElementMatchers.named;
|
|||
import static net.bytebuddy.matcher.ElementMatchers.not;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
|
||||
|
||||
import com.datadoghq.trace.DDTags;
|
||||
import com.google.auto.service.AutoService;
|
||||
import dd.inst.jms.util.MessagePropertyTextMap;
|
||||
import dd.trace.DDAdvice;
|
||||
import dd.trace.HelperInjector;
|
||||
import dd.trace.Instrumenter;
|
||||
import datadog.trace.agent.tooling.DDAdvice;
|
||||
import datadog.trace.agent.tooling.HelperInjector;
|
||||
import datadog.trace.agent.tooling.Instrumenter;
|
||||
import datadog.trace.api.DDTags;
|
||||
import datadog.trace.instrumentation.jms.util.MessagePropertyTextMap;
|
||||
import io.opentracing.ActiveSpan;
|
||||
import io.opentracing.SpanContext;
|
||||
import io.opentracing.propagation.Format;
|
||||
|
@ -30,7 +30,9 @@ import net.bytebuddy.asm.Advice;
|
|||
@AutoService(Instrumenter.class)
|
||||
public final class JMS2MessageConsumerInstrumentation implements Instrumenter {
|
||||
public static final HelperInjector JMS2_HELPER_INJECTOR =
|
||||
new HelperInjector("dd.inst.jms.util.JmsUtil", "dd.inst.jms.util.MessagePropertyTextMap");
|
||||
new HelperInjector(
|
||||
"datadog.trace.instrumentation.jms.util.JmsUtil",
|
||||
"datadog.trace.instrumentation.jms.util.MessagePropertyTextMap");
|
||||
|
||||
@Override
|
||||
public AgentBuilder instrument(final AgentBuilder agentBuilder) {
|
|
@ -1,7 +1,7 @@
|
|||
package dd.inst.jms2;
|
||||
package datadog.trace.instrumentation.jms2;
|
||||
|
||||
import static dd.inst.jms.util.JmsUtil.toResourceName;
|
||||
import static dd.trace.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static datadog.trace.agent.tooling.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static datadog.trace.instrumentation.jms.util.JmsUtil.toResourceName;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isInterface;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
|
||||
|
@ -9,11 +9,11 @@ import static net.bytebuddy.matcher.ElementMatchers.named;
|
|||
import static net.bytebuddy.matcher.ElementMatchers.not;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
|
||||
|
||||
import com.datadoghq.trace.DDTags;
|
||||
import com.google.auto.service.AutoService;
|
||||
import dd.inst.jms.util.MessagePropertyTextMap;
|
||||
import dd.trace.DDAdvice;
|
||||
import dd.trace.Instrumenter;
|
||||
import datadog.trace.agent.tooling.DDAdvice;
|
||||
import datadog.trace.agent.tooling.Instrumenter;
|
||||
import datadog.trace.api.DDTags;
|
||||
import datadog.trace.instrumentation.jms.util.MessagePropertyTextMap;
|
||||
import io.opentracing.ActiveSpan;
|
||||
import io.opentracing.SpanContext;
|
||||
import io.opentracing.propagation.Format;
|
|
@ -1,7 +1,7 @@
|
|||
package dd.inst.jms2;
|
||||
package datadog.trace.instrumentation.jms2;
|
||||
|
||||
import static dd.inst.jms.util.JmsUtil.toResourceName;
|
||||
import static dd.trace.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static datadog.trace.agent.tooling.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static datadog.trace.instrumentation.jms.util.JmsUtil.toResourceName;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isInterface;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
|
||||
|
@ -9,11 +9,11 @@ import static net.bytebuddy.matcher.ElementMatchers.named;
|
|||
import static net.bytebuddy.matcher.ElementMatchers.not;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
|
||||
|
||||
import com.datadoghq.trace.DDTags;
|
||||
import com.google.auto.service.AutoService;
|
||||
import dd.inst.jms.util.MessagePropertyTextMap;
|
||||
import dd.trace.DDAdvice;
|
||||
import dd.trace.Instrumenter;
|
||||
import datadog.trace.agent.tooling.DDAdvice;
|
||||
import datadog.trace.agent.tooling.Instrumenter;
|
||||
import datadog.trace.api.DDTags;
|
||||
import datadog.trace.instrumentation.jms.util.MessagePropertyTextMap;
|
||||
import io.opentracing.ActiveSpan;
|
||||
import io.opentracing.propagation.Format;
|
||||
import io.opentracing.tag.Tags;
|
|
@ -1,5 +1,5 @@
|
|||
import dd.test.AgentTestRunner
|
||||
import com.google.common.io.Files
|
||||
import datadog.trace.agent.test.AgentTestRunner
|
||||
import org.hornetq.api.core.TransportConfiguration
|
||||
import org.hornetq.api.core.client.HornetQClient
|
||||
import org.hornetq.api.jms.HornetQJMSClient
|
|
@ -15,7 +15,7 @@ apply from: "${rootDir}/gradle/java.gradle"
|
|||
dependencies {
|
||||
compileOnly group: 'org.mongodb', name: 'mongo-java-driver', version: '3.4.2'
|
||||
|
||||
compile project(':dd-trace')
|
||||
compile project(':dd-trace-ot')
|
||||
compile project(':dd-java-agent:tooling')
|
||||
|
||||
compile deps.bytebuddy
|
|
@ -1,10 +1,10 @@
|
|||
package dd.inst.mongo;
|
||||
package datadog.trace.instrumentation.mongo;
|
||||
|
||||
import com.datadoghq.trace.DDTags;
|
||||
import com.mongodb.event.CommandFailedEvent;
|
||||
import com.mongodb.event.CommandListener;
|
||||
import com.mongodb.event.CommandStartedEvent;
|
||||
import com.mongodb.event.CommandSucceededEvent;
|
||||
import datadog.trace.api.DDTags;
|
||||
import io.opentracing.Span;
|
||||
import io.opentracing.Tracer;
|
||||
import io.opentracing.tag.Tags;
|
|
@ -1,4 +1,4 @@
|
|||
package dd.inst.mongo;
|
||||
package datadog.trace.instrumentation.mongo;
|
||||
|
||||
import static net.bytebuddy.matcher.ElementMatchers.declaresMethod;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
|
||||
|
@ -8,9 +8,9 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
|
|||
|
||||
import com.google.auto.service.AutoService;
|
||||
import com.mongodb.MongoClientOptions;
|
||||
import dd.trace.DDAdvice;
|
||||
import dd.trace.HelperInjector;
|
||||
import dd.trace.Instrumenter;
|
||||
import datadog.trace.agent.tooling.DDAdvice;
|
||||
import datadog.trace.agent.tooling.HelperInjector;
|
||||
import datadog.trace.agent.tooling.Instrumenter;
|
||||
import io.opentracing.util.GlobalTracer;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.Collections;
|
||||
|
@ -21,7 +21,7 @@ import net.bytebuddy.description.type.TypeDescription;
|
|||
@AutoService(Instrumenter.class)
|
||||
public final class MongoClientInstrumentation implements Instrumenter {
|
||||
public static final HelperInjector MONGO_HELPER_INJECTOR =
|
||||
new HelperInjector("dd.inst.mongo.DDTracingCommandListener");
|
||||
new HelperInjector("datadog.trace.instrumentation.mongo.DDTracingCommandListener");
|
||||
|
||||
@Override
|
||||
public AgentBuilder instrument(final AgentBuilder agentBuilder) {
|
|
@ -1,14 +1,14 @@
|
|||
package dd.inst.mongo;
|
||||
package datadog.trace.instrumentation.mongo;
|
||||
|
||||
import static org.assertj.core.api.Java6Assertions.assertThat;
|
||||
|
||||
import com.datadoghq.trace.DDSpan;
|
||||
import com.datadoghq.trace.DDTracer;
|
||||
import com.mongodb.ServerAddress;
|
||||
import com.mongodb.connection.ClusterId;
|
||||
import com.mongodb.connection.ConnectionDescription;
|
||||
import com.mongodb.connection.ServerId;
|
||||
import com.mongodb.event.CommandStartedEvent;
|
||||
import datadog.opentracing.DDSpan;
|
||||
import datadog.opentracing.DDTracer;
|
||||
import io.opentracing.tag.Tags;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
@ -39,14 +39,14 @@ public class MongoClientInstrumentationTest {
|
|||
@Test
|
||||
public void queryScrubbing() {
|
||||
// all "secret" strings should be scrubbed out of these queries
|
||||
BsonDocument query1 = new BsonDocument("find", new BsonString("show"));
|
||||
final BsonDocument query1 = new BsonDocument("find", new BsonString("show"));
|
||||
query1.put("stuff", new BsonString("secret"));
|
||||
BsonDocument query2 = new BsonDocument("insert", new BsonString("table"));
|
||||
BsonDocument query2_1 = new BsonDocument("count", new BsonString("show"));
|
||||
final BsonDocument query2 = new BsonDocument("insert", new BsonString("table"));
|
||||
final BsonDocument query2_1 = new BsonDocument("count", new BsonString("show"));
|
||||
query2_1.put("id", new BsonString("secret"));
|
||||
query2.put("docs", new BsonArray(Arrays.asList(new BsonString("secret"), query2_1)));
|
||||
List<BsonDocument> queries = Arrays.asList(query1, query2);
|
||||
for (BsonDocument query : queries) {
|
||||
final List<BsonDocument> queries = Arrays.asList(query1, query2);
|
||||
for (final BsonDocument query : queries) {
|
||||
final CommandStartedEvent cmd =
|
||||
new CommandStartedEvent(1, makeConnection(), "databasename", "query", query);
|
||||
|
|
@ -14,12 +14,12 @@ apply from: "${rootDir}/gradle/java.gradle"
|
|||
|
||||
dependencies {
|
||||
// use mongo listener
|
||||
compile(project(':dd-java-agent:integrations:mongo-3.1')) {
|
||||
compile(project(':dd-java-agent:instrumentation:mongo-3.1')) {
|
||||
transitive = false
|
||||
}
|
||||
compileOnly group: 'org.mongodb', name: 'mongodb-driver-async', version: '3.4.2'
|
||||
|
||||
compile project(':dd-trace')
|
||||
compile project(':dd-trace-ot')
|
||||
compile project(':dd-java-agent:tooling')
|
||||
|
||||
compile deps.bytebuddy
|
|
@ -1,4 +1,4 @@
|
|||
package dd.inst.mongo;
|
||||
package datadog.trace.instrumentation.mongo;
|
||||
|
||||
import static net.bytebuddy.matcher.ElementMatchers.declaresMethod;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
|
||||
|
@ -8,8 +8,8 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
|
|||
|
||||
import com.google.auto.service.AutoService;
|
||||
import com.mongodb.async.client.MongoClientSettings;
|
||||
import dd.trace.DDAdvice;
|
||||
import dd.trace.Instrumenter;
|
||||
import datadog.trace.agent.tooling.DDAdvice;
|
||||
import datadog.trace.agent.tooling.Instrumenter;
|
||||
import io.opentracing.util.GlobalTracer;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.Collections;
|
|
@ -20,7 +20,7 @@ dependencies {
|
|||
transitive = false
|
||||
}
|
||||
|
||||
compile project(':dd-trace')
|
||||
compile project(':dd-trace-ot')
|
||||
compile project(':dd-java-agent:tooling')
|
||||
|
||||
compile deps.bytebuddy
|
|
@ -1,15 +1,15 @@
|
|||
package dd.inst.okhttp3;
|
||||
package datadog.trace.instrumentation.okhttp3;
|
||||
|
||||
import static dd.trace.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static datadog.trace.agent.tooling.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static io.opentracing.contrib.okhttp3.OkHttpClientSpanDecorator.STANDARD_TAGS;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isConstructor;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.named;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
|
||||
|
||||
import com.google.auto.service.AutoService;
|
||||
import dd.trace.DDAdvice;
|
||||
import dd.trace.HelperInjector;
|
||||
import dd.trace.Instrumenter;
|
||||
import datadog.trace.agent.tooling.DDAdvice;
|
||||
import datadog.trace.agent.tooling.HelperInjector;
|
||||
import datadog.trace.agent.tooling.Instrumenter;
|
||||
import io.opentracing.contrib.okhttp3.TracingInterceptor;
|
||||
import io.opentracing.util.GlobalTracer;
|
||||
import java.util.Collections;
|
|
@ -1,5 +1,5 @@
|
|||
import com.datadoghq.trace.DDTags
|
||||
import dd.test.AgentTestRunner
|
||||
import datadog.trace.api.DDTags
|
||||
import datadog.trace.agent.test.AgentTestRunner
|
||||
import io.opentracing.tag.Tags
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
|
@ -18,7 +18,7 @@ dependencies {
|
|||
transitive = false
|
||||
}
|
||||
|
||||
compile project(':dd-trace')
|
||||
compile project(':dd-trace-ot')
|
||||
compile project(':dd-java-agent:tooling')
|
||||
|
||||
compile deps.bytebuddy
|
|
@ -1,6 +1,6 @@
|
|||
package dd.inst.servlet2;
|
||||
package datadog.trace.instrumentation.servlet2;
|
||||
|
||||
import static dd.trace.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static datadog.trace.agent.tooling.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isInterface;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
|
||||
|
@ -9,9 +9,9 @@ import static net.bytebuddy.matcher.ElementMatchers.not;
|
|||
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
|
||||
|
||||
import com.google.auto.service.AutoService;
|
||||
import dd.trace.DDAdvice;
|
||||
import dd.trace.HelperInjector;
|
||||
import dd.trace.Instrumenter;
|
||||
import datadog.trace.agent.tooling.DDAdvice;
|
||||
import datadog.trace.agent.tooling.HelperInjector;
|
||||
import datadog.trace.agent.tooling.Instrumenter;
|
||||
import io.opentracing.ActiveSpan;
|
||||
import io.opentracing.SpanContext;
|
||||
import io.opentracing.contrib.web.servlet.filter.HttpServletRequestExtractAdapter;
|
|
@ -1,6 +1,6 @@
|
|||
package dd.inst.servlet2;
|
||||
package datadog.trace.instrumentation.servlet2;
|
||||
|
||||
import static dd.trace.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static datadog.trace.agent.tooling.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isInterface;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isProtected;
|
||||
|
@ -9,9 +9,9 @@ import static net.bytebuddy.matcher.ElementMatchers.not;
|
|||
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
|
||||
|
||||
import com.google.auto.service.AutoService;
|
||||
import dd.trace.DDAdvice;
|
||||
import dd.trace.HelperInjector;
|
||||
import dd.trace.Instrumenter;
|
||||
import datadog.trace.agent.tooling.DDAdvice;
|
||||
import datadog.trace.agent.tooling.HelperInjector;
|
||||
import datadog.trace.agent.tooling.Instrumenter;
|
||||
import io.opentracing.ActiveSpan;
|
||||
import io.opentracing.SpanContext;
|
||||
import io.opentracing.contrib.web.servlet.filter.HttpServletRequestExtractAdapter;
|
|
@ -19,7 +19,7 @@ dependencies {
|
|||
transitive = false
|
||||
}
|
||||
|
||||
compile project(':dd-trace')
|
||||
compile project(':dd-trace-ot')
|
||||
compile project(':dd-java-agent:tooling')
|
||||
|
||||
compile deps.bytebuddy
|
|
@ -1,6 +1,6 @@
|
|||
package dd.inst.servlet3;
|
||||
package datadog.trace.instrumentation.servlet3;
|
||||
|
||||
import static dd.trace.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static datadog.trace.agent.tooling.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isInterface;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
|
||||
|
@ -9,9 +9,9 @@ import static net.bytebuddy.matcher.ElementMatchers.not;
|
|||
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
|
||||
|
||||
import com.google.auto.service.AutoService;
|
||||
import dd.trace.DDAdvice;
|
||||
import dd.trace.HelperInjector;
|
||||
import dd.trace.Instrumenter;
|
||||
import datadog.trace.agent.tooling.DDAdvice;
|
||||
import datadog.trace.agent.tooling.HelperInjector;
|
||||
import datadog.trace.agent.tooling.Instrumenter;
|
||||
import io.opentracing.ActiveSpan;
|
||||
import io.opentracing.SpanContext;
|
||||
import io.opentracing.contrib.web.servlet.filter.HttpServletRequestExtractAdapter;
|
|
@ -1,6 +1,6 @@
|
|||
package dd.inst.servlet3;
|
||||
package datadog.trace.instrumentation.servlet3;
|
||||
|
||||
import static dd.trace.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static datadog.trace.agent.tooling.ClassLoaderMatcher.classLoaderHasClasses;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isInterface;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isProtected;
|
||||
|
@ -9,9 +9,9 @@ import static net.bytebuddy.matcher.ElementMatchers.not;
|
|||
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
|
||||
|
||||
import com.google.auto.service.AutoService;
|
||||
import dd.trace.DDAdvice;
|
||||
import dd.trace.HelperInjector;
|
||||
import dd.trace.Instrumenter;
|
||||
import datadog.trace.agent.tooling.DDAdvice;
|
||||
import datadog.trace.agent.tooling.HelperInjector;
|
||||
import datadog.trace.agent.tooling.Instrumenter;
|
||||
import io.opentracing.ActiveSpan;
|
||||
import io.opentracing.SpanContext;
|
||||
import io.opentracing.contrib.web.servlet.filter.HttpServletRequestExtractAdapter;
|
|
@ -19,7 +19,7 @@ dependencies {
|
|||
// compileOnly group: 'org.springframework', name: 'spring-webmvc', version: '2.5.6'
|
||||
// compileOnly group: 'javax.servlet', name: 'servlet-api', version: '2.4'
|
||||
|
||||
compile project(':dd-trace')
|
||||
compile project(':dd-trace-ot')
|
||||
compile project(':dd-java-agent:tooling')
|
||||
|
||||
compile deps.bytebuddy
|
|
@ -1,6 +1,6 @@
|
|||
package dd.inst.springweb;
|
||||
package datadog.trace.instrumentation.springweb;
|
||||
|
||||
import static dd.trace.ClassLoaderMatcher.classLoaderHasClassWithField;
|
||||
import static datadog.trace.agent.tooling.ClassLoaderMatcher.classLoaderHasClassWithField;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isInterface;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
|
||||
|
@ -10,10 +10,10 @@ import static net.bytebuddy.matcher.ElementMatchers.named;
|
|||
import static net.bytebuddy.matcher.ElementMatchers.not;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
|
||||
|
||||
import com.datadoghq.trace.DDTags;
|
||||
import com.google.auto.service.AutoService;
|
||||
import dd.trace.DDAdvice;
|
||||
import dd.trace.Instrumenter;
|
||||
import datadog.trace.agent.tooling.DDAdvice;
|
||||
import datadog.trace.agent.tooling.Instrumenter;
|
||||
import datadog.trace.api.DDTags;
|
||||
import io.opentracing.ActiveSpan;
|
||||
import io.opentracing.util.GlobalTracer;
|
||||
import java.sql.PreparedStatement;
|
|
@ -1,13 +1,13 @@
|
|||
package dd.trace.instrumentation.trace_annotation;
|
||||
package datadog.trace.instrumentation.trace_annotation;
|
||||
|
||||
import static net.bytebuddy.matcher.ElementMatchers.declaresMethod;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isAnnotatedWith;
|
||||
|
||||
import com.datadoghq.trace.Trace;
|
||||
import com.google.auto.service.AutoService;
|
||||
import dd.trace.DDAdvice;
|
||||
import dd.trace.Instrumenter;
|
||||
import datadog.trace.agent.tooling.DDAdvice;
|
||||
import datadog.trace.agent.tooling.Instrumenter;
|
||||
import datadog.trace.api.Trace;
|
||||
import io.opentracing.ActiveSpan;
|
||||
import io.opentracing.tag.Tags;
|
||||
import io.opentracing.util.GlobalTracer;
|
||||
|
@ -39,7 +39,7 @@ public final class TraceAnnotationInstrumentation implements Instrumenter {
|
|||
final Trace trace = method.getAnnotation(Trace.class);
|
||||
String operationName = trace == null ? null : trace.operationName();
|
||||
if (operationName == null || operationName.isEmpty()) {
|
||||
operationName = method.getDeclaringClass().getName() + "." + method.getName();
|
||||
operationName = method.getDeclaringClass().getSimpleName() + "." + method.getName();
|
||||
}
|
||||
|
||||
return GlobalTracer.get().buildSpan(operationName).startActive();
|
|
@ -1,8 +1,8 @@
|
|||
apply from: "${rootDir}/gradle/java.gradle"
|
||||
|
||||
dependencies {
|
||||
compile project(':dd-trace')
|
||||
compile project(':dd-trace-annotations')
|
||||
compile project(':dd-trace-ot')
|
||||
compile project(':dd-trace-api')
|
||||
compile project(':dd-java-agent:tooling')
|
||||
|
||||
compile deps.bytebuddy
|
|
@ -1,4 +1,4 @@
|
|||
package com.datadoghq.agent;
|
||||
package datadog.trace.agent;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
|
@ -14,10 +14,11 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.datadoghq.agent;
|
||||
package datadog.trace.agent;
|
||||
|
||||
import com.datadoghq.trace.DDTraceAnnotationsInfo;
|
||||
import com.datadoghq.trace.DDTraceInfo;
|
||||
import datadog.opentracing.DDTraceOTInfo;
|
||||
import datadog.trace.agent.tooling.AgentInstaller;
|
||||
import datadog.trace.api.DDTraceApiInfo;
|
||||
import io.opentracing.Tracer;
|
||||
import io.opentracing.contrib.tracerresolver.TracerResolver;
|
||||
import io.opentracing.util.GlobalTracer;
|
||||
|
@ -27,7 +28,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||
/** Entry point for initializing the agent. */
|
||||
@Slf4j
|
||||
public class TracingAgent {
|
||||
public static void premain(String agentArgs, final Instrumentation inst) throws Exception {
|
||||
public static void premain(final String agentArgs, final Instrumentation inst) throws Exception {
|
||||
log.debug("Using premain for loading {}", TracingAgent.class.getName());
|
||||
AgentInstaller.installBytebuddyAgent(inst);
|
||||
logVersionInfo();
|
||||
|
@ -46,8 +47,8 @@ public class TracingAgent {
|
|||
// version classes log important info
|
||||
// in static initializers
|
||||
DDJavaAgentInfo.VERSION.toString();
|
||||
DDTraceInfo.VERSION.toString();
|
||||
DDTraceAnnotationsInfo.VERSION.toString();
|
||||
DDTraceOTInfo.VERSION.toString();
|
||||
DDTraceApiInfo.VERSION.toString();
|
||||
}
|
||||
|
||||
/** Register a global tracer if no global tracer is already registered. */
|
|
@ -1,39 +0,0 @@
|
|||
unsupportedRuleOne:
|
||||
- artifact: artifact-1
|
||||
|
||||
- artifact: artifact-2
|
||||
identifying_present_classes:
|
||||
identifying_missing_classes:
|
||||
|
||||
unsupportedRuleTwo:
|
||||
- artifact: artifact-1
|
||||
supported_version: 2\.3\.
|
||||
identifying_present_classes:
|
||||
com.datadoghq.agent.InstrumentationCheckerTest$DemoClass1: missingMethod
|
||||
|
||||
supportedRuleOne:
|
||||
- artifact: artifact-3
|
||||
supported_version: 5\..*
|
||||
identifying_present_classes:
|
||||
com.datadoghq.agent.InstrumentationCheckerTest$DemoClass1:
|
||||
com.datadoghq.agent.InstrumentationCheckerTest$DemoClass2:
|
||||
com.datadoghq.agent.InstrumentationCheckerTest$DemoClass3:
|
||||
|
||||
supportedRuleTwo:
|
||||
- artifact: artifact-1
|
||||
supported_version: 1\.2\.3\..*
|
||||
identifying_present_classes:
|
||||
com.datadoghq.agent.InstrumentationCheckerTest$DemoClass1: testMethod
|
||||
com.datadoghq.agent.InstrumentationCheckerTest$DemoClass2:
|
||||
|
||||
- artifact: artifact-2
|
||||
supported_version: 4\..*
|
||||
identifying_present_classes:
|
||||
com.datadoghq.agent.InstrumentationCheckerTest$DemoClass3: missingMethod
|
||||
|
||||
unsupportedRuleThree:
|
||||
- artifact: foo
|
||||
supported_version: 1
|
||||
identifying_present_classes:
|
||||
com.datadoghq.agent.InstrumentationCheckerTest$DemoClass1:
|
||||
com.datadoghq.agent.InstrumentationCheckerTest$MissingClass:
|
|
@ -1,8 +1,9 @@
|
|||
package dd.test;
|
||||
package datadog.trace.agent.test;
|
||||
|
||||
import com.datadoghq.agent.AgentInstaller;
|
||||
import com.datadoghq.trace.DDTracer;
|
||||
import com.datadoghq.trace.writer.ListWriter;
|
||||
import datadog.opentracing.DDTracer;
|
||||
import datadog.trace.agent.tooling.AgentInstaller;
|
||||
import datadog.trace.agent.tooling.Instrumenter;
|
||||
import datadog.trace.common.writer.ListWriter;
|
||||
import io.opentracing.Tracer;
|
||||
import java.lang.instrument.ClassFileTransformer;
|
||||
import java.lang.instrument.Instrumentation;
|
||||
|
@ -22,8 +23,8 @@ import spock.lang.Specification;
|
|||
* This will cause the following to occur before test startup:
|
||||
*
|
||||
* <ul>
|
||||
* <li>All {@link dd.trace.Instrumenter}s on the test classpath will be applied. Matching
|
||||
* preloaded classes will be retransformed.
|
||||
* <li>All {@link Instrumenter}s on the test classpath will be applied. Matching preloaded classes
|
||||
* will be retransformed.
|
||||
* <li>{@link AgentTestRunner#TEST_WRITER} will be registerd with the global tracer and available
|
||||
* in an initialized state.
|
||||
* </ul>
|
|
@ -1,6 +1,6 @@
|
|||
package dd.test;
|
||||
package datadog.trace.agent.test;
|
||||
|
||||
import com.datadoghq.agent.Utils;
|
||||
import datadog.trace.agent.tooling.Utils;
|
||||
import io.opentracing.ActiveSpan;
|
||||
import io.opentracing.Tracer;
|
||||
import io.opentracing.util.GlobalTracer;
|
||||
|
@ -29,7 +29,7 @@ public class TestUtils {
|
|||
}
|
||||
}
|
||||
|
||||
public static void registerOrReplaceGlobalTracer(Tracer tracer) {
|
||||
public static void registerOrReplaceGlobalTracer(final Tracer tracer) {
|
||||
try {
|
||||
GlobalTracer.register(tracer);
|
||||
} catch (final Exception e) {
|
||||
|
@ -39,7 +39,7 @@ public class TestUtils {
|
|||
field = GlobalTracer.class.getDeclaredField("tracer");
|
||||
field.setAccessible(true);
|
||||
field.set(null, tracer);
|
||||
} catch (Exception e2) {
|
||||
} catch (final Exception e2) {
|
||||
throw new IllegalStateException(e2);
|
||||
} finally {
|
||||
if (null != field) {
|
||||
|
@ -54,12 +54,12 @@ public class TestUtils {
|
|||
}
|
||||
|
||||
public static <T extends Object> Object runUnderTrace(
|
||||
final String rootOperationName, Callable<T> r) {
|
||||
ActiveSpan rootSpan = GlobalTracer.get().buildSpan(rootOperationName).startActive();
|
||||
final String rootOperationName, final Callable<T> r) {
|
||||
final ActiveSpan rootSpan = GlobalTracer.get().buildSpan(rootOperationName).startActive();
|
||||
try {
|
||||
try {
|
||||
return r.call();
|
||||
} catch (Exception e) {
|
||||
} catch (final Exception e) {
|
||||
throw new IllegalStateException(e);
|
||||
}
|
||||
} finally {
|
||||
|
@ -67,10 +67,10 @@ public class TestUtils {
|
|||
}
|
||||
}
|
||||
|
||||
public static boolean isClassLoaded(String className, ClassLoader classLoader) {
|
||||
public static boolean isClassLoaded(final String className, final ClassLoader classLoader) {
|
||||
try {
|
||||
findLoadedClassMethod.setAccessible(true);
|
||||
Class<?> loadedClass = (Class<?>) findLoadedClassMethod.invoke(classLoader, className);
|
||||
final Class<?> loadedClass = (Class<?>) findLoadedClassMethod.invoke(classLoader, className);
|
||||
return null != loadedClass && loadedClass.getClassLoader() == classLoader;
|
||||
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
|
||||
throw new IllegalStateException(e);
|
||||
|
@ -88,13 +88,13 @@ public class TestUtils {
|
|||
* @return the location of the newly created jar.
|
||||
* @throws IOException
|
||||
*/
|
||||
public static URL createJarWithClasses(Class<?>... classes) throws IOException {
|
||||
public static URL createJarWithClasses(final Class<?>... classes) throws IOException {
|
||||
final File tmpJar = File.createTempFile(UUID.randomUUID().toString() + "", ".jar");
|
||||
tmpJar.deleteOnExit();
|
||||
|
||||
final Manifest manifest = new Manifest();
|
||||
JarOutputStream target = new JarOutputStream(new FileOutputStream(tmpJar), manifest);
|
||||
for (Class<?> clazz : classes) {
|
||||
final JarOutputStream target = new JarOutputStream(new FileOutputStream(tmpJar), manifest);
|
||||
for (final Class<?> clazz : classes) {
|
||||
addToJar(clazz, target);
|
||||
}
|
||||
target.close();
|
||||
|
@ -102,17 +102,18 @@ public class TestUtils {
|
|||
return tmpJar.toURI().toURL();
|
||||
}
|
||||
|
||||
private static void addToJar(Class<?> clazz, JarOutputStream jarOutputStream) throws IOException {
|
||||
private static void addToJar(final Class<?> clazz, final JarOutputStream jarOutputStream)
|
||||
throws IOException {
|
||||
InputStream inputStream = null;
|
||||
try {
|
||||
JarEntry entry = new JarEntry(Utils.getResourceName(clazz.getName()));
|
||||
final JarEntry entry = new JarEntry(Utils.getResourceName(clazz.getName()));
|
||||
jarOutputStream.putNextEntry(entry);
|
||||
inputStream =
|
||||
clazz.getClassLoader().getResourceAsStream(Utils.getResourceName(clazz.getName()));
|
||||
|
||||
byte[] buffer = new byte[1024];
|
||||
final byte[] buffer = new byte[1024];
|
||||
while (true) {
|
||||
int count = inputStream.read(buffer);
|
||||
final int count = inputStream.read(buffer);
|
||||
if (count == -1) {
|
||||
break;
|
||||
}
|
|
@ -7,6 +7,6 @@ dependencies {
|
|||
compile deps.opentracing
|
||||
compile deps.spock
|
||||
|
||||
compile project(':dd-trace')
|
||||
compile project(':dd-trace-ot')
|
||||
compile project(':dd-java-agent:tooling')
|
||||
}
|
||||
|
|
|
@ -1,14 +1,13 @@
|
|||
package com.datadoghq.agent;
|
||||
package datadog.trace.agent.tooling;
|
||||
|
||||
import static dd.trace.ClassLoaderMatcher.classLoaderWithName;
|
||||
import static dd.trace.ClassLoaderMatcher.isReflectionClassLoader;
|
||||
import static datadog.trace.agent.tooling.ClassLoaderMatcher.classLoaderWithName;
|
||||
import static datadog.trace.agent.tooling.ClassLoaderMatcher.isReflectionClassLoader;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.any;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.nameContains;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.nameMatches;
|
||||
import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith;
|
||||
|
||||
import dd.trace.Instrumenter;
|
||||
import java.lang.instrument.Instrumentation;
|
||||
import java.util.ServiceLoader;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
@ -22,8 +21,7 @@ import net.bytebuddy.utility.JavaModule;
|
|||
public class AgentInstaller {
|
||||
|
||||
/**
|
||||
* Install the core bytebuddy agent along with all implementations of {@link
|
||||
* dd.trace.Instrumenter}.
|
||||
* Install the core bytebuddy agent along with all implementations of {@link Instrumenter}.
|
||||
*
|
||||
* @param inst Java Instrumentation used to install bytebuddy
|
||||
* @return the agent's class transformer
|
||||
|
@ -34,10 +32,9 @@ public class AgentInstaller {
|
|||
.disableClassFormatChanges()
|
||||
.with(AgentBuilder.RedefinitionStrategy.RETRANSFORMATION)
|
||||
.with(new LoggingListener())
|
||||
.ignore(nameStartsWith("com.datadoghq.agent.integration"))
|
||||
.or(nameStartsWith("dd.trace"))
|
||||
.or(nameStartsWith("dd.inst"))
|
||||
.or(nameStartsWith("dd.deps"))
|
||||
.ignore(nameStartsWith("datadog.trace."))
|
||||
.or(nameStartsWith("datadog.opentracing."))
|
||||
.or(nameStartsWith("datadog.slf4j."))
|
||||
.or(nameStartsWith("java."))
|
||||
.or(nameStartsWith("com.sun."))
|
||||
.or(nameStartsWith("sun."))
|
|
@ -1,4 +1,4 @@
|
|||
package dd.trace;
|
||||
package datadog.trace.agent.tooling;
|
||||
|
||||
import java.util.WeakHashMap;
|
||||
import net.bytebuddy.matcher.ElementMatcher;
|
|
@ -1,6 +1,5 @@
|
|||
package dd.trace;
|
||||
package datadog.trace.agent.tooling;
|
||||
|
||||
import com.datadoghq.agent.Utils;
|
||||
import net.bytebuddy.agent.builder.AgentBuilder;
|
||||
import net.bytebuddy.agent.builder.AgentBuilder.LocationStrategy;
|
||||
import net.bytebuddy.dynamic.ClassFileLocator;
|
|
@ -1,4 +1,4 @@
|
|||
package dd.trace;
|
||||
package datadog.trace.agent.tooling;
|
||||
|
||||
import net.bytebuddy.description.method.MethodDescription;
|
||||
import net.bytebuddy.implementation.bytecode.StackManipulation;
|
|
@ -1,6 +1,5 @@
|
|||
package dd.trace;
|
||||
package datadog.trace.agent.tooling;
|
||||
|
||||
import com.datadoghq.agent.Utils;
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
@ -27,7 +26,7 @@ public class HelperInjector implements Transformer {
|
|||
* Construct HelperInjector.
|
||||
*
|
||||
* @param helperClassNames binary names of the helper classes to inject. These class names must be
|
||||
* resolvable by the classloader returned by dd.trace.DDAdvice#getAgentClassLoader()
|
||||
* resolvable by the classloader returned by DDAdvice#getAgentClassLoader()
|
||||
*/
|
||||
public HelperInjector(final String... helperClassNames) {
|
||||
this.helperClassNames = new HashSet<>(Arrays.asList(helperClassNames));
|
|
@ -1,4 +1,4 @@
|
|||
package dd.trace;
|
||||
package datadog.trace.agent.tooling;
|
||||
|
||||
import net.bytebuddy.agent.builder.AgentBuilder;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.datadoghq.agent;
|
||||
package datadog.trace.agent.tooling;
|
||||
|
||||
public class Utils {
|
||||
/** Return the classloader the core agent is running on. */
|
||||
|
@ -7,7 +7,7 @@ public class Utils {
|
|||
}
|
||||
|
||||
/** com.foo.Bar -> com/foo/Bar.class */
|
||||
public static String getResourceName(String className) {
|
||||
public static String getResourceName(final String className) {
|
||||
return className.replace('.', '/') + ".class";
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package dd.test;
|
||||
package datadog.trace.agent.test;
|
||||
|
||||
/** Used by {@link HelperInjectionTest} */
|
||||
class HelperClass {}
|
|
@ -1,11 +1,10 @@
|
|||
package dd.test
|
||||
package datadog.trace.agent.test
|
||||
|
||||
import com.datadoghq.agent.Utils
|
||||
import dd.trace.HelperInjector
|
||||
import java.lang.reflect.Method
|
||||
import datadog.trace.agent.tooling.HelperInjector
|
||||
import datadog.trace.agent.tooling.Utils
|
||||
import spock.lang.Specification
|
||||
|
||||
import static net.bytebuddy.matcher.ElementMatchers.*
|
||||
import java.lang.reflect.Method
|
||||
|
||||
class HelperInjectionTest extends Specification {
|
||||
|
||||
|
@ -13,7 +12,7 @@ class HelperInjectionTest extends Specification {
|
|||
setup:
|
||||
String helperClassName = HelperInjectionTest.getPackage().getName() + '.HelperClass'
|
||||
HelperInjector injector = new HelperInjector(helperClassName)
|
||||
URLClassLoader emptyLoader = new URLClassLoader(new URL[0], (ClassLoader)null)
|
||||
URLClassLoader emptyLoader = new URLClassLoader(new URL[0], (ClassLoader) null)
|
||||
|
||||
when:
|
||||
emptyLoader.loadClass(helperClassName)
|
||||
|
@ -31,7 +30,7 @@ class HelperInjectionTest extends Specification {
|
|||
cleanup:
|
||||
emptyLoader?.close()
|
||||
}
|
||||
|
||||
|
||||
private static boolean isClassLoaded(String className, ClassLoader classLoader) {
|
||||
final Method findLoadedClassMethod = ClassLoader.getDeclaredMethod("findLoadedClass", String)
|
||||
try {
|
|
@ -2,7 +2,7 @@ apply from: "${rootDir}/gradle/java.gradle"
|
|||
apply from: "${rootDir}/gradle/publish.gradle"
|
||||
apply from: "${rootDir}/gradle/jacoco.gradle"
|
||||
|
||||
description = 'dd-trace-annotations'
|
||||
description = 'dd-trace-api'
|
||||
dependencies {
|
||||
compile deps.slf4j
|
||||
testCompile deps.junit
|
|
@ -1,4 +1,4 @@
|
|||
package com.datadoghq.trace;
|
||||
package datadog.trace.api;
|
||||
|
||||
public class DDTags {
|
||||
public static final String SPAN_TYPE = "span.type";
|
|
@ -1,11 +1,11 @@
|
|||
package com.datadoghq.trace;
|
||||
package datadog.trace.api;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
public class DDTraceAnnotationsInfo {
|
||||
public class DDTraceApiInfo {
|
||||
public static final String VERSION;
|
||||
|
||||
static {
|
||||
|
@ -16,8 +16,7 @@ public class DDTraceAnnotationsInfo {
|
|||
final BufferedReader br =
|
||||
new BufferedReader(
|
||||
new InputStreamReader(
|
||||
DDTraceAnnotationsInfo.class.getResourceAsStream("/dd-trace-annotations.version"),
|
||||
"UTF-8"));
|
||||
DDTraceApiInfo.class.getResourceAsStream("/dd-trace-api.version"), "UTF-8"));
|
||||
for (int c = br.read(); c != -1; c = br.read()) sb.append((char) c);
|
||||
|
||||
v = sb.toString().trim();
|
||||
|
@ -25,10 +24,10 @@ public class DDTraceAnnotationsInfo {
|
|||
v = "unknown";
|
||||
}
|
||||
VERSION = v;
|
||||
log.info("dd-trace-annotations - version: {}", v);
|
||||
log.info("dd-trace-api - version: {}", v);
|
||||
}
|
||||
|
||||
public static void main(String... args) {
|
||||
public static void main(final String... args) {
|
||||
System.out.println(VERSION);
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package com.datadoghq.trace;
|
||||
package datadog.trace.api;
|
||||
|
||||
import static java.lang.annotation.ElementType.METHOD;
|
||||
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
|
@ -1,5 +0,0 @@
|
|||
logging:
|
||||
level: INFO
|
||||
loggers:
|
||||
"com.datadoghq.trace": DEBUG
|
||||
"io.opentracing": DEBUG
|
|
@ -15,7 +15,7 @@ plugins {
|
|||
|
||||
allprojects {
|
||||
group = 'com.datadoghq'
|
||||
version = '0.2.13-SNAPSHOT'
|
||||
version = '0.3.0.RC1-SNAPSHOT'
|
||||
|
||||
apply from: "${rootDir}/gradle/dependencies.gradle"
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@ plugins {
|
|||
id "me.champeau.gradle.jmh" version "0.4.4"
|
||||
}
|
||||
|
||||
description = 'dd-trace'
|
||||
description = 'dd-trace-ot'
|
||||
|
||||
apply from: "${rootDir}/gradle/java.gradle"
|
||||
apply from: "${rootDir}/gradle/publish.gradle"
|
||||
|
@ -10,16 +10,14 @@ apply from: "${rootDir}/gradle/jacoco.gradle"
|
|||
minimumBranchCoverage = 0.3
|
||||
minimumInstructionCoverage = 0.5
|
||||
whitelistedInstructionClasses += whitelistedBranchClasses += [
|
||||
'com.datadoghq.trace.integration.*',
|
||||
'com.datadoghq.trace.resolver.DecoratorsConfig',
|
||||
'com.datadoghq.trace.writer.ListWriter',
|
||||
'com.datadoghq.trace.DDTags',
|
||||
'com.datadoghq.trace.DDTraceInfo',
|
||||
'com.datadoghq.trace.util.Clock',
|
||||
'com.datadoghq.trace.resolver.FactoryUtils',
|
||||
'datadog.opentracing.decorators.*',
|
||||
'datadog.trace.common.writer.ListWriter',
|
||||
'datadog.trace.common.util.Clock',
|
||||
'datadog.trace.api.DDTags',
|
||||
]
|
||||
|
||||
dependencies {
|
||||
compile project(':dd-trace-api')
|
||||
compile deps.opentracing
|
||||
compile group: 'io.opentracing.contrib', name: 'opentracing-tracerresolver', version: '0.1.0'
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue