背景: 我使用石墨来存储性能测试期间生成的数据,理想情况下,我们也希望查看历史图表。因此,我在设置线程组中动态创建一个rootMetricsPrefix文件夹名称并将其分配给属性。后端侦听器位于不同的线程组中,配置使用此文件夹名称作为rootMetricsPrefix -
<elementProp name="rootMetricsPrefix" elementType="Argument">
<stringProp name="Argument.name">rootMetricsPrefix</stringProp>
<stringProp `enter code here`name="Argument.value">${__property(graphiteFolderName)}</stringProp>
<stringProp name="Argument.metadata">=</stringProp>
</elementProp>
症状: 第一次运行JMeter srcript(打开JMeter之后),Graphite DB中没有生成任何文件夹。从第二次运行开始,结果将写入上一次运行中定义的文件夹。例如, 运行1:DynamicResultsFolder_1(未写入结果) 运行2:DynamicResultsFolder_2(写入DynamicResultsFolder_1的结果) 运行3:DynamicResultsFolder_3(写入DynamicResultsFolder_2的结果)
当我将文件夹名称打印到主线程组中的日志时,将打印出预期的文件夹名称。问题似乎是在BackendListener配置中计算$ {__ property(graphiteFolderName)}的方式。
我还尝试将该属性分配给局部变量并使用BackendListener配置中的局部变量,但这不会将任何结果写入数据库。
关于这里发生了什么或者我是否遗漏了明显的东西的任何想法?
答案 0 :(得分:3)
这不起作用,因为Backend Listener参数将在执行setUp ThreadGroup之前传递给组件。
所以发生的事情是第一次没有配置属性,它失败了,然后设置线程组运行并填写下一次运行的属性。
这是你的问题。
也许您可以尝试使用rootMetricsPrefix属性中的__BeanShell函数生成您的名字。