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
6 changes: 5 additions & 1 deletion dd-java-agent-ittests/dd-java-agent-ittests.gradle
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
apply from: "${rootDir}/gradle/java.gradle"

description = 'dd-java-agent-ittests'

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 deps.opentracingMock

testCompile deps.testLogging
testCompile project(':dd-java-agent:tooling').sourceSets.test.output

testCompile group: 'org.mongodb', name: 'mongo-java-driver', version: '3.4.2'
testCompile group: 'org.mongodb', name: 'mongodb-driver-async', version: '3.4.2'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,18 @@
package com.datadoghq.agent.integration

import io.opentracing.ActiveSpan;
import io.opentracing.SpanContext;
import io.opentracing.propagation.Format;
import io.opentracing.propagation.TextMap;
import io.opentracing.util.GlobalTracer;

import ratpack.http.MutableHeaders
import ratpack.http.Response
import io.opentracing.ActiveSpan
import io.opentracing.SpanContext
import io.opentracing.propagation.Format
import io.opentracing.propagation.TextMap
import io.opentracing.util.GlobalTracer
import ratpack.groovy.test.embed.GroovyEmbeddedApp
import ratpack.handling.Context

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

/**
* A simple http server used for testing.<br>
* Binds locally to {@link #PORT}.
* Binds locally to {@link #port}.
*
* <p>To start: {@link #startServer()}<br>
* to stop: {@link #stopServer()}
Expand All @@ -27,24 +24,24 @@ class TestHttpServer {
*/
public static final String IS_DD_SERVER = "is-dd-server"

private static GroovyEmbeddedApp INSTANCE = null
private static int PORT = 0
private static GroovyEmbeddedApp server = null
private static int port = 0

static int getPort() {
if (PORT == 0) {
if (port == 0) {
throw new RuntimeException("Server not started")
}
return PORT;
return port
}

/**
* Start the server. Has no effect if already started.
*
* @throws IOException
*/
static synchronized def startServer() {
if (null == INSTANCE) {
INSTANCE = ratpack {
static synchronized startServer() {
if (null == server) {
server = ratpack {
handlers {
get {
String msg = "<html><body><h1>Hello test.</h1>\n"
Expand All @@ -55,46 +52,46 @@ class TestHttpServer {
if (isDDServer) {
final SpanContext extractedContext =
GlobalTracer.get()
.extract(Format.Builtin.HTTP_HEADERS, new RatpackResponseAdapter(context))
.extract(Format.Builtin.HTTP_HEADERS, new RatpackResponseAdapter(context))
ActiveSpan span =
GlobalTracer.get()
.buildSpan("test-http-server")
.asChildOf(extractedContext)
.startActive()
.buildSpan("test-http-server")
.asChildOf(extractedContext)
.startActive()
span.deactivate()
}

response.status(200).send(msg)
}
}
}
PORT = INSTANCE.address.port
port = server.address.port
}
}

/** Stop the server. Has no effect if already stopped. */
static synchronized void stopServer() {
if (null != INSTANCE) {
INSTANCE.close()
INSTANCE = null
PORT = 0
if (null != server) {
server.close()
server = null
port = 0
}
}

private static class RatpackResponseAdapter implements TextMap {
final Context context;
final Context context

public RatpackResponseAdapter(Context context) {
RatpackResponseAdapter(Context context) {
this.context = context
}

@Override
public void put(String key, String value) {
void put(String key, String value) {
context.response.set(key, value)
}

@Override
public Iterator<Map.Entry<String, String>> iterator() {
Iterator<Map.Entry<String, String>> iterator() {
return context.request.getHeaders().asMultiValueMap().entrySet().iterator()
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,26 +1,25 @@
package com.datadoghq.agent.integration.httpclient

import com.datadoghq.agent.integration.TestUtils
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 io.opentracing.tag.Tags
import java.net.URI
import java.util.List
import org.apache.http.HttpResponse
import org.apache.http.message.BasicHeader
import org.apache.http.client.HttpClient
import org.apache.http.client.methods.HttpGet
import org.apache.http.impl.client.HttpClientBuilder
import spock.lang.*
import org.apache.http.message.BasicHeader
import spock.lang.Shared
import spock.lang.Specification

class ApacheHttpClientTest extends Specification {

@Shared
def ListWriter writer = new ListWriter()
def writer = new ListWriter()
@Shared
def DDTracer tracer = new DDTracer(writer)
def tracer = new DDTracer(writer)

def setupSpec() {
TestUtils.registerOrReplaceGlobalTracer(tracer)
Expand All @@ -40,21 +39,17 @@ class ApacheHttpClientTest extends Specification {
final HttpClientBuilder builder = HttpClientBuilder.create()

final HttpClient client = builder.build()
TestUtils.runUnderTrace(
"someTrace",
new Runnable() {
@Override
public void run() {
try {
HttpResponse response =
client.execute(new HttpGet(new URI("http://localhost:" + TestHttpServer.getPort())))
assert response.getStatusLine().getStatusCode() == 200
} catch (Exception e) {
e.printStackTrace()
throw new RuntimeException(e)
}
}
})
TestUtils.runUnderTrace("someTrace") {
try {
HttpResponse response =
client.execute(new HttpGet(new URI("http://localhost:" + TestHttpServer.getPort())))
assert response.getStatusLine().getStatusCode() == 200
} catch (Exception e) {
e.printStackTrace()
throw new RuntimeException(e)
}
}

expect:
// one trace on the server, one trace on the client
writer.size() == 2
Expand Down Expand Up @@ -90,23 +85,18 @@ class ApacheHttpClientTest extends Specification {
final HttpClientBuilder builder = HttpClientBuilder.create()

final HttpClient client = builder.build()
TestUtils.runUnderTrace(
"someTrace",
new Runnable() {
@Override
public void run() {
try {
HttpGet request = new HttpGet(new URI("http://localhost:"
+ TestHttpServer.getPort()))
request.addHeader(new BasicHeader(TestHttpServer.IS_DD_SERVER, "false"))
HttpResponse response = client.execute(request)
assert response.getStatusLine().getStatusCode() == 200
} catch (Exception e) {
e.printStackTrace()
throw new RuntimeException(e)
}
}
})
TestUtils.runUnderTrace("someTrace") {
try {
HttpGet request = new HttpGet(new URI("http://localhost:"
+ TestHttpServer.getPort()))
request.addHeader(new BasicHeader(TestHttpServer.IS_DD_SERVER, "false"))
HttpResponse response = client.execute(request)
assert response.getStatusLine().getStatusCode() == 200
} catch (Exception e) {
e.printStackTrace()
throw new RuntimeException(e)
}
}
expect:
// only one trace (client).
writer.size() == 1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

import static org.assertj.core.api.Assertions.assertThat;

import com.datadoghq.agent.integration.TestUtils;
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 io.opentracing.util.GlobalTracer;
import java.io.PrintWriter;
import java.io.StringWriter;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.datadoghq.trace.writer.ListWriter;
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;
import dd.test.TestUtils;
import io.opentracing.Tracer;
import io.opentracing.tag.Tags;
import org.cassandraunit.utils.EmbeddedCassandraServerHelper;
Expand Down Expand Up @@ -47,7 +48,7 @@ public void testSync() throws ClassNotFoundException {
session.execute("SELECT * FROM sync_test.users where name = 'alice' ALLOW FILTERING");

assertThat(writer.getList().size()).isEqualTo(origSize + 5);
DDBaseSpan<?> selectTrace = writer.get(writer.size() - 1).get(0);
final DDBaseSpan<?> selectTrace = writer.get(writer.size() - 1).get(0);

assertThat(selectTrace.getServiceName()).isEqualTo(DDTracer.UNASSIGNED_DEFAULT_SERVICE_NAME);
assertThat(selectTrace.getOperationName()).isEqualTo("execute");
Expand Down Expand Up @@ -89,7 +90,7 @@ public void testAsync() throws Exception {
}
Thread.sleep(1);
}
DDBaseSpan<?> selectTrace = writer.get(writer.size() - 1).get(0);
final DDBaseSpan<?> selectTrace = writer.get(writer.size() - 1).get(0);

assertThat(selectTrace.getServiceName()).isEqualTo(DDTracer.UNASSIGNED_DEFAULT_SERVICE_NAME);
assertThat(selectTrace.getOperationName()).isEqualTo("execute");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import com.mongodb.async.client.MongoClient;
import com.mongodb.async.client.MongoClients;
import com.mongodb.async.client.MongoDatabase;
import dd.test.TestUtils;
import io.opentracing.tag.Tags;
import java.net.InetAddress;
import java.nio.ByteBuffer;
Expand Down Expand Up @@ -52,15 +53,15 @@ public void asyncClientHasListener() {

@Test
public void insertOperation() throws InterruptedException, Exception {
MongoDatabase db = client.getDatabase(MONGO_DB_NAME);
final MongoDatabase db = client.getDatabase(MONGO_DB_NAME);
final String collectionName = "asyncCollection";
final AtomicBoolean done = new AtomicBoolean(false);

db.createCollection(
collectionName,
new SingleResultCallback<Void>() {
@Override
public void onResult(Void result, Throwable t) {
public void onResult(final Void result, final Throwable t) {
done.set(true);
}
});
Expand All @@ -86,7 +87,7 @@ public void onResult(final Void result, final Throwable t) {
.count(
new SingleResultCallback<Long>() {
@Override
public void onResult(Long result, Throwable t) {
public void onResult(final Long result, final Throwable t) {
Assert.assertEquals(1, result.longValue());
done.set(true);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import de.flapdoodle.embed.mongo.*;
import dd.test.TestUtils;
import de.flapdoodle.embed.mongo.MongodExecutable;
import de.flapdoodle.embed.mongo.MongodProcess;
import de.flapdoodle.embed.mongo.MongodStarter;
import de.flapdoodle.embed.mongo.config.IMongodConfig;
import de.flapdoodle.embed.mongo.config.MongodConfigBuilder;
import de.flapdoodle.embed.mongo.config.Net;
Expand Down Expand Up @@ -34,9 +37,9 @@ public class MongoClientInstrumentationTest {
private static final DDTracer tracer = new DDTracer(writer);

public static void startLocalMongo() throws Exception {
MongodStarter starter = MongodStarter.getDefaultInstance();
final MongodStarter starter = MongodStarter.getDefaultInstance();

IMongodConfig mongodConfig =
final IMongodConfig mongodConfig =
new MongodConfigBuilder()
.version(Version.Main.PRODUCTION)
.net(new Net(MONGO_HOST, MONGO_PORT, Network.localhostIsIPv6()))
Expand Down Expand Up @@ -84,10 +87,10 @@ public void syncClientHasListener() {

@Test
public void insertOperation() throws UnknownHostException {
MongoDatabase db = client.getDatabase(MONGO_DB_NAME);
final MongoDatabase db = client.getDatabase(MONGO_DB_NAME);
final String collectionName = "testCollection";
db.createCollection(collectionName);
MongoCollection<Document> collection = db.getCollection(collectionName);
final MongoCollection<Document> collection = db.getCollection(collectionName);

collection.insertOne(new Document("foo", "bar"));

Expand Down

This file was deleted.

1 change: 1 addition & 0 deletions dd-java-agent/benchmark/out/jmh/resources/dd-trace.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
enableCustomAnnotationTracingOver: ["com.datadoghq.benchmark"]
Loading