2017-07-17 222 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