Skip to content

Commit fb6d03c

Browse files
committed
New: Add benchmarks to compare coverage approaches.
1 parent af95dda commit fb6d03c

File tree

3 files changed

+75
-16
lines changed

3 files changed

+75
-16
lines changed

benchmarks/jmh.gradle

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -74,27 +74,38 @@ def configureBenchmark(JavaExec benchmark, Closure<List<String>> jvmArgs = {[]})
7474
}
7575
}
7676

77+
ext.configureBenchmark = this.&configureBenchmark
78+
7779
def benchmarkReport(Task benchmark) {
7880
file("$benchmark.temporaryDir/${benchmark.name}.json")
7981
}
8082

81-
82-
ext.configureCompareWith = { benchmark, Closure<List<String>> jvmArgs, basicBenchmark ->
83-
configureBenchmark(benchmark, jvmArgs)
84-
benchmark.with {
85-
dependsOn(basicBenchmark)
83+
ext.configureComparison = { combined, benchmark1, benchmark2 ->
84+
combined.with {
85+
group = 'benchmarks'
86+
if (benchmark1 != combined) {
87+
dependsOn benchmark1
88+
}
89+
if (benchmark2 != combined) {
90+
dependsOn benchmark2
91+
}
8692
doLast {
87-
def noAgentReport = ResourceGroovyMethods.getText(benchmarkReport(basicBenchmark), 'UTF-8')
88-
def currentReport = ResourceGroovyMethods.getText(benchmarkReport(benchmark), 'UTF-8')
93+
def firstReport = ResourceGroovyMethods.getText(benchmarkReport(benchmark1), 'UTF-8')
94+
def secondReport = ResourceGroovyMethods.getText(benchmarkReport(benchmark2), 'UTF-8')
8995

9096
project.logger.quiet """Benchmark score:
91-
$basicBenchmark.name vs $benchmark.name:
92-
${ReportReader.readScore(noAgentReport, currentReport, secondaryMetrics)}
97+
$benchmark1.name vs $benchmark2.name:
98+
${ReportReader.readScore(firstReport, secondReport, secondaryMetrics)}
9399
"""
94100
}
95101
}
96102
}
97103

98-
ext.configureCompare = { benchmark, Closure<List<String>> jvmArgs ->
104+
ext.configureCompareWith = { benchmark, Closure<List<String>> jvmArgs, basicBenchmark ->
105+
configureBenchmark(benchmark, jvmArgs)
106+
configureComparison(benchmark, basicBenchmark, benchmark)
107+
}
108+
109+
ext.configureCompareWithNoAgent = { benchmark, Closure<List<String>> jvmArgs ->
99110
configureCompareWith(benchmark, jvmArgs, NoAgent)
100111
}

test-discovery/jmh.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,10 @@ def agentParams(Configuration configuration) {
4444
}
4545

4646
task Baseline(type: JavaExec) {
47-
configureCompare(it) { agentParams(configurations.baseline) }
47+
configureCompareWithNoAgent(it) { agentParams(configurations.baseline) }
4848
}
4949

5050
task Head(type: JavaExec) {
5151
dependsOn configurations.head.buildDependencies
52-
configureCompare(it) { agentParams(configurations.head) }
52+
configureCompareWithNoAgent(it) { agentParams(configurations.head) }
5353
}

tests/jmh.gradle

Lines changed: 52 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,25 +34,25 @@ dependencies {
3434
baseline "$group:$coverage_jar_name:$baselineVersion"
3535
}
3636

37-
def ijAgentParams(Configuration configuration, boolean branchCoverage) {
37+
def ijAgentParams(Configuration configuration, boolean branchCoverage, String... jvmArgs) {
3838
def agentPath = configuration == configurations.head
3939
? rootProject.file("dist").listFiles().find { it.name.startsWith(coverage_jar_name) }.absolutePath
4040
: configuration.find { it.name.startsWith(coverage_jar_name) }.absolutePath
4141
return [
4242
"-javaagent:${agentPath}=${coverageFile} false false false ${!branchCoverage} org.joda.* org.apache.commons.*",
43-
"-Didea.new.sampling.coverage=true", "-Didea.new.tracing.coverage=true"
43+
*jvmArgs
4444
]
4545
}
4646

4747
def branchCoverage = true
4848

4949
task BaselineCoverage(type: JavaExec) {
50-
configureCompare(it) { ijAgentParams(configurations.baseline, branchCoverage) }
50+
configureCompareWithNoAgent(it) { ijAgentParams(configurations.baseline, branchCoverage) }
5151
clear(it)
5252
}
5353

5454
task HeadCoverage(type: JavaExec) {
55-
configureCompare(it) { ijAgentParams(configurations.head, branchCoverage) }
55+
configureCompareWithNoAgent(it) { ijAgentParams(configurations.head, branchCoverage) }
5656
clear(it)
5757
}
5858

@@ -66,6 +66,54 @@ task LineVsBranchCoverage(type: JavaExec) {
6666
clear(it)
6767
}
6868

69+
task CondyCoverage(type: JavaExec) {
70+
configureBenchmark(it) {
71+
ijAgentParams(configurations.head, branchCoverage)
72+
}
73+
clear(it)
74+
}
75+
76+
task IndyCoverage(type: JavaExec) {
77+
configureBenchmark(it) {
78+
ijAgentParams(configurations.head, branchCoverage, "-Dcoverage.condy.enable=false")
79+
}
80+
clear(it)
81+
}
82+
83+
task FieldCoverage(type: JavaExec) {
84+
configureBenchmark(it) {
85+
ijAgentParams(configurations.head, branchCoverage, "-Dcoverage.condy.enable=false", "-Dcoverage.indy.enable=false")
86+
}
87+
clear(it)
88+
}
89+
90+
task OldCoverage(type: JavaExec) {
91+
configureBenchmark(it) {
92+
ijAgentParams(configurations.head, branchCoverage, "-Didea.new.sampling.coverage=false", "-Didea.new.tracing.coverage=false")
93+
}
94+
clear(it)
95+
}
96+
97+
task IndyVsCondyCoverage {
98+
configureComparison(it, IndyCoverage, CondyCoverage)
99+
clear(it)
100+
}
101+
102+
task FieldVsIndyCoverage {
103+
configureComparison(it, FieldCoverage, IndyCoverage)
104+
clear(it)
105+
}
106+
107+
task OldVsFieldCoverage {
108+
configureComparison(it, OldCoverage, FieldCoverage)
109+
clear(it)
110+
}
111+
112+
task FieldVsCondyCoverage {
113+
configureComparison(it, FieldCoverage, CondyCoverage)
114+
clear(it)
115+
}
116+
69117
def clear(Task task) {
70118
task.doLast {
71119
delete(coverageFile)

0 commit comments

Comments
 (0)