2017-07-17 359 views
2

我想存储在goovy变量,后来的JMeter vars.put犯规保存变量(JSR223预处理常规)

我让我从“用户定义的变量”的初始值使用它们(这些由行家设定)

,但是当我改变他们,然后把他们,他们不会永久保存

这样效果的工作如下:

... INFO ...: throughput was: 600 
... INFO ...: throughput is now: 720 
... INFO ...: throughput is now (get): 720 
... INFO ...: throughput is now (get): 720 
... INFO ...: throughput is now (get): 600 
... INFO ...: throughput is now (get): 600 

脚本:

org.apache.jmeter.testelement.property.JMeterProperty; 


int troughtputEnabled = Integer.parseInt(vars.get("enableTroughput")); 
if(troughtputEnabled == 1){ 
    int req = Integer.parseInt(vars.get("idCounter")); 
    int troughput = Integer.parseInt(vars.get("throughput")); 
    if (req%100 == 0){ 
     log.info("throughput was: " + troughput); 
     troughput += 120; 
     log.info("throughput is now: " + troughput); 
     vars.put("throughput",troughput+""); 
     log.info("throughput is now (get): " + vars.get("throughput")); 
    } 
    log.info("throughput is now (get): " + vars.get("throughput")); 

} 

有人可以看到我做什么错在这里(日志仅用于调试)

回答

1

所以我得到它的工作:

import org.apache.jmeter.testelement.property.JMeterProperty; 
import org.apache.jmeter.util.JMeterUtils; 

int troughtputEnabled = Integer.parseInt(vars.get("enableTroughput")); 
if(troughtputEnabled == 1){ 
    int req = Integer.parseInt(vars.get("idCounter")); 
    int troughput = Integer.parseInt(vars.get("throughput")); 
    if (req%100 == 0){ 
     log.info("throughput was: " + troughput); 
     troughput += 120; 
     log.info("throughput is now: " + troughput); 
     vars.put("throughput",troughput+""); 
     log.info("throughput is now (get):---------------- " + vars.get("throughput")); 
     JMeterUtils.setProperty("troughput", troughput +""); 

    } 
    else 
    { 
     String tempTroughput = JMeterUtils.getProperty("troughput"); 
     if (tempTroughput != null && !tempTroughput.equals("")){ 
      vars.put("throughput",tempTroughput+""); 
     } 

    } 
    log.info("throughput is now (get): " + vars.get("throughput")); 

} 

这个问题似乎是vars.put只适用于当前线程

0
你进去 if (req%100 == 0)所以局部变量是由120 第二次迭代增量不进去 if (req%100 == 0)

第一次迭代,从而打印vars.get("throughput")它可以停留600

如果希望变量是刚刚更新的把它放在瓦尔troughput += 120;后:

vars.put("throughput", String.valueOf(troughput)); 
+0

是已经存在(后log.info) –

+0

更改为vars.put (“throughput”,String.valueOf(troughput)); – user7294900