javascript - K6 根据 VU Id 顺序请求 API
问题描述
我正在使用 K6、JavaScript 制作负载测试程序,我想在其中根据 VU id 顺序请求 API。
例如,假设我有 5 个不同的有效负载,每个有效负载有 5 个 VU。
我希望我的程序运行,例如,在第 1 分钟,只有 VU-1 将被执行,并使用我的第一个有效负载连续请求,然后在下一分钟,VU-2 将执行,依此类推,直到第 5 分钟,然后再次执行第一个 VU .
根据 VU Id,我将更改有效负载。
我尝试过 JavaScript 的 setTimeout() 方法,但不适用于 k6。
我还尝试了 k6 文档中的方案选项,但它是并行运行的。这是我尝试过的代码片段。
export let options = {
scenarios: {
execution: {
scenario1: {
type: "per-vu-iterations",
vus: 1,
iterations: 1,
maxDuration: "15s",
exec: "scenario1",
},
scenario2: {
type: "per-vu-iterations",
vus: 1,
iterations: 1,
maxDuration: "15s",
exec: "scenario2",
},
}
}
}
export function scenario1() {
let res = http.get("https://test.loadimpact.com/");
console.log(__VU);
check(res, {
"is status 200": (r) => r.status === 200
});
};
export function scenario2() {
let res = http.get("https://test.loadimpact.com/");
console.log(__VU);
check(res, {
"is status 200": (r) => r.status === 200
});
};
他们在K6中有什么方法可以实现这一点吗?
解决方案
我发现这个问题的一个解决方案是使用带有执行器和 startTime 参数的 Scenerios 选项。但是我面临的这个解决方案中的问题是我无法查看单个场景的指标结果。
如果有任何方法可以显示指标,请分享。
这是顺序运行的示例代码。
export let options = {
scenarios: {
scenario_1: {
executor: "constant-vus",
vus: 1,
duration: "1m",
exec: "scenario1",
tags: { test_type: 'api-test1' },
},
scenario_2: {
executor: "constant-vus",
vus: 1,
duration: "1m",
exec: "scenario2",
startTime: "1m",
tags: { test_type: 'api-test2' },
},
},
}
export function scenario1() {
let res = http.get("https://example.com/");
console.log(JSON.stringify(res));
};
export function scenario2() {
let res = http.get("https://example.com/");
console.log(JSON.stringify(res));
};
推荐阅读
- android-studio - 守望者连接被拒绝,阻止 react-native run-android
- java - android连接java server socket,但是server socket没有接收到数据
- android - Android - 无法使用 Filechannel 在 sd 卡上复制文件?
- javascript - 从控制器调用指令方法:AngularJS
- c# - 工具箱中的控件显示为灰色。我该如何使用它们?
- cordova - 'cordova-plugin-play-games-service' 不在 npm 注册表中
- jquery - 按钮单击时的 Jquery 过滤器列表
- java - 春季发布并找不到
- javascript - 如何在 discord.js 中获得“数字”输入
- mainframe - 如何使用 IEBGENER 连接流内数据集和正常顺序数据集?