veracitylab / provenance-injector

inject provenance into JEE applications
Apache License 2.0
0 stars 0 forks source link

Build failure due to missing `provenance-agent.jar` at test time #16

Open wtwhite opened 7 months ago

wtwhite commented 7 months ago
wtwhite@wtwhite-vuw-vm:~/code/provenance-injector$ mvn package
--snip--
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
Error opening zip file or JAR manifest missing : /home/wtwhite/code/provenance-injector/target/provenance-agent.jar
[ERROR] Error occurred during initialization of VM
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[WARNING] Corrupted channel by directly writing to native stream in forked JVM 1. See FAQ web page and the dump file /home/wtwhite/code/provenance-injector/target/surefire-reports/2023-12-15T14-14-33_465-jvmRun1.dumpstream
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.030 s
[INFO] Finished at: 2023-12-15T14:14:33+13:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.1.2:test (default-test) on project provenance-injector: 
[ERROR] 
[ERROR] Please refer to /home/wtwhite/code/provenance-injector/target/surefire-reports for the individual test results.
[ERROR] Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.
[ERROR] The forked VM terminated without properly saying goodbye. VM crash or System.exit called?
[ERROR] Command was /bin/sh -c cd '/home/wtwhite/code/provenance-injector' && '/usr/lib/jvm/java-17-openjdk-amd64/bin/java' '-javaagent:/home/wtwhite/code/provenance-injector/target/provenance-agent.jar' '-jar' '/home/wtwhite/code/provenance-injector/target/surefire/surefirebooter-20231215141433537_3.jar' '/home/wtwhite/code/provenance-injector/target/surefire' '2023-12-15T14-14-33_465-jvmRun1' 'surefire-20231215141433537_1tmp' 'surefire_0-20231215141433537_2tmp'
[ERROR] Error occurred in starting fork, check output in log
[ERROR] Process Exit Code: 1
[ERROR] org.apache.maven.surefire.booter.SurefireBooterForkException: The forked VM terminated without properly saying goodbye. VM crash or System.exit called?
[ERROR] Command was /bin/sh -c cd '/home/wtwhite/code/provenance-injector' && '/usr/lib/jvm/java-17-openjdk-amd64/bin/java' '-javaagent:/home/wtwhite/code/provenance-injector/target/provenance-agent.jar' '-jar' '/home/wtwhite/code/provenance-injector/target/surefire/surefirebooter-20231215141433537_3.jar' '/home/wtwhite/code/provenance-injector/target/surefire' '2023-12-15T14-14-33_465-jvmRun1' 'surefire-20231215141433537_1tmp' 'surefire_0-20231215141433537_2tmp'
[ERROR] Error occurred in starting fork, check output in log
[ERROR] Process Exit Code: 1
[ERROR]     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:643)
[ERROR]     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:285)
[ERROR]     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:250)
[ERROR]     at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:1203)
[ERROR]     at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:1055)
[ERROR]     at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:871)
[ERROR]     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
[ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
[ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
[ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
[ERROR]     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
[ERROR]     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
[ERROR]     at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
[ERROR]     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
[ERROR]     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
[ERROR]     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
[ERROR]     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
[ERROR]     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:957)
[ERROR]     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289)
[ERROR]     at org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
[ERROR]     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR]     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
[ERROR]     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ERROR]     at java.base/java.lang.reflect.Method.invoke(Method.java:568)
[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)

This is most likely what https://github.com/veracitylab/provenance-injector/issues/1#issuecomment-1740071367 is referring to.

wtwhite commented 7 months ago

I got around this by running mvn package -DskipTests first, which succeeded. After that, mvn package worked:

wtwhite@wtwhite-vuw-vm:~/code/provenance-injector$ mvn package -DskipTests
--snip--
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.067 s
[INFO] Finished at: 2023-12-15T14:28:42+13:00
[INFO] ------------------------------------------------------------------------
wtwhite@wtwhite-vuw-vm:~/code/provenance-injector$ find . -name 'provenance-agent*.jar'
./target/provenance-agent.jar
wtwhite@wtwhite-vuw-vm:~/code/provenance-injector$ mvn package
--snip--
[INFO] Results:
[INFO] 
[INFO] Tests run: 22, Failures: 0, Errors: 0, Skipped: 0
--snip--
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.663 s
[INFO] Finished at: 2023-12-15T14:29:10+13:00
[INFO] ------------------------------------------------------------------------

However, this means tests will always be executing on the previous compilation's code, which is confusing.

Ideally, fix pom.xml to generate the needed provenance-agent.jar before tests are run (perhaps this could be done by making the tests integration tests?). If that's not possible, update the README -- including the warning above.