Merge branch 'master' into gpolaert/dropwizard

This commit is contained in:
Guillaume Polaert 2017-07-12 11:18:33 +02:00
commit 098dffc463
13 changed files with 117 additions and 23 deletions

View File

@ -9,16 +9,16 @@ jobs:
- checkout - checkout
- restore_cache: - restore_cache:
key: dd-trace-java-{{ checksum "build.gradle" }}-{{ checksum "dd-java-agent/build.gradle" }}-{{ checksum "dd-trace/build.gradle" }} key: dd-trace-java-{{ checksum "dd-trace-java.gradle" }}-{{ checksum "dd-java-agent/dd-java-agent.gradle" }}-{{ checksum "dd-trace/dd-trace.gradle" }}
- run: - run:
name: Run Tests name: Run Tests
command: ./gradlew clean shadowJar check command: ./gradlew clean shadowJar check --parallel
- save_cache: - save_cache:
paths: paths:
- ~/.gradle - ~/.gradle
key: dd-trace-java-{{ checksum "build.gradle" }}-{{ checksum "dd-java-agent/build.gradle" }}-{{ checksum "dd-trace/build.gradle" }} key: dd-trace-java-{{ checksum "dd-trace-java.gradle" }}-{{ checksum "dd-java-agent/dd-java-agent.gradle" }}-{{ checksum "dd-trace/dd-trace.gradle" }}
- store_test_results: - store_test_results:
path: dd-java-agent/build/test-results path: dd-java-agent/build/test-results

View File

@ -1,3 +1,6 @@
// Not adding jacoco here as it inexplicably breaks our tests.
// apply from: "${rootDir}/gradle/jacoco.gradle"
description = 'dd-java-agent-ittests' description = 'dd-java-agent-ittests'
dependencies { dependencies {
testCompile project(':dd-java-agent') testCompile project(':dd-java-agent')

View File

@ -4,6 +4,16 @@ plugins {
description = 'dd-java-agent' description = 'dd-java-agent'
apply from: "${rootDir}/gradle/jacoco.gradle"
jacocoTestReport.dependsOn project(':dd-java-agent-ittests').test
whitelistedInstructionClasses += whitelistedBranchClasses += [
"com.datadoghq.trace.agent.integration.*",
'com.datadoghq.trace.agent.AnnotationsTracingAgent',
'com.datadoghq.trace.agent.AgentTracerConfig',
'com.datadoghq.trace.agent.TraceAnnotationsManager',
'com.datadoghq.trace.agent.InstrumentationChecker'
]
dependencies { dependencies {
compile project(':dd-trace') compile project(':dd-trace')
compile project(':dd-trace-annotations') compile project(':dd-trace-annotations')

View File

@ -1,3 +1,5 @@
apply from: "${rootDir}/gradle/jacoco.gradle"
description = 'dd-trace-annotations' description = 'dd-trace-annotations'
dependencies { dependencies {
testCompile group: 'junit', name: 'junit', version: '3.8.1' testCompile group: 'junit', name: 'junit', version: '3.8.1'

View File

@ -4,6 +4,15 @@ plugins {
} }
description = 'dd-trace' description = 'dd-trace'
apply from: "${rootDir}/gradle/jacoco.gradle"
minimumBranchCoverage = 0.3
minimumInstructionCoverage = 0.5
whitelistedInstructionClasses += whitelistedBranchClasses += [
"com.datadoghq.trace.integration.*",
'com.datadoghq.trace.DDTags'
]
dependencies { dependencies {
compile group: 'io.opentracing', name: 'opentracing-api', version: '0.30.0' compile group: 'io.opentracing', name: 'opentracing-api', version: '0.30.0'
compile group: 'io.opentracing', name: 'opentracing-noop', version: '0.30.0' compile group: 'io.opentracing', name: 'opentracing-noop', version: '0.30.0'

View File

@ -41,19 +41,10 @@ public class DDTracerResolver extends TracerResolver {
@SuppressWarnings("static-access") @SuppressWarnings("static-access")
public static Tracer registerTracer() { public static Tracer registerTracer() {
Tracer tracer = TracerResolver.resolveTracer();
ServiceLoader<TracerResolver> RESOLVERS = ServiceLoader.load(TracerResolver.class);
Tracer tracer = null;
for (TracerResolver value : RESOLVERS) {
tracer = value.resolveTracer();
if (tracer != null) {
break;
}
}
if (tracer == null) { if (tracer == null) {
tracer = NoopTracerFactory.create(); return NoopTracerFactory.create();
} }
GlobalTracer.register(tracer); GlobalTracer.register(tracer);

View File

@ -2,9 +2,14 @@ package com.datadoghq.trace.resolver;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import java.lang.reflect.Field;
import java.util.List; import java.util.List;
import io.opentracing.NoopTracerFactory;
import io.opentracing.Tracer;
import io.opentracing.contrib.tracerresolver.TracerResolver;
import io.opentracing.tag.Tags; import io.opentracing.tag.Tags;
import io.opentracing.util.GlobalTracer;
import org.junit.Test; import org.junit.Test;
import com.datadoghq.trace.DDTracer; import com.datadoghq.trace.DDTracer;
@ -15,7 +20,7 @@ import com.datadoghq.trace.integration.URLAsResourceName;
public class TracerResolverTest { public class TracerResolverTest {
@Test @Test
public void test() { public void testResolve() {
DDTracerResolver tracerResolver = new DDTracerResolver(); DDTracerResolver tracerResolver = new DDTracerResolver();
DDTracer tracer = (DDTracer) tracerResolver.resolve(); DDTracer tracer = (DDTracer) tracerResolver.resolve();
@ -39,4 +44,34 @@ public class TracerResolverTest {
} }
@Test
public void testResolveTracer() throws Exception {
Field tracerField = GlobalTracer.class.getDeclaredField("tracer");
tracerField.setAccessible(true);
tracerField.set(null, NoopTracerFactory.create());
assertThat(GlobalTracer.isRegistered()).isFalse();
Tracer tracer = TracerResolver.resolveTracer();
assertThat(GlobalTracer.isRegistered()).isFalse();
assertThat(tracer).isInstanceOf(DDTracer.class);
}
@Test
public void testRegisterTracer() throws Exception {
Field tracerField = GlobalTracer.class.getDeclaredField("tracer");
tracerField.setAccessible(true);
tracerField.set(null, NoopTracerFactory.create());
assertThat(GlobalTracer.isRegistered()).isFalse();
DDTracerResolver.registerTracer();
assertThat(GlobalTracer.isRegistered()).isTrue();
assertThat(tracerField.get(null)).isInstanceOf(DDTracer.class);
tracerField.set(null, NoopTracerFactory.create());
}
} }

43
gradle/jacoco.gradle Normal file
View File

@ -0,0 +1,43 @@
apply plugin: "jacoco"
jacocoTestReport {
dependsOn test
reports {
xml.enabled true
csv.enabled false
html.destination file("${buildDir}/reports/jacoco/")
}
}
project.ext.whitelistedBranchClasses = []
project.ext.whitelistedInstructionClasses = []
project.ext.minimumBranchCoverage = 0.6
project.ext.minimumInstructionCoverage = 0.6
afterEvaluate {
jacocoTestCoverageVerification {
violationRules {
rule {
element = 'CLASS'
excludes = project.whitelistedBranchClasses
limit {
counter = 'BRANCH'
minimum = project.minimumBranchCoverage
}
}
rule {
element = 'CLASS'
excludes = project.whitelistedInstructionClasses
limit {
counter = 'INSTRUCTION'
minimum = project.minimumInstructionCoverage
}
}
}
}
jacocoTestCoverageVerification.dependsOn jacocoTestReport
check.dependsOn jacocoTestCoverageVerification
}

View File

@ -1,4 +1,5 @@
rootProject.name = 'dd-trace-java' rootProject.name = 'dd-trace-java'
include ':dd-trace' include ':dd-trace'
include ':dd-java-agent' include ':dd-java-agent'
include ':dd-java-agent-ittests' include ':dd-java-agent-ittests'
@ -8,11 +9,11 @@ include ':dd-trace-examples:spring-boot-jdbc'
include ':dd-trace-examples' include ':dd-trace-examples'
include ':dd-trace-annotations' include ':dd-trace-annotations'
project(':dd-trace').projectDir = "$rootDir/dd-trace" as File def setBuildFile(project) {
project(':dd-java-agent').projectDir = "$rootDir/dd-java-agent" as File project.buildFileName = "${project.name}.gradle"
project(':dd-java-agent-ittests').projectDir = "$rootDir/dd-java-agent-ittests" as File project.children.each {
project(':dd-trace-examples:async-tracing').projectDir = "$rootDir/dd-trace-examples/async-tracing" as File setBuildFile(it)
project(':dd-trace-examples:dropwizard-mongo-client').projectDir = "$rootDir/dd-trace-examples/dropwizard-mongo-client" as File }
project(':dd-trace-examples:spring-boot-jdbc').projectDir = "$rootDir/dd-trace-examples/spring-boot-jdbc" as File }
project(':dd-trace-examples').projectDir = "$rootDir/dd-trace-examples" as File
project(':dd-trace-annotations').projectDir = "$rootDir/dd-trace-annotations" as File setBuildFile(rootProject)