From e566b40b5f780cfa64165875bd30d93a53c15692 Mon Sep 17 00:00:00 2001 From: Dhruv Kumar Date: Wed, 12 Jul 2023 16:53:42 +0530 Subject: [PATCH] enabling code coverage from e2e tests as well --- .github/workflows/e2e.yml | 7 +++++-- .../com.flipkart.varadhi.java-common-conventions.gradle | 2 +- server/build.gradle | 9 ++++++++- setup/docker/compose.yml | 4 ++++ 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 2e391ea5..00c7f38c 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -31,8 +31,8 @@ jobs: with: gradle-version: 5.6.4 - name: Execute Gradle build - run: ./gradlew clean build copyDependencies - - name: Build the Docker image + run: ./gradlew clean build copyDependencies :server:copyJacocoAgent -x test + - name: Build the Varadhi Docker image run: docker build . --file setup/docker/Dockerfile --tag varadhi.docker.registry/varadhi:latest --build-arg ENV=test - name: Setup the environment run: docker compose --profile test -f setup/docker/compose.yml up -d --wait --wait-timeout 180 @@ -50,6 +50,9 @@ jobs: uses: jwalton/gh-docker-logs@v2 with: images: 'varadhi.docker.registry/varadhi,apachepulsar/pulsar,zookeeper' + + - name: Restart the server process to force the code coverage dump + run: docker exec docker-web-1 pkill java - name: Generate Code Coverage report run: ./gradlew jacocoTestReport - name: Publish code coverage (uses CodeCov.io) diff --git a/buildSrc/src/main/groovy/com.flipkart.varadhi.java-common-conventions.gradle b/buildSrc/src/main/groovy/com.flipkart.varadhi.java-common-conventions.gradle index 4cdc20c1..8a32db60 100644 --- a/buildSrc/src/main/groovy/com.flipkart.varadhi.java-common-conventions.gradle +++ b/buildSrc/src/main/groovy/com.flipkart.varadhi.java-common-conventions.gradle @@ -128,7 +128,7 @@ tasks.withType(JacocoReport).configureEach { } getSourceDirectories().from(sourceSets.main.allSource.srcDirs) getClassDirectories().from(sourceSets.main.output) - getExecutionData().from(layout.buildDirectory.files().findAll { it.name.endsWith('.exec') }) + getExecutionData().from(fileTree(buildDir).include("/jacoco/*.exec")) } tasks.withType(Test).configureEach { diff --git a/server/build.gradle b/server/build.gradle index ba2ab0fe..919de556 100644 --- a/server/build.gradle +++ b/server/build.gradle @@ -4,6 +4,7 @@ plugins { id 'com.flipkart.varadhi.java-application-conventions' } +def jacoco_ver = "0.8.10" dependencies { @@ -48,10 +49,16 @@ dependencies { testE2EImplementation("javax.ws.rs:javax.ws.rs-api") testE2EImplementation("org.glassfish.jersey.core:jersey-client") testE2EImplementation("org.glassfish.jersey.media:jersey-media-json-jackson") - + testE2ERuntime("org.jacoco:org.jacoco.agent:$jacoco_ver:runtime") runtimeOnly project(':pulsar') } +task copyJacocoAgent(type: Copy) { + from configurations.testE2ERuntime.find { it.name.contentEquals("org.jacoco.agent-$jacoco_ver-runtime.jar") } + into "$buildDir/jacoco" + rename("org.jacoco.agent-$jacoco_ver-runtime.jar", "org.jacoco.agent-runtime.jar") +} + application { mainClass = 'com.flipkart.varadhi.Server' } diff --git a/setup/docker/compose.yml b/setup/docker/compose.yml index c01e987c..fb54dc50 100644 --- a/setup/docker/compose.yml +++ b/setup/docker/compose.yml @@ -16,11 +16,15 @@ services: web: image: varadhi.docker.registry/varadhi:latest profiles: [ "test", "service" ] + environment: + - JAVA_TOOL_OPTIONS=-javaagent:/jacoco/org.jacoco.agent-runtime.jar=destfile=/jacoco/testE2E.exec networks: hostnet: ipv4_address: 10.5.5.2 ports: - 8080:8080 + volumes: + - ../../server/build/jacoco:/jacoco restart: "no" healthcheck: test: curl -s http://localhost:8080/v1/health-check | grep iam_ok