jMeter-Beanshell bsh.shared hashmap数据在init文件中?

jMeter-Beanshell bsh.shared hashmap数据在init文件中?,jmeter,init,beanshell,Jmeter,Init,Beanshell,我正在做一个jMeter项目,它引发了各种各样的问题。这主要是由于在整个运行过程中存储和确定变量数据的范围 现在,我的工作非常顺利,我正在使用Beanshell共享hashmap在整个运行过程中存储数据。我不需要担心线程安全,因为我这样做 它可以工作,但每次线程组运行时,它都会重新初始化自身。尽管将初始化步骤置于所有线程组之外 因此,据我所知,解决方案是将所有启动数据放入一个初始化文件中,该文件只在启动时运行一次。但我不知道该怎么做?我已经将以前使用的Beanshell预处理器中的代码复制到了一

我正在做一个jMeter项目,它引发了各种各样的问题。这主要是由于在整个运行过程中存储和确定变量数据的范围

现在,我的工作非常顺利,我正在使用Beanshell共享hashmap在整个运行过程中存储数据。我不需要担心线程安全,因为我这样做

它可以工作,但每次线程组运行时,它都会重新初始化自身。尽管将初始化步骤置于所有线程组之外

因此,据我所知,解决方案是将所有启动数据放入一个初始化文件中,该文件只在启动时运行一次。但我不知道该怎么做?我已经将以前使用的Beanshell预处理器中的代码复制到了一个“.bshrc”文件中,并用“.bshrc”文件的位置更新了jMeter属性文件,但它似乎不起作用。它实际上似乎什么都没做。当我运行测试时,不存在任何值,所有操作都失败

我试过使用:

beanshell.init.file=../bin/data.bshrc 和 beanshell.preprocessor.init=../bin/data.bshrc

我试图找到一些设置init文件的白痴指南,但我找不到任何有用的东西。这是我第一次认真使用Beanshell,我的Java知识充其量也非常有限

目前,我正在通过启用原始Beanshell预处理器运行一次测试来绕过它。这将设置hashmaps,从那时起它们将驻留在内存中。我停止此运行,禁用预处理器,所有后续运行都正常工作

有人吗?

我建议使用在任何其他线程组之前执行的线程组,并使用Beanshell采样器(如

bsh.shared.myMap = new java.util.HashMap();
bsh.shared.myMap.put("foo","bar");
// any other operations
之后,在主线程组中,您可以访问任何启用Beanshell的测试元素(采样器、前置/后置处理器、断言)中的
myMap
值,如下所示:

2014/07/22 10:06:48信息-jmeter.util.BeanShellTestElement:foo=bar

有关ApacheJMeter中的Beanshell脚本和一种Beanshell食谱的更多详细信息,请参阅指南

如果您将Beanshell用于“繁重”的操作,我建议您考虑切换到,在这种情况下,您将获得与本机Java代码相当的性能

我建议使用在任何其他线程组之前执行的线程组,并使用Beanshell采样器(如

bsh.shared.myMap = new java.util.HashMap();
bsh.shared.myMap.put("foo","bar");
// any other operations
之后,在主线程组中,您可以访问任何启用Beanshell的测试元素(采样器、前置/后置处理器、断言)中的
myMap
值,如下所示:

2014/07/22 10:06:48信息-jmeter.util.BeanShellTestElement:foo=bar

有关ApacheJMeter中的Beanshell脚本和一种Beanshell食谱的更多详细信息,请参阅指南


如果您将Beanshell用于“繁重”的操作,我建议您考虑切换到,在这种情况下,您将获得与本机Java代码相当的性能

是的。这正是我昨天发布这篇文章后不久将其更改为的内容。它工作得很好。但是使用外部文件会更容易,所以我仍然希望初始化文件能够正常工作。我知道这是可以做到的,我只是不知道如何设置它。我只需要使用Beanshell的东西,就可以通过多个线程组访问共享阵列。不需要是线程安全的,因为按照测试的设置方式,一个线程组永远不会使用另一个正在使用的实例。但如果我有一个集中的数据池,它会使它更具可扩展性。因此就有了arrays.yes。这正是我昨天发布这篇文章后不久将其更改为的内容。它工作得很好。但是使用外部文件会更容易,所以我仍然希望初始化文件能够正常工作。我知道这是可以做到的,我只是不知道如何设置它。我只需要使用Beanshell的东西,就可以通过多个线程组访问共享阵列。不需要是线程安全的,因为按照测试的设置方式,一个线程组永远不会使用另一个正在使用的实例。但如果我有一个集中的数据池,它会使它更具可扩展性。因此是数组。