Apply jacoco to every java project

Some projects have ignores/whitelists, but generally coverage is pretty high.

AFAIK, this doesn’t really capture instrumentation test coverage though.
This commit is contained in:
Tyler Benson 2018-03-02 19:48:28 +10:00 committed by Tyler Benson
parent 7dfdc2d50e
commit 9a52303376
17 changed files with 82 additions and 89 deletions

View File

@ -53,7 +53,3 @@ tasks.withType(Test) {
parent.subprojects.collect { it.tasks.withType(Test) } each {
test.shouldRunAfter it
}
// Jacoco must be applied after the test javaagent config block above,
// otherwise the javaagent args conflict. (It's order dependent and added LIFO)
apply from: "${rootDir}/gradle/jacoco.gradle"

View File

@ -5,6 +5,10 @@ plugins {
apply from: "${rootDir}/gradle/java.gradle"
whitelistedInstructionClasses += whitelistedBranchClasses += [
'datadog.trace.bootstrap.*'
]
dependencies {
compile project(':dd-trace-api')
compile deps.opentracing

View File

@ -1,5 +1,9 @@
apply from: "${rootDir}/gradle/java.gradle"
whitelistedInstructionClasses += whitelistedBranchClasses += [
'datadog.trace.agent.tooling.*'
]
dependencies {
compile project(':dd-java-agent:agent-bootstrap')
compile deps.bytebuddy

View File

@ -6,13 +6,8 @@ description = 'dd-java-agent'
apply from: "${rootDir}/gradle/java.gradle"
apply from: "${rootDir}/gradle/publish.gradle"
apply from: "${rootDir}/gradle/jacoco.gradle"
jacocoTestReport.dependsOn ':dd-java-agent-ittests:test'
whitelistedInstructionClasses += whitelistedBranchClasses += [
'datadog.agent.*',
'datadog.agent.decorators.*',
]
jacocoTestReport.dependsOn ':dd-java-agent-ittests:test'
/*
* Include subproject's shadowJar in the dd-java-agent jar.

View File

@ -15,6 +15,10 @@ subprojects { subProj ->
}
}
whitelistedInstructionClasses += whitelistedBranchClasses += [
'datadog.trace.instrumentation.*'
]
dependencies {
compile(project(':dd-java-agent:agent-tooling')) {
exclude module: ':dd-java-agent:agent-bootstrap'

View File

@ -1,6 +1,10 @@
apply from: "${rootDir}/gradle/java.gradle"
apply plugin: 'scala'
whitelistedInstructionClasses += whitelistedBranchClasses += [
'*'
]
dependencies {
compile project(':dd-trace-api')
compile project(':dd-trace-ot')

View File

@ -1,5 +1,13 @@
apply from: "${rootDir}/gradle/java.gradle"
minimumBranchCoverage = 0.5
minimumInstructionCoverage = 0.6
whitelistedInstructionClasses += whitelistedBranchClasses += [
'datadog.trace.agent.test.*Assert',
'datadog.trace.agent.test.AgentTestRunner.1',
'datadog.trace.agent.test.TestUtils'
]
dependencies {
compile deps.bytebuddy
compile deps.bytebuddyagent

View File

@ -1,6 +1,5 @@
apply from: "${rootDir}/gradle/java.gradle"
apply from: "${rootDir}/gradle/publish.gradle"
apply from: "${rootDir}/gradle/jacoco.gradle"
description = 'dd-trace-api'
dependencies {

View File

@ -6,15 +6,12 @@ description = 'dd-trace-ot'
apply from: "${rootDir}/gradle/java.gradle"
apply from: "${rootDir}/gradle/publish.gradle"
apply from: "${rootDir}/gradle/jacoco.gradle"
minimumBranchCoverage = 0.3
minimumInstructionCoverage = 0.5
minimumBranchCoverage = 0.5
minimumInstructionCoverage = 0.6
whitelistedInstructionClasses += whitelistedBranchClasses += [
'datadog.opentracing.decorators.*',
'datadog.trace.common.writer.ListWriter',
'datadog.trace.common.util.Clock',
'datadog.trace.api.DDTags',
'datadog.trace.common.util.ConfigUtils',
'datadog.trace.common.sampling.PrioritySampling'
]

View File

@ -1,65 +0,0 @@
package datadog.trace.common;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonValue;
public class Service {
private final String name;
private final String appName;
private final Service.AppType appType;
public Service(final String name, final String appName, final AppType appType) {
this.name = name;
this.appName = appName;
this.appType = appType;
}
@JsonIgnore
public String getName() {
return name;
}
@JsonProperty("app")
public String getAppName() {
return appName;
}
@JsonProperty("app_type")
public AppType getAppType() {
return appType;
}
@Override
public String toString() {
return "Service { "
+ "name='"
+ name
+ "\', appName='"
+ appName
+ "', appType="
+ appType
+ " }";
}
public enum AppType {
WEB("web"),
DB("db"),
CUSTOM("custom"),
CACHE("cache"),
WORKER("worker");
private final String type;
AppType(final String type) {
this.type = type;
}
@JsonValue
@Override
public String toString() {
return type;
}
}
}

View File

@ -7,6 +7,7 @@ import datadog.opentracing.PendingTrace
import datadog.trace.common.writer.ListWriter
import io.opentracing.Scope
import io.opentracing.Span
import io.opentracing.noop.NoopSpan
import spock.lang.Specification
import spock.lang.Subject
import spock.lang.Unroll
@ -25,6 +26,21 @@ class ScopeManagerTest extends Specification {
scopeManager.tlsScope.remove()
}
def "non-ddspan activation results in a simple scope"() {
when:
def scope = scopeManager.activate(NoopSpan.INSTANCE, true)
then:
scopeManager.active() == scope
scope instanceof SimpleScope
when:
scope.close()
then:
scopeManager.active() == null
}
def "threadlocal is empty"() {
setup:
def builder = tracer.buildSpan("test")

View File

@ -8,6 +8,25 @@ import spock.lang.Specification
class RateByServiceSamplerTest extends Specification {
def "invalid rate -> 1"() {
setup:
RateByServiceSampler serviceSampler = new RateByServiceSampler()
ObjectMapper serializer = new ObjectMapper()
String response = '{"rate_by_service": {"service:,env:":' + rate + '}}'
serviceSampler.onResponse("traces", serializer.readTree(response))
expect:
serviceSampler.baseSampler.sampleRate == expectedRate
where:
rate | expectedRate
null | 1
1 | 1
0 | 1
-5 | 1
5 | 1
0.5 | 0.5
}
def "rate by service name"() {
setup:
RateByServiceSampler serviceSampler = new RateByServiceSampler()

View File

@ -4,7 +4,6 @@ plugins {
apply plugin: 'application'
apply from: "${rootDir}/gradle/java.gradle"
apply from: "${rootDir}/gradle/jacoco.gradle"
version = 'demo'
description = 'dropwizard-mongo-client'

View File

@ -4,7 +4,6 @@ plugins {
apply plugin: 'application'
apply from: "${rootDir}/gradle/java.gradle"
apply from: "${rootDir}/gradle/jacoco.gradle"
version = 'demo'
description = 'rest-spark'

View File

@ -3,7 +3,6 @@ plugins {
}
apply from: "${rootDir}/gradle/java.gradle"
apply from: "${rootDir}/gradle/jacoco.gradle"
version = 'demo'
description = 'spring-boot-jdbc-redis'

View File

@ -1,5 +1,9 @@
apply plugin: "jacoco"
jacoco {
toolVersion = "0.8.0"
}
jacocoTestReport {
dependsOn test
reports {
@ -9,11 +13,21 @@ jacocoTestReport {
}
}
project.ext.whitelistedBranchClasses = []
project.ext.whitelistedInstructionClasses = []
if (project.parent.hasProperty("whitelistedBranchClasses")) {
project.ext.whitelistedBranchClasses = parent.whitelistedBranchClasses
} else {
project.ext.whitelistedBranchClasses = []
}
project.ext.minimumBranchCoverage = 0.6
project.ext.minimumInstructionCoverage = 0.6
if (project.parent.hasProperty("whitelistedInstructionClasses")) {
project.ext.whitelistedInstructionClasses = parent.whitelistedInstructionClasses
} else {
project.ext.whitelistedInstructionClasses = []
}
// defaults can be overridden per project:
project.ext.minimumBranchCoverage = 0.9
project.ext.minimumInstructionCoverage = 0.9
afterEvaluate {
jacocoTestCoverageVerification {

View File

@ -153,6 +153,7 @@ tasks.withType(Test) {
apply from: "$rootDir/gradle/checkstyle.gradle"
apply from: "$rootDir/gradle/codenarc.gradle"
apply from: "$rootDir/gradle/jacoco.gradle"
plugins.withType(BasePlugin) {
project.afterEvaluate {