我需要读取一次文件,并在采样器中进一步处理其结果。 我的策略是ThreadGroup - > BeanShell预处理器+ BeanShell采样器
我的预处理器应该为整个线程组读取一次文件,并将结果在Sampler中用于特定的no。线程。(我不想为每个线程读取文件)
我在预处理器中编写了文件阅读器代码,现在需要在采样器中使用结果。
答案 0 :(得分:2)
现在回答:
int number = ctx.getThread().getThreadNum(); // get current thread number
props.put("value_for_thread_" + number, "foo"); // store some value specific for the specific thread
String value = props.get("value_for_thread_5"); // get value for thread 5
其中:
ctx
- 是JMeterContext props
- 代表JMeter Properties,java.util.Properties的实例,派生所有方法和字段,为整个JVM实例提供全局。请参阅JavaDocs了解上述对象以了解可以执行的其他操作,并参阅Beanshell vs JSR223 vs Java JMeter Scripting: The Performance-Off You've Been Waiting For!指导有关安装groovy脚本引擎,脚本最佳实践和Beanshell基准,JSR223 + groovy和Java代码的说明。
答案 1 :(得分:1)
使用Jmeter variables存储您已阅读的值,然后在后续步骤中使用它们。请注意,每次执行线程循环时,预处理器都会运行。
在您的beanshell预处理器中,您可以存储如下变量:
vars.put("name","value")
然后以
的形式访问它vars.get("name")
在beanshell中,或在任何其他采样器的字段中为${name}
。
请注意,如果您的预处理器是主线程组的一部分,则每次线程循环时都会运行它。如果这是一项昂贵的操作,或者在运行期间值没有变化,您可能需要使用setup thread group。