summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--simulator/build.gradle.kts1
-rw-r--r--simulator/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts26
-rw-r--r--simulator/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts33
-rw-r--r--simulator/opendc-compute/opendc-compute-simulator/build.gradle.kts1
-rw-r--r--simulator/opendc-format/build.gradle.kts1
-rw-r--r--simulator/opendc-harness/build.gradle.kts1
-rw-r--r--simulator/opendc-simulator/opendc-simulator-compute/build.gradle.kts1
-rw-r--r--simulator/opendc-workflow/opendc-workflow-service/build.gradle.kts1
8 files changed, 55 insertions, 10 deletions
diff --git a/simulator/build.gradle.kts b/simulator/build.gradle.kts
index 6b0a9bf1..061d8fc3 100644
--- a/simulator/build.gradle.kts
+++ b/simulator/build.gradle.kts
@@ -22,6 +22,7 @@
plugins {
`dokka-conventions`
+ `jacoco-aggregation`
}
allprojects {
diff --git a/simulator/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts b/simulator/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts
index 8c07fdea..3e8aa741 100644
--- a/simulator/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts
+++ b/simulator/buildSrc/src/main/kotlin/jacoco-aggregation.gradle.kts
@@ -32,19 +32,25 @@ repositories {
mavenCentral()
}
-task<JacocoReport>("jacocoTestReport") {
+tasks.register<JacocoReport>("codeCoverageReport") {
group = "Coverage reports"
- description = "Generates an aggregate report from all subprojects"
+ description = "Generates an aggregate report based on all subprojects"
- val jacocoReportTasks = subprojects.map { it.tasks.withType<JacocoReport>() }
- dependsOn(jacocoReportTasks)
- executionData(jacocoReportTasks)
+ reports {
+ xml.isEnabled = true
+ xml.destination = file("${buildDir}/reports/jacoco/report.xml")
- subprojects.forEach { testedProject ->
- val sourceSets = testedProject.convention.findPlugin(JavaPluginConvention::class)?.sourceSets ?: return@forEach
+ html.isEnabled = true
+ }
- this@task.additionalSourceDirs.from(sourceSets["main"].allSource.srcDirs)
- this@task.sourceDirectories.from(sourceSets["main"].allSource.srcDirs)
- this@task.classDirectories.from(sourceSets["main"].output)
+ subprojects {
+ this@subprojects.plugins.withType<JacocoPlugin>().configureEach {
+ this@subprojects.tasks.matching {
+ it.extensions.findByType<JacocoTaskExtension>() != null }
+ .configureEach {
+ sourceSets(this@subprojects.the<SourceSetContainer>().named("main").get())
+ executionData(this)
+ }
+ }
}
}
diff --git a/simulator/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts b/simulator/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts
index e0bc2ce4..d0534d4f 100644
--- a/simulator/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts
+++ b/simulator/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts
@@ -30,3 +30,36 @@ tasks.jacocoTestReport {
html.isEnabled = true
}
}
+
+/* Share sources folder with other projects for aggregated JaCoCo reports */
+configurations.create("transitiveSourcesElements") {
+ isVisible = false
+ isCanBeResolved = false
+ isCanBeConsumed = true
+ extendsFrom(configurations.implementation.get())
+ attributes {
+ attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME))
+ attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION))
+ attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objects.named("source-folders"))
+ }
+ sourceSets.main.get().java.srcDirs.forEach {
+ outgoing.artifact(it)
+ }
+}
+
+/* Share the coverage data to be aggregated for the whole product */
+configurations.create("coverageDataElements") {
+ isVisible = false
+ isCanBeResolved = false
+ isCanBeConsumed = true
+ extendsFrom(configurations.implementation.get())
+ attributes {
+ attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME))
+ attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION))
+ attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objects.named("jacoco-coverage-data"))
+ }
+ // This will cause the test task to run if the coverage data is requested by the aggregation task
+ outgoing.artifact(tasks.test.map { task ->
+ task.extensions.getByType<JacocoTaskExtension>().destinationFile!!
+ })
+}
diff --git a/simulator/opendc-compute/opendc-compute-simulator/build.gradle.kts b/simulator/opendc-compute/opendc-compute-simulator/build.gradle.kts
index 31fcda2f..1ad3f1c6 100644
--- a/simulator/opendc-compute/opendc-compute-simulator/build.gradle.kts
+++ b/simulator/opendc-compute/opendc-compute-simulator/build.gradle.kts
@@ -26,6 +26,7 @@ description = "Simulator for OpenDC Compute"
plugins {
`kotlin-library-conventions`
`testing-conventions`
+ `jacoco-conventions`
}
dependencies {
diff --git a/simulator/opendc-format/build.gradle.kts b/simulator/opendc-format/build.gradle.kts
index 385e556d..ea43275a 100644
--- a/simulator/opendc-format/build.gradle.kts
+++ b/simulator/opendc-format/build.gradle.kts
@@ -26,6 +26,7 @@ description = "Library for reading common data formats for topology simulation"
plugins {
`kotlin-library-conventions`
`testing-conventions`
+ `jacoco-conventions`
}
dependencies {
diff --git a/simulator/opendc-harness/build.gradle.kts b/simulator/opendc-harness/build.gradle.kts
index f980853c..01b4ecd6 100644
--- a/simulator/opendc-harness/build.gradle.kts
+++ b/simulator/opendc-harness/build.gradle.kts
@@ -26,6 +26,7 @@ description = "Harness for defining repeatable experiments using OpenDC"
plugins {
`kotlin-library-conventions`
`testing-conventions`
+ `jacoco-conventions`
}
dependencies {
diff --git a/simulator/opendc-simulator/opendc-simulator-compute/build.gradle.kts b/simulator/opendc-simulator/opendc-simulator-compute/build.gradle.kts
index 66d7d9e5..0005928f 100644
--- a/simulator/opendc-simulator/opendc-simulator-compute/build.gradle.kts
+++ b/simulator/opendc-simulator/opendc-simulator-compute/build.gradle.kts
@@ -25,6 +25,7 @@ description = "Library for simulation of cloud computing components"
plugins {
`kotlin-library-conventions`
`testing-conventions`
+ `jacoco-conventions`
}
dependencies {
diff --git a/simulator/opendc-workflow/opendc-workflow-service/build.gradle.kts b/simulator/opendc-workflow/opendc-workflow-service/build.gradle.kts
index 12a54235..bec18ae9 100644
--- a/simulator/opendc-workflow/opendc-workflow-service/build.gradle.kts
+++ b/simulator/opendc-workflow/opendc-workflow-service/build.gradle.kts
@@ -26,6 +26,7 @@ description = "Workflow orchestration service for OpenDC"
plugins {
`kotlin-library-conventions`
`testing-conventions`
+ `jacoco-conventions`
}
dependencies {