Welcome to the Linux Foundation Forum!

Running unit tests with Jacoco fails

jmarinho
jmarinho Posts: 19
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
    jmarinho Posts: 19
    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
    tomp736 Posts: 13
    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
    jmarinho Posts: 19
    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.

  • kzwolenik
    kzwolenik Posts: 8

    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

  • luisviveropena
    luisviveropena Posts: 1,233

    Hi @kzwolenik,

    Ok, thanks for letting us know.

    Regards,
    Luis.

Categories

Upcoming Training