Welcome to the Linux Foundation Forum!

Running unit tests with Jacoco fails

jmarinho
edited December 2021 in LFS261 Class Forum

Hi.

I'm trying to reproduce the first scenario of the Lab 9: "Continuous Testing" that was was explained on vídeo "Code Coverage Setup with JaCoCo" and it throw me warnings and errors.
I went through the steps several times and I think that I'm not doing anything different to the video or the first part of Lab 9 (Code coverage with Jacoco).
I try creating a maven project like the lab 9 suggests and a freestyle project as in the video but on both cases I get the same error:

[WARNING] /var/jenkins_home/workspace/jacoco-test/code-coverage-jacoco/src/integration-test/java/ITFizzBuzzTest.java: Some input files use or override a deprecated API.
[WARNING] /var/jenkins_home/workspace/jacoco-test/code-coverage-jacoco/src/integration-test/java/ITFizzBuzzTest.java: Recompile with -Xlint:deprecation for details.
[INFO] 

T E S T S
-------------------------------------------------------
Exception in thread "main" java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.base/java.lang.reflect.Method.invoke(Unknown Source)
    at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(Unknown Source)
    at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallPremain(Unknown Source)
Caused by: java.lang.RuntimeException: Class java/util/UUID could not be instrumented.
    at org.jacoco.agent.rt.internal_b0d6a23.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:139)
    at org.jacoco.agent.rt.internal_b0d6a23.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:100)
    at org.jacoco.agent.rt.internal_b0d6a23.PreMain.createRuntime(PreMain.java:55)
    at org.jacoco.agent.rt.internal_b0d6a23.PreMain.premain(PreMain.java:47)
    ... 6 more
Caused by: java.lang.NoSuchFieldException: $jacocoAccess
    at java.base/java.lang.Class.getField(Unknown Source)
    at org.jacoco.agent.rt.internal_b0d6a23.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:137)
    ... 9 more
*** java.lang.instrument ASSERTION FAILED ***: "result" with message agent load/premain call failed at ./src/java.instrument/share/native/libinstrument/JPLISAgent.c line: 422
FATAL ERROR in native method: processing of -javaagent failed, processJavaStart failed
Aborted (core dumped)

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

[JENKINS] Recording test results
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  4.828 s
[INFO] Finished at: 2021-12-13T18:18:50Z
[INFO] ------------------------------------------------------------------------
Waiting for Jenkins to finish collecting data
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.15:test (default-test) on project code-coverage-jacoco: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.15:test failed: The forked VM terminated without saying properly goodbye. VM crash or System.exit called ?
[ERROR] Command was/bin/sh -c cd /var/jenkins_home/workspace/jacoco-test/code-coverage-jacoco && /opt/java/openjdk/bin/java -javaagent:/var/jenkins_home/.m2/repository/org/jacoco/org.jacoco.agent/0.7.5.201505241946/org.jacoco.agent-0.7.5.201505241946-runtime.jar=destfile=/var/jenkins_home/workspace/jacoco-test/code-coverage-jacoco/target/coverage-reports/jacoco-ut.exec -jar /var/jenkins_home/workspace/jacoco-test/code-coverage-jacoco/target/surefire/surefirebooter6624810085396241211.jar /var/jenkins_home/workspace/jacoco-test/code-coverage-jacoco/target/surefire/surefire10181250726723161838tmp /var/jenkins_home/workspace/jacoco-test/code-coverage-jacoco/target/surefire/surefire_013196265457472944591tmp
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
[JENKINS] Archiving /var/jenkins_home/workspace/jacoco-test/code-coverage-jacoco/pom.xml to net.petrikainulainen.maven/code-coverage-jacoco/0.1/code-coverage-jacoco-0.1.pom
channel stopped
Finished: FAILURE

I don't know well how to interpret this in order to figure out what happen. Anyone have an idea?
Regards.

Comments

  • Hi @jmarinho, I'm going to do a test case and I'll let you know as soon as I finished it.

    Are you working with Jenkins as a Docker container, or have you installed it by yourself in the OS you are running? What's the Jenkins and Maven version you are running?

    Regards,
    Luis.

  • jmarinho
    edited December 2021

    Hi @luisviveropena. Thanks for your help.

    I was following the labs strictly until now and, although sometimes they did not come at the first time, I was able to make it work.
    Anyway, I must say that the only thing that I did not do as in labs was when I chose an image for Jenkins container. I picked a slightly newer one than the labs one
    So the answers to your questions are: I'm using Jenkins on a container and the version of Jenkins is: 2.303.3 from the image jenkins/jenkins:2.303.3-lts-slim. My work environment has too another Docker container that acts as a Docker server as in Labs (dind)
    On the other hand, Maven version for the project (jacoco-test) is 3.6.1 that matches the Maven's installation that I have on Global Tools. As in labs too.

    Regards

  • tomp736
    edited December 2021

    I am seeing the same error.

    My jenkins agents are running on kubernetes, but I have not had too many issues up until now.

    -------------------------------------------------------
     T E S T S
    -------------------------------------------------------
    Exception in thread "main" java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(Unknown Source)
        at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallPremain(Unknown Source)
    Caused by: java.lang.RuntimeException: Class java/util/UUID could not be instrumented.
        at org.jacoco.agent.rt.internal_b0d6a23.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:139)
        at org.jacoco.agent.rt.internal_b0d6a23.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:100)
        at org.jacoco.agent.rt.internal_b0d6a23.PreMain.createRuntime(PreMain.java:55)
        at org.jacoco.agent.rt.internal_b0d6a23.PreMain.premain(PreMain.java:47)
        ... 6 more
    Caused by: java.lang.NoSuchFieldException: $jacocoAccess
        at java.base/java.lang.Class.getField(Unknown Source)
    FATAL ERROR in native method: processing of -javaagent failed, processJavaStart failed
        at org.jacoco.agent.rt.internal_b0d6a23.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:137)
        ... 9 more
    *** java.lang.instrument ASSERTION FAILED ***: "result" with message agent load/premain call failed at ./src/java.instrument/share/native/libinstrument/JPLISAgent.c line: 422
    Aborted (core dumped)
    
    Results :
    
    Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
    
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  15.175 s
    [INFO] Finished at: 2021-12-17T12:27:42Z
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.15:test (default-test) on project code-coverage-jacoco: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.15:test failed: The forked VM terminated without saying properly goodbye. VM crash or System.exit called ?
    [ERROR] Command was/bin/sh -c cd /home/jenkins/agent/workspace/jacoco-test/code-coverage-jacoco && /opt/java/openjdk/bin/java -javaagent:/home/jenkins/.m2/repository/org/jacoco/org.jacoco.agent/0.7.5.201505241946/org.jacoco.agent-0.7.5.201505241946-runtime.jar=destfile=/home/jenkins/agent/workspace/jacoco-test/code-coverage-jacoco/target/coverage-reports/jacoco-ut.exec -jar /home/jenkins/agent/workspace/jacoco-test/code-coverage-jacoco/target/surefire/surefirebooter12218850172728523641.jar /home/jenkins/agent/workspace/jacoco-test/code-coverage-jacoco/target/surefire/surefire6284159443550726781tmp /home/jenkins/agent/workspace/jacoco-test/code-coverage-jacoco/target/surefire/surefire_012781991046842243410tmp
    [ERROR] -> [Help 1]
    [ERROR] 
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR] 
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
    Build step 'Invoke top-level Maven targets' marked build as failure
    Finished: FAILURE
    
  • Updating to version 0.8.2 resolved this issue for me. Created a pull request.

    https://github.com/lfs261/maven-examples/pull/5

  • jmarinho
    edited December 2021

    Hi @tomp736.

    You are right, updating to this version solves the issue for me. Thank you!

    Regards.

  • Hi @tomp736 and @jmarinho , thanks for confirming the fix!

    Regards,
    Luis.

  • A 1000 thanks for that hint !

  • I have now merged this change into the master branch so it should be fixed permanently.

  • I've encountered the problem again, updating to 0.8.12 fixed the issue:

                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.12</version>
    

    I've got the latest plugin version here: https://central.sonatype.com/search?q=g:org.jacoco a:jacoco-maven-plugin&amp;smo=true

  • Hi @kzwolenik,

    Ok, thanks for letting us know.

    Regards,
    Luis.

Categories

Upcoming Training