From 612d105a23ed152a0ddd872e0d17f5c34927deac Mon Sep 17 00:00:00 2001 From: kdletters Date: Mon, 11 May 2026 22:18:43 +0800 Subject: [PATCH] fix: resolve k6 loadtest data path --- scripts/loadtest/README.md | 24 ++++++++++++++++++------ scripts/loadtest/k6-works-list.js | 3 ++- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/scripts/loadtest/README.md b/scripts/loadtest/README.md index 209b7ccb..0b406675 100644 --- a/scripts/loadtest/README.md +++ b/scripts/loadtest/README.md @@ -95,17 +95,29 @@ K6 脚本默认只跑公开列表接口;传入 `AUTH_TOKEN` 后会额外跑需 npm run dev ``` -注意端口可能漂移。以启动日志中的实际 api-server 端口为准,然后传给 K6: +注意端口可能漂移。以启动日志中的实际 api-server 端口为准,然后传给 K6。 + +注意:K6 的 `open()` 会按 `k6-works-list.js` 所在目录解析相对路径,因此 `WORKS_DATA` 应写成 `data/works-list.local.json`,不要写成 `scripts/loadtest/data/works-list.local.json`。 + +Bash / Git Bash: ```bash -BASE_URL=http://127.0.0.1: npm run loadtest:k6:works -- --summary-trend-stats="avg,min,med,p(90),p(95),p(99),max" +BASE_URL=http://127.0.0.1: WORKS_DATA=data/works-list.local.json npm run loadtest:k6:works -- --summary-trend-stats="avg,min,med,p(90),p(95),p(99),max" +``` + +PowerShell: + +```powershell +$env:BASE_URL="http://127.0.0.1:" +$env:WORKS_DATA="data/works-list.local.json" +npm run loadtest:k6:works -- --summary-trend-stats="avg,min,med,p(90),p(95),p(99),max" ``` ## Smoke ```bash BASE_URL=http://127.0.0.1:8787 \ -WORKS_DATA=scripts/loadtest/data/works-list.local.json \ +WORKS_DATA=data/works-list.local.json \ SCENARIO=smoke \ DETAIL_RATIO=0 \ npm run loadtest:k6:works @@ -117,7 +129,7 @@ npm run loadtest:k6:works ```bash BASE_URL=http://127.0.0.1:8787 \ -WORKS_DATA=scripts/loadtest/data/works-list.local.json \ +WORKS_DATA=data/works-list.local.json \ SCENARIO=baseline \ VUS=10 \ DURATION=3m \ @@ -136,7 +148,7 @@ npm run loadtest:k6:works ```bash BASE_URL=http://127.0.0.1:8787 \ -WORKS_DATA=scripts/loadtest/data/works-list.local.json \ +WORKS_DATA=data/works-list.local.json \ SCENARIO=spike \ START_RPS=5 \ PEAK_RPS=100 \ @@ -171,7 +183,7 @@ npm run loadtest:k6:works ```bash BASE_URL=http://127.0.0.1:8787 \ -WORKS_DATA=scripts/loadtest/data/works-list.local.json \ +WORKS_DATA=data/works-list.local.json \ SCENARIO=smoke \ DETAIL_RATIO=0.35 \ npm run loadtest:k6:works diff --git a/scripts/loadtest/k6-works-list.js b/scripts/loadtest/k6-works-list.js index e500680b..45e51a82 100644 --- a/scripts/loadtest/k6-works-list.js +++ b/scripts/loadtest/k6-works-list.js @@ -4,7 +4,8 @@ import { SharedArray } from 'k6/data'; import http from 'k6/http'; import { Rate, Trend } from 'k6/metrics'; -const DEFAULT_WORKS_DATA = 'scripts/loadtest/data/works-list.local.json'; +// k6 resolves open() paths relative to this script file, not the shell cwd. +const DEFAULT_WORKS_DATA = 'data/works-list.local.json'; const WORKS_DATA = __ENV.WORKS_DATA || DEFAULT_WORKS_DATA; const BASE_URL = (__ENV.BASE_URL || 'http://127.0.0.1:8787').replace(/\/+$/u, ''); const AUTH_TOKEN = __ENV.AUTH_TOKEN || '';