From 3137bce8d52f0802c0ede254959c99586ac72228 Mon Sep 17 00:00:00 2001 From: k2safe Date: Sun, 20 Sep 2026 02:10:17 +0800 Subject: [PATCH] test: allow configurable admission sample size --- docs/api/load.md | 2 ++ docs/reports/phase-6-load.md | 2 +- scripts/test-mysql.sh | 4 +++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/api/load.md b/docs/api/load.md index 119f824..76a1caf 100644 --- a/docs/api/load.md +++ b/docs/api/load.md @@ -16,6 +16,8 @@ go run ./cmd/orbit-load \ -timeout 10s ``` +标准 MySQL 集成脚本默认使用24次、4并发的冒烟样本;需要复现扩大隔离样本时可执行 `ORBIT_TEST_LOAD_REQUESTS=1000 ORBIT_TEST_LOAD_CONCURRENCY=32 make integration`。该环境变量只改变测试脚本的请求数量和并发,不改变服务端或 SDK 契约。 + 也可以直接传 `-url`、`-token` 和 `-queue`。命令拒绝非 32 位小写十六进制队列 ID,默认上限是 100000 次请求和 1024 个并发请求;并发数超过请求数时自动降到请求数。每次请求的超时独立计算,超时或 HTTP 错误不会再次提交。 每个任务使用形如 `orbit-load-{run_id}-{sequence}` 的幂等键,输入只包含本次运行标识和序号,处理器默认为 `load.noop`,任务尝试预算固定为 1。命令不会删除生成的任务;测试必须使用一次性数据库或专用命名空间,结束后按保留策略处理,不能直接对生产命名空间运行。 diff --git a/docs/reports/phase-6-load.md b/docs/reports/phase-6-load.md index 2212711..1775c48 100644 --- a/docs/reports/phase-6-load.md +++ b/docs/reports/phase-6-load.md @@ -25,7 +25,7 @@ ## 扩大隔离样本 -为避免只保留冒烟级样本,使用同一工具在 macOS arm64(12 个主机逻辑 CPU)、Docker MySQL 8.4、单个 Orbit 进程、Go 1.25 临时兼容模块和共享网络命名空间中提交 1000 个任务;并发32、单请求超时10秒,未启动 Worker。数据库、凭据、服务进程和任务均在测试结束后销毁。 +使用同一工具在 macOS arm64(12 个主机逻辑 CPU)、Docker MySQL 8.4、单个 Orbit 进程、Go 1.25 临时兼容模块和共享网络命名空间中提交 1000 个任务;并发32、单请求超时10秒,未启动 Worker。数据库、凭据、服务进程和任务均在测试结束后销毁。标准集成脚本现可通过 `ORBIT_TEST_LOAD_REQUESTS=1000 ORBIT_TEST_LOAD_CONCURRENCY=32 make integration` 扩大受理样本,该脚本单请求超时仍为5秒;本次实测使用独立容器命令,不声称执行了该完整集成命令。 实际输出: diff --git a/scripts/test-mysql.sh b/scripts/test-mysql.sh index 2122da6..29d315c 100755 --- a/scripts/test-mysql.sh +++ b/scripts/test-mysql.sh @@ -4,6 +4,8 @@ set -eu TASK_DOCKER=${DOCKER:-docker} TASK_GO=${GO:-go} TASK_MYSQL_IMAGE=${ORBIT_TEST_MYSQL_IMAGE:-mysql:8.4} +TASK_LOAD_REQUESTS=${ORBIT_TEST_LOAD_REQUESTS:-24} +TASK_LOAD_CONCURRENCY=${ORBIT_TEST_LOAD_CONCURRENCY:-4} TASK_TEST_NAME="orbit-model-test-$$" TASK_TEST_DIR=$(mktemp -d "${TMPDIR:-/tmp}/orbit-model-test.XXXXXX") TASK_SERVER_PID= @@ -74,7 +76,7 @@ for task_attempt in $(seq 1 20); do done if [ -z "$TASK_HTTP_PORT" ]; then printf '%s\n' 'Bootstrap HTTP server did not start.' >&2; exit 1; fi (cd sdk/go && ORBIT_URL="http://127.0.0.1:$TASK_HTTP_PORT" "$TASK_GO" run ./examples/health) -(cd sdk/go && ORBIT_URL="http://127.0.0.1:$TASK_HTTP_PORT" ORBIT_CREDENTIALS_FILE="$TASK_TEST_DIR/load.credentials.json" "$TASK_TEST_DIR/orbit-load" -requests 24 -concurrency 4 -timeout 5s) +(cd sdk/go && ORBIT_URL="http://127.0.0.1:$TASK_HTTP_PORT" ORBIT_CREDENTIALS_FILE="$TASK_TEST_DIR/load.credentials.json" "$TASK_TEST_DIR/orbit-load" -requests "$TASK_LOAD_REQUESTS" -concurrency "$TASK_LOAD_CONCURRENCY" -timeout 5s) (cd sdk/go && ORBIT_URL="http://127.0.0.1:$TASK_HTTP_PORT" ORBIT_CREDENTIALS_FILE="$TASK_TEST_DIR/sdk.credentials.json" "$TASK_GO" run ./examples/tasks) (cd sdk/go && ORBIT_URL="http://127.0.0.1:$TASK_HTTP_PORT" ORBIT_CREDENTIALS_FILE="$TASK_TEST_DIR/sdk.credentials.json" "$TASK_GO" run ./examples/task-query) ORBIT_MYSQL_DSN="$ORBIT_TEST_MYSQL_DSN" "$TASK_TEST_DIR/orbit-admin" bootstrap --application sdk-worker --namespace default --environment test --queue worker-examples --worker-access --schedule-access --event-access --output "$TASK_TEST_DIR/worker.credentials.json"