如何在分布式测试中将JMeter JSR223采样器函数输出传递给Master?

时间:2015-10-06 17:56:01

标签: webdriver jmeter jsr223

场景:5个从站,1个主JMeter环境。 Jmeter项目基本上从列表中获取URL,JSR223采样器具有Web驱动程序代码来调用url并测量每个URL的总加载时间。

问题陈述:在执行单个用户测试时,我可以轻松地将JSR223采样器中的函数值输出到csv文件并获得结果。但是,在分布式环境中运行相同的测试时,每个节点都会写入自己的csv文件,并且很难从中汇总结果。有什么帮助吗?

另外,我不能依赖于Jmeter master中的聚合计算,因为它将是线程的总时间,而我的函数计算确切的渲染时间,这是我感兴趣的并写入csv。

一些代码<>     while(javaScriptDriver.executeScript(“return window.xx_NumRequests();”,new Object [0])> 0){

    Thread.sleep(100);
}

var endTime = (new Date()).getTime();
var millisecondsLoading = endTime - startTime;
System.out.println( millisecondsLoading);
f = new FileOutputStream("c:\\Jmeter\\result.csv", true);
p = new PrintStream(f);
p.println(report);
p.println(millisecondsLoading);
p.close();
f.close();
driver.quit();

关于如何在我的环境中运行多个从设备时实现此聚合结果的任何想法?

感谢。

1 个答案:

答案 0 :(得分:0)

我会推荐以下内容:

  1. 在WebDriver Sampler中定义一个JMeter变量,即millisecondsLoading为:

    var vars = org.apache.jmeter.threads.JMeterContextService.getContext().getVariables()
    vars.put('millisecondsLoading',millisecondsLoading)
    
  2. 在所有从属计算机上,将以下行添加到 user.properties 文件

    sample_variables=millisecondsLoading
    
  3. 在下一个从属JMeter引擎启动时,它会将新列添加到.jtl文件中,该文件将保存${millisecondsLoading}变量值,在测试结束时,master将从slave中收集结果文件,你将得到你正在寻找的聚合输出对于。

    参考文献: