I've used javascript in Neoload before to write things to the log but am finding with 6.6 it causes execution to crash.
It'll execute a couple of times fine and then there's a stack dump in the log.
There's a stack dump in the log:
The first couple of lines are the correct output then the dump!
2018/11/13 16:12:27 DEBUG - neoload.JavaScript.writeLog: Invoice quni00002with 00002 lines has status Submitted
2018/11/13 16:12:30 DEBUG - neoload.JavaScript.writeLog: Invoice quni00004with 00004 lines has status Submitted
2018/11/13 16:12:34 FATAL - neoload.Misc: Error while calling evaluateScript method java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.neotys.nl.js.f.a(f.java:50)
at com.neotys.nl.lg.engine.Q.internalExecute(Q.java:61)
at com.neotys.nl.lg.engine.l.a(l.java:146)
at com.neotys.nl.lg.engine.v.c(v.java:125)
at com.neotys.nl.lg.engine.w.internalExecute(w.java:83)
at com.neotys.nl.lg.engine.l.a(l.java:146)
at com.neotys.nl.lg.engine.H.i(H.java:251)
at com.neotys.nl.lg.engine.H.internalExecute(H.java:98)
at com.neotys.nl.lg.engine.l.a(l.java:146)
at com.neotys.nl.lg.engine.c.a(c.java:177)
at com.neotys.nl.lg.engine.c.run(c.java:108)
Caused by: java.lang.IllegalAccessError: class sun.reflect.GeneratedMethodAccessor9 cannot access its superclass sun.reflect.MethodAccessorImpl
at sun.misc.Unsafe.defineClass(Native Method)
at sun.reflect.ClassDefiner.defineClass(ClassDefiner.java:63)
at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:399)
at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:394)
at java.security.AccessController.doPrivileged(Native Method)
at sun.reflect.MethodAccessorGenerator.generate(MethodAccessorGenerator.java:393)
at sun.reflect.MethodAccessorGenerator.generateMethod(MethodAccessorGenerator.java:75)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:53)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.neotys.nl.js.c.a(c.java:38)
at com.neotys.nl.js.c.g(c.java:102)
at com.neotys.nl.js.api.i.e(i.java:90)
at com.neotys.nl.js.api.VariableManager.jsFunction_getValue(VariableManager.java:67)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:161)
at org.mozilla.javascript.FunctionObject.call(FunctionObject.java:476)
at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66)
at org.mozilla.javascript.gen.writeLog_1._c_script_0(writeLog:11)
at org.mozilla.javascript.gen.writeLog_1.call(writeLog)
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:426)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3178)
at org.mozilla.javascript.gen.writeLog_1.call(writeLog)
at org.mozilla.javascript.gen.writeLog_1.exec(writeLog)
at com.neotys.nl.js.api.d.evaluateScript(d.java:351)
... 15 more
Hello Clive,
Are there a lot data like a big size file variable involved in your javascript action ?
Best Regards,
There is a 20 MB file used as a parameter file. This doesn't cause any problems without using the javascript.
There's loads of memory available on the agent boxes - they've 230 GB assigned.
The java script that fails is very basic - used very similar before with Neoload no problems.
var lineCounter = context.variableManager.getValue("lineCounter");
if ( lineCounter==null) {
context.fail("Variable ' lineCounter' not found");
}
var invoiceNumber = context.variableManager.getValue("invoiceNumber");
if ( invoiceNumber==null) {
context.fail("Variable 'invoiceNumber' not found");
}
var invoiceStatus = context.variableManager.getValue("invoiceStatus");
if ( invoiceStatus==null) {
context.fail("Variable 'invoiceStatus' not found");
}
// Do some computation using the methods
// you defined in the JS Library
logger.debug("Invoice " + invoiceNumber + " with "+ lineCounter + " lines has status " + invoiceStatus);