【问题标题】:K6 Request an API sequentially based on VU IdK6 根据 VU Id 顺序请求 API
【发布时间】:2021-01-29 09:59:25
【问题描述】:

我正在使用 K6、JavaScript 制作负载测试程序,我想在其中根据 VU id 顺序请求 API。

例如,假设我有 5 个不同的有效负载,每个有效负载有 5 个 VU。

我希望我的程序运行,例如,在第 1 分钟内,只有 VU-1 将被执行,并使用我的第一个有效负载连续请求,然后在下一分钟,VU-2 将执行,依此类推,直到第 5 分钟,然后再次执行第 1 个 VU将被执行。

根据 VU Id,我将更改有效负载。

我尝试过 JavaScript 的 setTimeout() 方法,但不适用于 k6。

我还尝试了 k6 文档中的方案选项,但它是并行运行的。这是我试过的代码sn-p。

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 中有什么方法可以实现这一点吗?

【问题讨论】:

    标签: javascript timer k6


    【解决方案1】:

    我发现这个问题的一个解决方案是使用带有执行器和 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));
      
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-24
      相关资源
      最近更新 更多