I recently updated the version of karate I'm using from version 1.0.0 to 1.1.0. After upgrading I noticed my gatling load test is crashing. I believe the test is failing due to Runner.runFeature returning a null value.
The test loads some user/pw values from json file and then runs a feature which returns an auth token, it then uses gatling feeder to feed different auth tokens in for the various requests in the load test.
The code snippet here is where the error is occurring:
public static void createAccessTokens() throws IOException {
AuthValues[] creds = loadAuthCreds();
for(AuthValues cred : creds) {
Map<String,Object> account = new HashMap<>();
account.put("username", cred.getUsername());
account.put("password", cred.getPassword());
Map<String,Object> result = Runner.runFeature("classpath:token/GetAuthTokenForPerformance.feature", account, true);
System.out.println("Result value : " + result);
tokens.add(result.get("accesstoken").toString());
}
}
By doing a simple println in this above code I can see the value of result is null after the first credentials are grabbed. Here is the stacktrace of the failure:
17:11:11.660 [main] INFO io.gatling.compiler.ZincCompiler$ - compiling 1 Scala source to ...\target\test-classes ...
17:11:15.291 [main] INFO io.gatling.compiler.ZincCompiler$ - done compiling
17:11:17.599 [main] INFO i.g.c.config.GatlingConfiguration$ - Gatling will try to use 'gatling.conf' as config file.
17:11:18.510 [GatlingSystem-akka.actor.default-dispatcher-4] INFO akka.event.slf4j.Slf4jLogger - Slf4jLogger started
Result value : null
17:11:22.045 [main] ERROR io.gatling.app.Gatling$ - Run crashed
java.lang.reflect.InvocationTargetException: null
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at io.gatling.app.Runner.run0(Runner.scala:62)
at io.gatling.app.Runner.run(Runner.scala:49)
at io.gatling.app.Gatling$.start(Gatling.scala:83)
at io.gatling.app.Gatling$.fromArgs(Gatling.scala:45)
at io.gatling.app.Gatling$.main(Gatling.scala:37)
at io.gatling.app.Gatling.main(Gatling.scala)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at io.gatling.mojo.MainWithArgsInFile.runMain(MainWithArgsInFile.java:53)
at io.gatling.mojo.MainWithArgsInFile.main(MainWithArgsInFile.java:34)
Caused by: java.lang.NullPointerException: null
at util.CreateTokens.createAccessTokens(CreateTokens.java:47)
at performance.CallATBTestSimulation.<init>(CallATBTestSimulation.scala:30)
... 16 common frames omitted
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at io.gatling.mojo.MainWithArgsInFile.runMain(MainWithArgsInFile.java:53)
at io.gatling.mojo.MainWithArgsInFile.main(MainWithArgsInFile.java:34)
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at io.gatling.app.Runner.run0(Runner.scala:62)
at io.gatling.app.Runner.run(Runner.scala:49)
at io.gatling.app.Gatling$.start(Gatling.scala:83)
at io.gatling.app.Gatling$.fromArgs(Gatling.scala:45)
at io.gatling.app.Gatling$.main(Gatling.scala:37)
at io.gatling.app.Gatling.main(Gatling.scala)
... 6 more
Caused by: java.lang.NullPointerException
at util.CreateTokens.createAccessTokens(CreateTokens.java:47)
at performance.CallATBTestSimulation.<init>(CallATBTestSimulation.scala:30)
... 16 more
For the time being I have reverted back to version 1.0.0 as I do not have any issues with that version. Was there some breaking change after version 1.0.0 that I am missing? Something I need to update in my test?
Thanks in advance