Скрипт k6: как разобрать информацию о файле для использования в HTTP-запросе - PullRequest
0 голосов
/ 31 августа 2018

Я новичок в k6 и новичок в JS. Я пытаюсь прочитать список из плоского файла, который я экспортировал из столбца в БД. Я хочу открыть этот файл и пройтись по списку, добавляя каждый элемент в качестве параметра запроса для моего HTTP-вызова. Я не могу понять, как поступить.

В качестве примера, если это мой файл:

employees.txt

01111
02222
06666
04444
09999

и вот мой сценарий k6 ( perf-employee.js )

import http from "k6/http";
import { sleep } from "k6";

export let options = {
  vus: 3,
  duration: "5s" 
};

var data = {some type of parsing her?}.open("./employees.txt");

export default function() {
  http.get("http://www.example.com/employee?employee_num={number-here}“);
  sleep(1);
};

Будем весьма признательны за любые указания относительно направления действий.

1 Ответ

0 голосов
/ 03 сентября 2018

open() возвращает простую строку (или двоичный файл, если вы используете флаг b), поэтому вы можете проанализировать его, просто преобразовав его в массив (каждая строка в своей строке массива ) с помощью метода JavaScript String.split(). Или, если вы хотите прочитать более сложный файл данных, используйте метод JSON и JSON.parse(), чтобы преобразовать его непосредственно в объект JavaScript - взгляните на первый пример по ссылке выше.

Затем, используя переменные контекста исполнения k6 , вы можете сделать что-то вроде этого:

import http from "k6/http";
import { sleep } from "k6";

var data = open("./employees.txt").split(/\r?\n/);

export let options = {
    vus: 3,
    duration: "5s"
};


export default function () {
    var employee = data[__ITER % data.length];
    console.log(`VU ${__VU} on iteration ${__ITER} has employee ID ${employee}...`)
    http.get(`http://www.example.com/employee?employee_num=${employee}`);
    sleep(1);
};

вы должны увидеть что-то вроде этого в выводе скрипта:

INFO[0001] VU 2 on iteration 0 has employee ID 01111... 
INFO[0001] VU 1 on iteration 0 has employee ID 01111... 
INFO[0001] VU 3 on iteration 0 has employee ID 01111... 
INFO[0002] VU 2 on iteration 1 has employee ID 02222... 
INFO[0002] VU 1 on iteration 1 has employee ID 02222... 
INFO[0002] VU 3 on iteration 1 has employee ID 02222... 
INFO[0003] VU 2 on iteration 2 has employee ID 06666... 
INFO[0003] VU 3 on iteration 2 has employee ID 06666... 
INFO[0003] VU 1 on iteration 2 has employee ID 06666... 
INFO[0004] VU 2 on iteration 3 has employee ID 04444... 
INFO[0004] VU 1 on iteration 3 has employee ID 04444... 
INFO[0004] VU 3 on iteration 3 has employee ID 04444... 
INFO[0005] VU 2 on iteration 4 has employee ID 09999... 
INFO[0005] VU 1 on iteration 4 has employee ID 09999... 
INFO[0005] VU 3 on iteration 4 has employee ID 09999... 
...