读取从JSR223断言到Java代码的响应

问题描述 投票:0回答:1

我想从Java代码中读取处理后的值。我的jmx中有一个jsr233断言,该断言处理了值({“ timestamp”:23893865465,“ diff”:34})在JMeterEngine实例中调用run()命令后,我想在Java代码中读取此内容。

我尝试使用SamplerListner,但无法正常工作。我如何阅读该回复。

JSR 233断言代码:

 mport groovy.json.JsonBuilder

String totalIDs = vars.get("assetIdCount_matchNr");
Integer result = Integer.valueOf(totalIDs);
Date currentDate = new Date();
if (result > 10){
    vars.put("SEARCH_SUCCESS_TIMESTAMP",currentDate.getTime().toString());
    log.info("ASSET_CREATION_TIMESTAMP:" + props.get("ASSET_CREATION_TIMESTAMP"));
    log.info("ASSET_CREATION_TIMESTAMPAfter:" + props.get("ASSET_CREATION_TIMESTAMP"));
    log.info("SEARCH_SUCCESS_TIMESTAMP:" + vars.get("SEARCH_SUCCESS_TIMESTAMP"));
    def diff = Long.valueOf(vars.get("SEARCH_SUCCESS_TIMESTAMP").toString()) - Long.valueOf(props.get("ASSET_CREATION_TIMESTAMP").toString());
    def timestamp = vars.get("SEARCH_SUCCESS_TIMESTAMP");
    vars.putObject("Diff", diff);
    log.info(String.valueOf(diff));

    def json = new JsonBuilder()
    def root = json timestamp: "5241234134134", diff: "345"

    def file  = new File(vars.get("file_location").toString())
    file.write('\n'+json.toString());
    sleep 10

    AssertionResult.setFailure(true);
}

Java代码

 StandardJMeterEngine jmeterSecondary = configJmeter(jmxFileName, argumentObject, jmeter, jMeterAssetECListnerService); //get the jmeter to run by configuring it

                jmeterSecondary.run();
              // I want to get the timestamp and diff here
                jmeterSecondary.reset();
                jmeterSecondary.exit();

提前感谢!

java jmeter jmx
1个回答
0
投票

我能想到的最简单的选择是使用System.setProperty()函数将值写入JSR223断言中的Java系统属性中。

系统属性是整个JVM的全局属性,因此您可以在调用System.getProperty()之后使用jmeterSecondary.run();函数访问它>

示例用法:

enter image description here

有关不同的JMeter属性类型及其使用方式的更多信息:Apache JMeter Properties Customization Guide

© www.soinside.com 2019 - 2024. All rights reserved.