Необходимо загрузить статический контент в тестах JMETER - PullRequest
0 голосов
/ 23 октября 2019

Мне нужно выяснить способ загрузки содержимого из файла, содержащего список идентификаторов, на этапе предварительной обработки в Jmeter. Это должно происходить только один раз, а не каждый раз для каждого запроса. Таким образом, это должно быть похоже на -

  1. Загрузка всего списка статических идентификаторов из файла один раз.
  2. Для каждого запроса случайным образом выбирайте один идентификатор из этого списка.
  3. POST запрос

Я пытаюсь исследовать препроцессор JSR223, но пока не очень удачно. Также я не уверен, выполняется ли препроцессор для каждого запроса, который мне не нужен.

Мой текущий препроцессор JSR выглядит примерно так:

import java.util.*;
import java.io.*;

try {

    Random generator = new Random();
        List<String> uuids = new ArrayList<String>();
    int n = 1000;

    try(BufferedReader br = new BufferedReader(new FileReader("/uuids.txt"))) {
        String line = br.readLine();

        while (line != null) {
            uuids.add(line);
            line = br.readLine();
        }
    }

    int rn = uuids.get(generator.nextInt(n));
    vars.put("some_file", "/files/" + uuids.get(rn) + ".json.gz");
} catch (Throwable ex) {
    log.error("Something went wrong", ex);
    throw ex;
}```

Ответы [ 2 ]

1 голос
/ 23 октября 2019

Ваш подход немного ошибочен, потому что:

  1. Препроцессор JSR223 выполняется перед каждым запросом в его scope
  2. Препроцессор JSR223 выполняется каждым потоком(виртуальный пользователь)

Поэтому я бы порекомендовал следующее улучшение:

  1. Добавить setUp Group Thread в ваш план тестирования
  2. Добавьте JSR223 Sampler к нему со следующим кодом:

    SampleResult.setIgnore()
    props.put('uuids', new File('uuids.txt').readLines())
    

    это позволит вам прочитать файл только один раз и только одним потоком.

  3. Всякий раз, когда вы хотите получить доступ к случайному uuid, вы можете использовать следующую функцию __ groovy () :

    ${__groovy(props.get('uuids').get(org.apache.commons.lang3.RandomUtils.nextInt(0\,props.get('uuids').size())),)} 
    

Подробнее о сценариях Groovy вJMeter: Apache Groovy - зачем и как его использовать

0 голосов
/ 23 октября 2019

Вы можете использовать вместо плагина JMeter bzm - Конфигурация случайного набора данных CSV

Просто введите имя файла CSV, и он будет генерировать случайный uuid каждый раз

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...