EvoMaster Instrumentation Agent Error while running Evomaster controller class using cmd line
In intelli J it is running fine without errors but while running cmd line please check below
command :
java -Djdk.attach.allowAttachSelf=true --add-opens java.base/java.util.regex=ALL-UNNAMED --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED -jar target/test-jar.jar
but while running with command line getting below error
15:18:27.892 [main] INFO org.testcontainers.utility.ImageNameSubstitutor -- Image name substitution will be performed by: DefaultImageNameSubstitutor (composite of 'ConfigurationFileImageNameSubstitutor' and 'PrefixingImageNameSubstitutor') WARNING: A Java agent has been loaded dynamically (/tmp/javaagent.org.evomaster.client.java.instrumentation.InstrumentingAgent17940319427532506921.jar) WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warning WARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more information WARNING: Dynamic loading of agents will be disallowed by default in a future release Exception in thread "Attach Listener" java.lang.ClassNotFoundException: org.evomaster.client.java.instrumentation.InstrumentingAgent at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:504) at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallAgentmain(InstrumentationImpl.java:582) *** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message Outstanding error when calling method in invokeJavaAgentMainMethod at ./src/java.instrument/share/native/libinstrument/JPLISAgent.c line: 627 *** java.lang.instrument ASSERTION FAILED ***: "success" with message invokeJavaAgentMainMethod failed at ./src/java.instrument/share/native/libinstrument/JPLISAgent.c line: 466 *** java.lang.instrument ASSERTION FAILED ***: "success" with message startJavaAgent failed at ./src/java.instrument/share/native/libinstrument/InvocationAdapter.c line: 444 Agent failed to start! Exception in thread "main" java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:118) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) at org.springframework.boot.loader.Launcher.launch(Launcher.java:95) at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65) Caused by: java.lang.RuntimeException: Failed to apply bytecode instrumentation with JavaAgent. If you are using JDK 11 or above, are you sure you added the following JVM option? -Djdk.attach.allowAttachSelf=true Also, if you are using JDK 17 or above, you also need the following: --add-opens java.base/java.util.regex=ALL-UNNAMED --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED This can also be set globally with the JDK_JAVA_OPTIONS environment variable. See documentation at https://github.com/EMResearch/EvoMaster/blob/master/docs/jdks.md at org.evomaster.client.java.controller.InstrumentedSutStarter.loadAgent(InstrumentedSutStarter.java:48) at org.evomaster.client.java.controller.InstrumentedSutStarter.(InstrumentedSutStarter.java:71) at com.aidtaas.mobius.content.services.EmbeddedEvoMasterController.main(EmbeddedEvoMasterController.java:177) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ... 5 more Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException at shaded.com.ea.agentloader.AgentLoader$1.loadAgent(AgentLoader.java:244) at shaded.com.ea.agentloader.AgentLoader.loadAgent(AgentLoader.java:77) at shaded.com.ea.agentloader.AgentLoader.loadAgentClass(AgentLoader.java:148) at shaded.com.ea.agentloader.AgentLoader.loadAgentClass(AgentLoader.java:102) at org.evomaster.client.java.controller.InstrumentedSutStarter.loadAgent(InstrumentedSutStarter.java:46) ... 8 more Caused by: java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:118) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at shaded.com.ea.agentloader.AgentLoader$1.loadAgent(AgentLoader.java:240) ... 12 more Caused by: java.lang.RuntimeException: Can't attach to this jvm. Add -javaagent:/tmp/javaagent.org.evomaster.client.java.instrumentation.InstrumentingAgent17940319427532506921.jar to the commandline at shaded.com.ea.agentloader.AgentLoaderHotSpot.loadAgent(AgentLoaderHotSpot.java:74) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ... 14 more Caused by: com.sun.tools.attach.AgentInitializationException: Agent JAR loaded but agent failed to initialize at jdk.attach/sun.tools.attach.HotSpotVirtualMachine.loadAgent(HotSpotVirtualMachine.java:170) at shaded.com.ea.agentloader.AgentLoaderHotSpot.loadAgent(AgentLoaderHotSpot.java:65) ... 15 more
this seems related to #1177
I am not sure what you are trying to do and achieve here... are you just trying to run the generated test cases on the command-line? in that case, why not using surefire plugin and just execute mvn test?
the -Djdk.attach.allowAttachSelf=true --add-opens are not needed when running the generated tests
Hi @arcuri82 , this is not related to Genrate test cases …
Am doing-white box testing using Java So in Intelli J i can run ……….but i wanna run using cmd line while am doing am getting InstrumentingAgent error
Caused by: java.lang.RuntimeException: Can't attach to this jvm. Add -javaagent:/tmp/javaagent.org.evomaster.client.java.instrumentation.InstrumentingAgent1794031942753250692
Though am attaching evomasterInstrument jar path from .m2 repo to command am getting Some Null pointer exception can u correct me in this matter ?
do you mean running the EM driver/controller on the command line?
if so, should rather use an External driver, and not an Embedded one... however, we have currently no documentation written for it :( but you can look at some examples in the EMB repository (search for classes called ExternalEvoMasterController)
hi @arcuri82 ,
I tried to use ExternalEvomasterController instead of EmbeddedEvomasterController i build it....when i ran
am getting
java.lang.IllegalStateException: Instrumentation is not active
when i used EmbeddedEvomasterController i got " InstrumentationAgent Error Not found Error "
Now like u said i tried ExternalEvomasterController getting " Instrumentation is not active " Error
help me with this Issue
please check the code below
package library; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import org.evomaster.client.java.controller.ExternalSutController; import org.evomaster.client.java.controller.InstrumentedSutStarter; import org.evomaster.client.java.controller.api.dto.auth.AuthenticationDto; import org.evomaster.client.java.controller.api.dto.SutInfoDto; import org.evomaster.client.java.controller.api.dto.auth.HeaderDto; import org.evomaster.client.java.sql.DbSpecification; import org.evomaster.client.java.controller.problem.ProblemInfo; import org.evomaster.client.java.controller.problem.RestProblem; import org.testcontainers.containers.GenericContainer;
import java.sql.Connection; import java.util.Collections; import java.util.List;
public class ExternalEvoMasterController extends ExternalSutController {
private static final int DEFAULT_CONTROLLER_PORT = 40100;
private static final int DEFAULT_SUT_PORT = 12345;
private static final int DEFAULT_DB_PORT = 27017; private static final int MONGODB_PORT = 27017;
private static final String MONGODB_VERSION = "7.0.16";
private static final String MONGODB_DATABASE_NAME = "library_service";
public static void main(String[] args) {
int controllerPort = DEFAULT_CONTROLLER_PORT;
if (args.length > 0) {
controllerPort = Integer.parseInt(args[0]);
}
int sutPort = DEFAULT_SUT_PORT;
if (args.length > 1) {
sutPort = Integer.parseInt(args[1]);
}
String jarLocation = "/home/chowhan/Desktop/Naveen/library/library-content-service/target";
if (args.length > 2) {
jarLocation = args[2];
}
if (!jarLocation.endsWith(".jar")) {
jarLocation += "/library-content-service.jar";
}
int timeoutSeconds = 120;
if (args.length > 3) {
timeoutSeconds = Integer.parseInt(args[3]);
}
String command = "java";
if (args.length > 4) {
command = args[4];
}
ExternalEvoMasterController controller =
new ExternalEvoMasterController(controllerPort, jarLocation, sutPort, timeoutSeconds, command);
InstrumentedSutStarter starter = new InstrumentedSutStarter(controller);
starter.start();
}
private final int timeoutSeconds;
private final int sutPort;
private String jarLocation; private Connection sqlConnection; private List<DbSpecification> dbSpecification;
private MongoClient mongoClient;
private final GenericContainer<?> mongodb;
public ExternalEvoMasterController() { this(DEFAULT_CONTROLLER_PORT, "/home/chowhan/Desktop/Naveen/library/library-content-service/target/library-content-service.jar", DEFAULT_SUT_PORT, 120, "java"); }
public ExternalEvoMasterController(String jarLocation) { this(); this.jarLocation = jarLocation; }
public ExternalEvoMasterController(int controllerPort, String jarLocation, int sutPort, int timeoutSeconds, String command) { this.sutPort = sutPort; this.jarLocation = jarLocation; this.timeoutSeconds = timeoutSeconds; setControllerPort(controllerPort); this.mongodb = new GenericContainer<>("mongo:" + MONGODB_VERSION) .withTmpFs(Collections.singletonMap("/data/db", "rw")) .withExposedPorts(DEFAULT_DB_PORT); setJavaCommand(command); }
@Override public String[] getInputParameters() { return new String[]{ "--server.port=" + sutPort, "--liquibase.enabled=false", "--spring.data.mongodb.uri=mongodb://" + mongodb.getContainerIpAddress() + ":" + mongodb.getMappedPort(DEFAULT_DB_PORT) + "/" + MONGODB_DATABASE_NAME, "--spring.datasource.username=sa", "--spring.datasource.password", "--dg-toolkit.derby.port=0", "--spring.cache.type=NONE" }; }
private String dbUrl() { return null; }
@Override public String[] getJVMParameters() { return new String[]{ }; }
@Override public String getBaseURL() { return "http://localhost:" + sutPort; }
@Override public String getPathToExecutableJar() { return jarLocation; }
@Override public String getLogMessageOfInitializedServer() { return "Started library-content-service-Application in "; }
@Override public long getMaxAwaitForInitializationInSeconds() { return timeoutSeconds; }
@Override public void preStart() {
mongodb.start();
try {
mongoClient = MongoClients.create("mongodb://" + mongodb.getContainerIpAddress() + ":" + mongodb.getMappedPort(DEFAULT_DB_PORT));
} catch (Exception e) {
System.out.println("ERROR: " + e.getMessage());
throw new RuntimeException(e);
}
}
@Override public void postStart() {
}
@Override public void preStop() {
}
@Override public void postStop() { mongodb.stop(); }
@Override public String getPackagePrefixesToCover() { return "com.stats.library."; }
public void resetStateOfSUT() { mongoClient.getDatabase(MONGODB_DATABASE_NAME).drop(); }
@Override public ProblemInfo getProblemInfo() { return new RestProblem( getBaseURL() + "/library-content-service/v3/api-docs", null ); }
@Override public SutInfoDto.OutputFormat getPreferredOutputFormat() { return SutInfoDto.OutputFormat.JAVA_JUNIT_4; }
@Override
public List<AuthenticationDto> getInfoForAuthentication() {
String value = "Bearer
AuthenticationDto auth = new AuthenticationDto("BearerAuth"); // Name can be anything meaningful
auth.fixedHeaders.add(new HeaderDto("Authorization", value));
return List.of(auth);
}
@Override public List<DbSpecification> getDbSpecifications() { return dbSpecification; }
@Override public Object getMongoConnection() { return mongoClient; } }
i build jar and then ran ExternalControllerClass in I ntelli J and hitting below command
java -jar evomaster_Updated.jar --maxTime 10m --outputFolder "src/test/java/Evomaster"
giving below Error
Started controller server on: http://localhost:40100/controller/api Going to start the SUT WARN - Failed to find Agent jar in current classloader. URLs of classloader: Going to start SUT with command: java -Devomaster.javaagent.external.port=38555 -Devomaster.javaagent.replacement_categories=BASE,SQL,EXT_0,MONGO -javaagent:/home/gaian/Desktop/Naveen/Mobius/TestsValidation/EvomasterExternalDriver/target/evomaster-external-runner.jar=com.aidtaas.mobius. -Xmx2G -Xms1G -jar /home/gaian/Desktop/Naveen/Mobius/mobius-content-service/target/mobius-content-service.jar --server.port=12345 --liquibase.enabled=false --spring.data.mongodb.uri=mongodb://localhost:32769/content_service --spring.datasource.username=sa --spring.datasource.password --dg-toolkit.derby.port=0 --spring.cache.type=NONE SUT: Exception in thread "main" java.lang.reflect.InvocationTargetException SUT: at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) SUT: at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) SUT: at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) SUT: at java.base/java.lang.reflect.Method.invoke(Method.java:569) SUT: at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:491) SUT: at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:503) SUT: Caused by: java.lang.ExceptionInInitializerError SUT: at org.evomaster.client.java.instrumentation.InstrumentingAgent.agentmain(InstrumentingAgent.java:63) SUT: at org.evomaster.client.java.instrumentation.InstrumentingAgent.premain(InstrumentingAgent.java:49) SUT: ... 6 more SUT: Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.findLoadedClass(java.lang.String) accessible: module java.base does not "opens java.lang" to unnamed module @2a84aee7 SUT: at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354) SUT: at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) SUT: at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:200) SUT: at java.base/java.lang.reflect.Method.setAccessible(Method.java:194) SUT: at org.evomaster.client.java.instrumentation.InstrumentingAgent$TransformerForTests.(InstrumentingAgent.java:122) SUT: ... 8 more SUT: *** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message Outstanding error when calling method in invokeJavaAgentMainMethod at ./src/java.instrument/share/native/libinstrument/JPLISAgent.c line: 619 SUT: *** java.lang.instrument ASSERTION FAILED ***: "success" with message invokeJavaAgentMainMethod failed at ./src/java.instrument/share/native/libinstrument/JPLISAgent.c line: 459 SUT: *** java.lang.instrument ASSERTION FAILED *: "result" with message agent load/premain call failed at ./src/java.instrument/share/native/libinstrument/JPLISAgent.c line: 422 SUT: FATAL ERROR in native method: processing of -javaagent failed, processJavaStart failed SUT: Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) SUT: V [libjvm.so+0x8c4012] jni_FatalError+0xc2 SUT: V [libjvm.so+0xa4c48f] JvmtiExport::post_vm_initialized()+0xcf SUT: V [libjvm.so+0xec3f62] Threads::create_vm(JavaVMInitArgs, bool)+0x922 SUT: V [libjvm.so+0x8d2ab6] JNI_CreateJavaVM+0x56 SUT: C [libjli.so+0x3d43] JavaMain+0x93 SUT: C [libjli.so+0x7fdd] ThreadJavaMain+0xd SUT: WARN - SUT is still alive, but its output was closed before producing the initialization message. ERROR - Could not establish connection to retrieve code metrics Going to stop the SUT ERROR - Instrumentation is not active java.lang.IllegalStateException: Instrumentation is not active at org.evomaster.client.java.controller.ExternalSutController.checkInstrumentation(ExternalSutController.java:546) at org.evomaster.client.java.controller.ExternalSutController.bootingSut(ExternalSutController.java:514) at org.evomaster.client.java.controller.internal.EMController.lambda$runSut$21(EMController.java:367) at org.evomaster.client.java.controller.internal.EMController.noKillSwitch(EMController.java:126) at org.evomaster.client.java.controller.internal.EMController.runSut(EMController.java:367) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at shaded.org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) at shaded.org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:124) at shaded.org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:167) at shaded.org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) at shaded.org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:79) at shaded.org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:475) at shaded.org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:397) at shaded.org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) at shaded.org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:255) at shaded.org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) at shaded.org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) at shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:292) at shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:274) at shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:244) at shaded.org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265) at shaded.org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:234) at shaded.org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:680) at shaded.org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394) at shaded.org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346) at shaded.org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:366) at shaded.org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:319) at shaded.org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) at shaded.org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:763) at shaded.org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:551) at shaded.org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) at shaded.org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1369) at shaded.org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) at shaded.org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:489) at shaded.org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) at shaded.org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1284) at shaded.org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at shaded.org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) at shaded.org.eclipse.jetty.server.Server.handle(Server.java:501) at shaded.org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383) at shaded.org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:556) at shaded.org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375) at shaded.org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273) at shaded.org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) at shaded.org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) at shaded.org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) at shaded.org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) at shaded.org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) at shaded.org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) at shaded.org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:135) at shaded.org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806) at shaded.org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938) at java.base/java.lang.Thread.run(Thread.java:1583)
For your Information am using Java 21