首页 > 解决方案 > 控制器失败时的JMeter

问题描述

我希望能够运行此测试计划的多次迭代。

Thread Group
While ${__javaScript("${user}" != "<EOF>",)}
  csv1 config
  If "${user}" != "<EOF>"
    Module Controller

While ${__javaScript("${user2}" != "<EOF>",)}
  csv2 config
  If "${user2}" != "<EOF>"
    Module Controller 2

当我运行测试时,在第二个 while 控制器结束时,它输出以下错误:我也尝试只运行 1 个 while 控制器,它具有相同的响应。我不确定如果它能够到达第二个 while 控制器,它为什么不停止当前迭代并开始一个新的迭代。

java.lang.StackOverflowError: null
    at java.lang.Class.getDeclaredFields0(Native Method) ~[?:1.8.0_231]
    at java.lang.Class.privateGetDeclaredFields(Unknown Source) ~[?:1.8.0_231]
    at java.lang.Class.getDeclaredField(Unknown Source) ~[?:1.8.0_231]
    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_231]
    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:5.1.1 r1855137]
    at org.apache.jmeter.functions.JavaScript.execute(JavaScript.java:103) ~[ApacheJMeter_functions.jar:5.1.1 r1855137]
    at org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:136) ~[ApacheJMeter_core.jar:5.1.1 r1855137]
    at org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:111) ~[ApacheJMeter_core.jar:5.1.1 r1855137]
    at org.apache.jmeter.testelement.property.FunctionProperty.getStringValue(FunctionProperty.java:101)
...

提前致谢。

标签: while-loopjmeter

解决方案


我不知道循环控制器是如何工作的,但我用它们来解决这个问题。

Thread Group
  Throughput Controller 
    Loop Controller (size_of_csv)
      csv config
      Module Controller
    Loop Controller 2(size_of_csv 2)
      csv 2 config
      Module Controller 2

推荐阅读