K6 как сделать необработанный (не кодированный) пост

Я пытаюсь использовать K6, чтобы загрузить тестовый прометей pushgateway, и он хочет сообщения в следующем формате.

http_request_duration_seconds_bucket{le="0.05"} 24054
http_request_duration_seconds_bucket{le="0.1"} 33444
http_request_duration_seconds_bucket{le="0.2"} 100392

должен быть перевод строки в конце каждой строки (и один дополнительный в конце) - однако мне кажется, что я получаю только строки в кодировке URL, такие как%20 для пробела и т. д. Можно ли как-нибудь опубликовать необработанные строки?

1 ответ

Если вы просто сконструируете тело как строку и передадите его таким образом http.post(), он должен быть отправлен как есть, без каких-либо изменений. Этот код должен проиллюстрировать это, используя httpbin.org:

import http from "k6/http";
import crypto from "k6/crypto";

let payload = `http_request_duration_seconds_bucket{le="0.05"} 24054
http_request_duration_seconds_bucket{le="0.1"} 33444
http_request_duration_seconds_bucket{le="0.2"} 100392
`;

export default function (data) {
    console.log(crypto.sha256(payload, "hex"));
    let resp = http.post("https://httpbin.org/anything", payload);
    console.log(crypto.sha256(resp.json().data, "hex"));
    console.log(resp.body);
}

он выведет что-то вроде этого:

INFO[0000] 773f0d81713fca0663ad7a01135bf674b93b0859854b2248368125af3f070d29 
INFO[0001] 773f0d81713fca0663ad7a01135bf674b93b0859854b2248368125af3f070d29 
INFO[0001] {
  "args": {}, 
  "data": "http_request_duration_seconds_bucket{le=\"0.05\"} 24054\nhttp_request_duration_seconds_bucket{le=\"0.1\"} 33444\nhttp_request_duration_seconds_bucket{le=\"0.2\"} 100392\n", 
  "files": {}, 
  "form": {}, 
  "headers": {
    "Connection": "close", 
    "Content-Length": "161", 
    "Host": "httpbin.org", 
    "User-Agent": "k6/0.23.1 (https://k6.io/)"
  }, 
  "json": null, 
  "method": "POST", 
  "url": "https://httpbin.org/anything"
}

Другие вопросы по тегам