test: allow configurable admission sample size
This commit is contained in:
@@ -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。命令不会删除生成的任务;测试必须使用一次性数据库或专用命名空间,结束后按保留策略处理,不能直接对生产命名空间运行。
|
||||
|
||||
@@ -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秒;本次实测使用独立容器命令,不声称执行了该完整集成命令。
|
||||
|
||||
实际输出:
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user