Jmeter vars.put tidak menyimpan variabel (preprosesor jsr223 asyik)

Saya ingin menyimpan variabel di goovy dan menggunakannya nanti

Saya mendapatkan nilai awal dari "variabel yang ditentukan pengguna" (ini ditetapkan oleh pakar)

tetapi ketika saya mengubahnya dan kemudian menaruhnya, mereka tidak disimpan secara permanen

jadi efeknya bekerja sebagai berikut:

... 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

Naskah:

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"));

}

Dapatkah seseorang melihat kesalahan yang saya lakukan di sini (log hanya untuk debugging)


person Robert Stevens    schedule 17.07.2017    source sumber


Jawaban (2)


Jadi saya membuatnya berfungsi:

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"));

}

Masalahnya sepertinya vars.put hanya berfungsi untuk thread saat ini

person Robert Stevens    schedule 17.07.2017

iterasi pertama Anda masuk ke dalam if (req%100 == 0) jadi variabel lokal bertambah 120 detik iterasi tidak masuk ke dalam if (req%100 == 0) jadi cetak vars.get("throughput") yang tetap 600.

Jika Anda ingin variabel diperbarui, masukkan saja ke dalam vars setelah troughput += 120;:

vars.put("throughput",   String.valueOf( troughput));
person user7294900    schedule 17.07.2017
comment
Ubah menjadi vars.put(throughput, String.valueOf( troughput)); - person user7294900; 17.07.2017