如何在JSR223中存储自定义对象



我在Jmeter中将我的自定义侦听器作为JSR223侦听器。

目前,它将记录附加到文本文件中,然后在测试运行期间调用侦听器(我认为这对测试准确性不好(,但我希望(由侦听器(收集所有数据,并在测试结束后将其保存在一个平静的地方(在拆卸部分(

谷歌找到了很多方法来存储单个变量,比如字符串,但如果我想存储大量复杂的数据集,这是不可接受的。是否有可能通过JSR223将我的自定义对象的Java数组(或类似物(存储为全局变量(在setUp阶段创建(,可用于每个JSR223 lisneners/Samplers等?

如果我制作了";数据保管器";singleton会像我预期的那样工作吗(我不知道GC是如何为JSR223工作的,它是否会清理这个,它是否可用于其他JSR223实例(,它对我的目的来说是好的吗?

只需使用props的简写,它代表正常属性,而正常属性又是:

  1. global,并且可以在其他线程组中和该JVM实例中的任何位置访问
  2. 可以存储您想要的任何对象,而不仅仅是字符串

所以如果你做了这样的事情:

props.put('myObject', yourObject)

在设置线程组中

您可以在其他任何中获得props.get('myObject')的值

关于这个props和其他JMeter API shorthands的更多信息-应该与Groovy一起使用的前8个JMeter Java类

您的问题中的这句话tonns的复杂数据集敲响了警钟。在内存中存储如此大量的数据将对您的执行产生不利影响。您可以预期线程会意外死亡,主要是由于OutOfMemoryException。此外,如果JMeter崩溃,则会丢失在此之前捕获的所有统计信息。您可以调整堆设置,但这只是一个补丁,而不是问题语句的真正解决方案。

您可以继续使用当前的方法保存到本地文件。

最新更新