HTTP-запрос на основе метки времени с использованием Jmeter - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь отправить HTTP-запросы, используя jmeter, для которого я использую HTTP-сэмплер. В запросах http есть параметр TaskID, и эти параметры считываются из файла CSV. Я просто хотел внести изменения в способ отправки HTTP-запроса.

CSV-файл выглядит следующим образом

Time TaskID
9000 42353456
9000 53463464
9000 65475787
9300 42354366
9300 23423535
9600 43545756
9600 53463467
9600 23435346

Теперь я хочу отправить запрос на основе времени. Например во Time 9000 есть 3 TaskID. Поэтому я хочу отправлять 3 HTTP-запроса с этими TaskID одновременно. Точно так же и для других времен. Есть идеи как это сделать?

Обновление: enter image description here

1 Ответ

1 голос
/ 20 февраля 2020

Я создал минимальный рабочий пример для одного возможного решения.

enter image description here

В основном я читаю CSV в сэмплере JSR223 и группирую его следующим образом groovy код в сэмплере "read csv":

import org.apache.jmeter.services.FileServer

current_dir = FileServer.getFileServer().getBaseDir().replace("\\","/")
csv_lines = new File(current_dir + "/test.csv").readLines()

times = []

csv_lines.each { line ->
    line = line.split(",")
    time = line[0]
    task_id = line[1]
    if (vars.getObject(time)){
        tasks = vars.getObject(time)
        tasks.add(task_id)
        vars.putObject(time, tasks)
    }
    else{
        times.add(time)
        vars.putObject(time, [task_id])
    }
}

times.eachWithIndex { time, i ->
    vars.put("time_" + (i+1), time)
    }

Примечания:

  • (i + 1) используется, поскольку контроллер ForEach не будет учитывать 0-й элемент
  • Я использовал "," в качестве разделителя csv и пропустил строку заголовка
  • Сэмплер "initialize task_ids" содержит следующий код:

.

time = vars.get("time")
tasks = vars.getObject(time)

tasks.eachWithIndex {task, i ->
    vars.put(time + "_" + (i+1), task)
}

Надеюсь, это поможет!

...