Я пытаюсь сгенерировать ступенчатую нагрузку для теста производительности на k6 для веб-сокета. обычные настройки, такие как
export let options = {
stages: [
{
"duration": "0m30s",
"target": 10
},
{
"duration": "0m30s",
"target": 10
},
{
"duration": "0m30s",
"target": 0
}
],
};
на к6 не работает. Я попробовал --vus 10 --i 10
, но он просто проходит сценарий 10 раз и спит до конца 10 минут.
Затем я попробовал k6 run --vus 5 --stage 3m:10,5m:10,10m:35,1m30s:0
, но результат почти такой же. Как создать активную нагрузку с пошаговым шаблоном для тестирования веб-сокетов? подключаться каждый раз после завершения потока?
Тестовый поток:
import ws from "k6/ws";
import { check } from "k6";
export default function() {
const url = "ws://URL:8000/";
const params = { tags: { my_tag: "hello" } };
const response = ws.connect(url, params, function(socket) {
socket.on("open", function open() {
console.log("connected");
socket.send(Date.now());
var url = "ws://URL:8000/";
var response = ws.connect(url, null, function(socket) {
socket.on('open', function() {
socket.send('Hello');
socket.send('How are you?');
});
socket.on("close", () => console.log("disconnected"));
socket.on("error", (e) => {
if (e.error() != "websocket: close sent") {
console.log("An unexpected error occured: ", e.error());
}
});
check(response, { "status is 101": r => r && r.status === 101 });
})
})
})
}