Bug in GraphQL Blackbox mode
- Stacktrace
java.lang.reflect.InvocationTargetException: invokedynamic: method=public void org.evomaster.core.problem.graphql.service.GraphQLSampler.initialize(), target=org.evomaster.core.problem.graphql.service.GraphQLSampler@4074023c at com.netflix.governator.lifecycle.LifecycleMethods.methodInvoke(LifecycleMethods.java:316) at com.netflix.governator.lifecycle.LifecycleMethods.methodInvoke(LifecycleMethods.java:298) at com.netflix.governator.lifecycle.LifecycleManager.startInstance(LifecycleManager.java:266) at com.netflix.governator.lifecycle.LifecycleManager.add(LifecycleManager.java:175) at com.netflix.governator.guice.InternalLifecycleModule.onProvision(InternalLifecycleModule.java:81) at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:117) at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66) at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:93) at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:296) at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:169) at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45) at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:60) at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:169) at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:45) at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:213) at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:186) at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:113) at com.google.inject.internal.InjectorImpl.createChildInjector(InjectorImpl.java:239) at com.netflix.governator.guice.LifecycleInjector.createChildInjector(LifecycleInjector.java:331) at com.netflix.governator.guice.LifecycleInjector.createInjector(LifecycleInjector.java:411) at com.netflix.governator.guice.LifecycleInjector.createInjector(LifecycleInjector.java:352) at org.evomaster.core.Main$Companion.init(Main.kt:385) at org.evomaster.core.Main$Companion.initAndRun(Main.kt:160) at org.evomaster.core.Main$Companion.main(Main.kt:84) at org.evomaster.core.Main.main(Main.kt) Caused by: javax.ws.rs.ProcessingException: protocol = http host = null at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:309) at org.glassfish.jersey.client.JerseyInvocation.lambda$invoke$0(JerseyInvocation.java:630) at org.glassfish.jersey.client.JerseyInvocation.call(JerseyInvocation.java:665) at org.glassfish.jersey.client.JerseyInvocation.lambda$runInScope$3(JerseyInvocation.java:659) at org.glassfish.jersey.internal.Errors.process(Errors.java:292) at org.glassfish.jersey.internal.Errors.process(Errors.java:274) at org.glassfish.jersey.internal.Errors.process(Errors.java:205) at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:390) at org.glassfish.jersey.client.JerseyInvocation.runInScope(JerseyInvocation.java:659) at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:629) at org.evomaster.core.problem.graphql.IntrospectiveQuery.fetchSchema(IntrospectiveQuery.kt:77) at org.evomaster.core.problem.graphql.service.GraphQLSampler.initForBlackBox(GraphQLSampler.kt:91) at org.evomaster.core.problem.graphql.service.GraphQLSampler.initialize(GraphQLSampler.kt:31) at com.netflix.governator.lifecycle.LifecycleMethods.methodInvoke(LifecycleMethods.java:313) ... 26 common frames omitted Caused by: java.lang.IllegalArgumentException: protocol = http host = null at java.base/sun.net.spi.DefaultProxySelector.select(DefaultProxySelector.java:192) at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1181) at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1081) at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:1015) at java.base/sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1367) at java.base/sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1342) at org.glassfish.jersey.client.internal.HttpUrlConnector.lambda$_apply$0(HttpUrlConnector.java:365) at org.glassfish.jersey.message.internal.CommittingOutputStream.commitStream(CommittingOutputStream.java:171) at org.glassfish.jersey.message.internal.CommittingOutputStream.commitStream(CommittingOutputStream.java:165) at org.glassfish.jersey.message.internal.CommittingOutputStream.write(CommittingOutputStream.java:199) at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$UnCloseableOutputStream.write(WriterInterceptorExecutor.java:276) at java.base/sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:233) at java.base/sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:312) at java.base/sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:316) at java.base/sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:153) at java.base/java.io.OutputStreamWriter.flush(OutputStreamWriter.java:251) at org.glassfish.jersey.message.internal.ReaderWriter.writeToAsString(ReaderWriter.java:170) at org.glassfish.jersey.message.internal.AbstractMessageReaderWriterProvider.writeToAsString(AbstractMessageReaderWriterProvider.java:107) at org.glassfish.jersey.message.internal.StringMessageProvider.writeTo(StringMessageProvider.java:76) at org.glassfish.jersey.message.internal.StringMessageProvider.writeTo(StringMessageProvider.java:36) at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.invokeWriteTo(WriterInterceptorExecutor.java:242) at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:227) at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:139) at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1116) at org.glassfish.jersey.client.ClientRequest.doWriteEntity(ClientRequest.java:461) at org.glassfish.jersey.client.ClientRequest.writeEntity(ClientRequest.java:443) at org.glassfish.jersey.client.internal.HttpUrlConnector._apply(HttpUrlConnector.java:367) at org.glassfish.jersey.client.internal.HttpUrlConnector.apply(HttpUrlConnector.java:265) at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:297) ... 39 common frames omitted - EM Version: 2.0.1-SNAPSHOT
- java --version
openjdk 11.0.21 2023-10-17 OpenJDK Runtime Environment (build 11.0.21+9-post-Ubuntu-0ubuntu122.04) OpenJDK 64-Bit Server VM (build 11.0.21+9-post-Ubuntu-0ubuntu122.04, mixed mode, sharing) - Command
java -jar ../../GraphQL/EvoMaster/core/target/evomaster.jar --problemType GRAPHQL --bbTargetUrl http:localhost:20080/graphql --blackBox true --outputFormat JAVA_JUNIT_4 --maxTime 60s --ratePerMinute 60
hi,
thanks for reporting this issue.
Your URL http:localhost:20080/graphql is wrong. I guess it should had been something like http://localhost:20080/graphql.
Anyway, EvoMaster should give a more meaningful error message in these cases
hi, thanks for reporting this issue. Your URL
http:localhost:20080/graphqlis wrong. I guess it should had been something likehttp://localhost:20080/graphql.Anyway, EvoMaster should give a more meaningful error message in these cases
Thank you. Sorry for the oversight, the remote shell was lagging and I missed the //. If you'd like, I'm happy to get the task for improving the error message. Feel free to assign the issue to me, and I'll open a merge request with the solution as soon as I find some time to work on it. Thanks again for your understanding.
thanks. it is always nice to receive PRs from users :) thanks for your time
btw, if you are testing something running on your local machine, you don't need --ratePerMinute