1

我正在从 3.0 升级到 JMeter 3.2 并收到以下 stackoverflow 错误。除此之外,我无法验证我的脚本。

2017-09-13 16:17:30,804 INFO o.a.j.t.JMeterThread: Thread started: UI Navigation 1-1
2017-09-13 16:17:37,311 INFO o.a.j.t.JMeterThread: Thread started: UI Navigation 1-2
2017-09-13 16:17:38,904 INFO o.a.j.t.JMeterThread: Thread finished: UI Navigation 1-1
2017-09-13 16:17:38,904 ERROR o.a.j.JMeter: Uncaught exception: 
java.lang.StackOverflowError: null
at java.lang.Class.getDeclaredFields0(Native Method) ~[?:1.8.0_144]
at java.lang.Class.privateGetDeclaredFields(Unknown Source) ~[?:1.8.0_144]
at java.lang.Class.getDeclaredField(Unknown Source) ~[?:1.8.0_144]
at jdk.nashorn.internal.runtime.Context$ContextCodeInstaller$1.run(Context.java:209) ~[nashorn.jar:?]
at jdk.nashorn.internal.runtime.Context$ContextCodeInstaller$1.run(Context.java:204) ~[nashorn.jar:?]
at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_144]
at jdk.nashorn.internal.runtime.Context$ContextCodeInstaller.initialize(Context.java:204) ~[nashorn.jar:?]
at jdk.nashorn.internal.codegen.CompilationPhase$InstallPhase.transform(CompilationPhase.java:508) ~[nashorn.jar:?]
at jdk.nashorn.internal.codegen.CompilationPhase.apply(CompilationPhase.java:624) ~[nashorn.jar:?]
at jdk.nashorn.internal.codegen.Compiler.compile(Compiler.java:655) ~[nashorn.jar:?]
at jdk.nashorn.internal.runtime.Context.compile(Context.java:1317) ~[nashorn.jar:?]
at jdk.nashorn.internal.runtime.Context.compileScript(Context.java:1251) ~[nashorn.jar:?]
at jdk.nashorn.internal.runtime.Context.compileScript(Context.java:627) ~[nashorn.jar:?]
at jdk.nashorn.api.scripting.NashornScriptEngine.compileImpl(NashornScriptEngine.java:535) ~[nashorn.jar:?]
at jdk.nashorn.api.scripting.NashornScriptEngine.compileImpl(NashornScriptEngine.java:524) ~[nashorn.jar:?]
at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:402) ~[nashorn.jar:?]
at jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:155) ~[nashorn.jar:?]
at org.apache.jmeter.functions.JavaScript.executeWithNashorn(JavaScript.java:142) ~[ApacheJMeter_functions.jar:3.2 r1790748]
at org.apache.jmeter.functions.JavaScript.execute(JavaScript.java:103) ~[ApacheJMeter_functions.jar:3.2 r1790748]
at org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:141) ~[ApacheJMeter_core.jar:3.2 r1790748]
at org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:116) ~[ApacheJMeter_core.jar:3.2 r1790748]
at org.apache.jmeter.testelement.property.FunctionProperty.getStringValue(FunctionProperty.java:101) ~[ApacheJMeter_core.jar:3.2 r1790748]
at org.apache.jmeter.testelement.AbstractTestElement.getPropertyAsString(AbstractTestElement.java:281) ~[ApacheJMeter_core.jar:3.2 r1790748]
at org.apache.jmeter.control.SwitchController.getSelection(SwitchController.java:133) ~[ApacheJMeter_components.jar:3.2 r1790748]
at org.apache.jmeter.control.SwitchController.getSelectionAsInt(SwitchController.java:91) ~[ApacheJMeter_components.jar:3.2 r1790748]
at org.apache.jmeter.control.SwitchController.next(SwitchController.java:63) ~[ApacheJMeter_components.jar:3.2 r1790748]
at org.apache.jmeter.control.GenericController.nextIsAController(GenericController.java:219) ~[ApacheJMeter_core.jar:3.2 r1790748]
at org.apache.jmeter.control.GenericController.next(GenericController.java:173) ~[ApacheJMeter_core.jar:3.2 r1790748]
at org.apache.jmeter.control.LoopController.next(LoopController.java:123) ~[ApacheJMeter_core.jar:3.2 r1790748]
at org.apache.jmeter.control.LoopController.nextIsNull(LoopController.java:151) ~[ApacheJMeter_core.jar:3.2 r1790748]
at org.apache.jmeter.control.GenericController.next(GenericController.java:168) ~[ApacheJMeter_core.jar:3.2 r1790748]
at org.apache.jmeter.control.LoopController.next(LoopController.java:123) ~[ApacheJMeter_core.jar:3.2 r1790748]

-- 这持续了 1000 行

这仅影响我的一个脚本,所有其他脚本都运行良好。

4

1 回答 1

0

如果您仔细查看堆栈跟踪,它会抱怨 SwitchController 这是我需要的线索。我在我的脚本中使用一个开关控制器来运行不同的事务控制器。我正在使用“使用开关控制器:随机加权值”页面中提到的逻辑。

${__javaScript( var s="0112223333"; new Number(s.charAt( Math.floor(Math.random()*s.length) )) )}

正是这段代码导致了问题。它现在返回一个浮点数对象而不是一个整数。

我的队友使用以下代码解决了这个问题。

${__javaScript( var s="0112223333"; s.charAt( Math.floor(Math.random()*s.length) ))}

此代码返回一个整数,我的开关再次工作。这将影响使用此逻辑并升级到 JMeter 3.2 的任何人

于 2017-09-14T17:26:05.433 回答