summaryrefslogtreecommitdiff
path: root/simulator
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-03-20 16:51:05 +0100
committerGitHub <noreply@github.com>2021-03-20 16:51:05 +0100
commit0862f8489b1122671cefa5c5bd59f677b56a3712 (patch)
tree9256a835306601fa522476d02be4c38e0bf001c9 /simulator
parent592d60d6d2ef51923eebd844888930b07892da39 (diff)
parentfce499eaafa0afecee5c14346ff7d75e2fe999b6 (diff)
Add support for code coverage tracking via Codecov
This pull request enables aggregate code coverage reports via Jacoco and adds support for coverage tracking via Codecov.
Diffstat (limited to 'simulator')
-rw-r--r--simulator/build.gradle.kts1
-rw-r--r--simulator/buildSrc/build.gradle.kts2
-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/buildSrc/src/main/kotlin/testing-conventions.gradle.kts9
-rw-r--r--simulator/gradle.properties8
-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
11 files changed, 65 insertions, 19 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/build.gradle.kts b/simulator/buildSrc/build.gradle.kts
index 4cc1958a..be071d0c 100644
--- a/simulator/buildSrc/build.gradle.kts
+++ b/simulator/buildSrc/build.gradle.kts
@@ -33,7 +33,7 @@ repositories {
}
dependencies {
- implementation(kotlin("gradle-plugin", version = "1.4.30"))
+ implementation(kotlin("gradle-plugin", version = "1.4.31"))
implementation("org.jlleitschuh.gradle:ktlint-gradle:10.0.0")
implementation("org.jetbrains.dokka:dokka-gradle-plugin:0.10.1")
}
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/buildSrc/src/main/kotlin/testing-conventions.gradle.kts b/simulator/buildSrc/src/main/kotlin/testing-conventions.gradle.kts
index 566b765f..f129c282 100644
--- a/simulator/buildSrc/src/main/kotlin/testing-conventions.gradle.kts
+++ b/simulator/buildSrc/src/main/kotlin/testing-conventions.gradle.kts
@@ -1,7 +1,3 @@
-import org.gradle.kotlin.dsl.`java-library`
-import org.gradle.kotlin.dsl.kotlin
-import org.gradle.platform.base.Library
-
/*
* Copyright (c) 2021 AtLarge Research
*
@@ -30,6 +26,11 @@ plugins {
tasks.test {
useJUnitPlatform()
+
+ reports {
+ html.isEnabled = true
+ junitXml.isEnabled = true
+ }
}
dependencies {
diff --git a/simulator/gradle.properties b/simulator/gradle.properties
index 930be6b5..8d41408c 100644
--- a/simulator/gradle.properties
+++ b/simulator/gradle.properties
@@ -21,12 +21,12 @@
#
# Dependencies
-kotlinx-coroutines.version = 1.4.2
+kotlinx-coroutines.version = 1.4.3
# Dependencies (Logging)
-kotlin-logging.version = 2.0.4
+kotlin-logging.version = 2.0.6
slf4j.version = 1.7.30
-log4j.version = 2.14.0
+log4j.version = 2.14.1
# Dependencies (CLI)
clikt.version = 3.1.0
@@ -45,4 +45,4 @@ classgraph.version = 4.8.102
# Dependencies (Testing)
junit-jupiter.version = 5.7.1
junit-platform.version = 1.7.1
-mockk.version = 1.10.5
+mockk.version = 1.11.0
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 {