cocoon/tests/benchmark.sh
xfy911 b6beb8bb9c feat(tests): 添加集成测试套件 + 性能基准 + 更新文档
- 新增 tests/ 目录:
  - integration_test.sh: 27 项 curl/bash 集成测试(GET/HEAD/404/Range/304/gzip/MIME/目录浏览/路径防护)
  - benchmark.sh: wrk 压测脚本,支持单线程和多线程模式
  - fixtures/: 测试用静态资源(HTML/CSS/JS/JSON/PNG)
- Makefile 新增 test / bench 快捷目标
- README 全面更新:
  - 补充 Gzip/缓存/超时/日志等已实现特性
  - 更新命令行参数(-m/-o/-l/-v)
  - 添加性能基准表格(~16K RPS / ~60μs 延迟)
  - 路线图标记已完成项
- .cocoon-plan.md 更新 Phase 2 进度
2026-06-03 21:15:05 +08:00

42 lines
1.0 KiB
Bash
Executable File

#!/usr/bin/env bash
#
# benchmark.sh — Cocoon 性能基准测试
#
# 用法: ./tests/benchmark.sh [port] [duration] [connections] [threads]
# 默认: port=9999, duration=10s, connections=100, threads=4
#
set -euo pipefail
PORT="${1:-9999}"
DURATION="${2:-10s}"
CONNECTIONS="${3:-100}"
THREADS="${4:-4}"
URL="http://localhost:${PORT}/index.html"
SERVER="${SERVER:-./cocoon}"
ROOT="${ROOT:-./tests/fixtures}"
echo "[bench] 启动服务器 (端口 $PORT)..."
$SERVER -r "$ROOT" -p "$PORT" -l warn > /tmp/cocoon_bench.log 2>&1 &
SERVER_PID=$!
sleep 0.5
cleanup() {
echo "[bench] 关闭服务器..."
kill "$SERVER_PID" 2>/dev/null || true
wait "$SERVER_PID" 2>/dev/null || true
}
trap cleanup EXIT
echo "[bench] 预热 1s..."
wrk -t1 -c10 -d1s "$URL" > /dev/null 2>&1 || true
echo "[bench] 正式压测: wrk -t$THREADS -c$CONNECTIONS -d$DURATION $URL"
echo ""
wrk -t"$THREADS" -c"$CONNECTIONS" -d"$DURATION" "$URL"
echo ""
echo "[bench] 单线程模式压测 (wrk -t1 -c50)..."
wrk -t1 -c50 -d"$DURATION" "$URL" || true