diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml new file mode 100644 index 0000000..b9b7889 --- /dev/null +++ b/.github/workflows/benchmark.yml @@ -0,0 +1,60 @@ +name: Benchmark Tests + +on: + workflow_dispatch: + pull_request: + push: + branches: + - main + +jobs: + benchmark: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: '1.21' + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y redis-tools netcat-openbsd + + - name: Run benchmark + run: | + # Start server in background + cd example/memory_kv + # Start server with logging + go run server.go > server.log 2>&1 & + SERVER_PID=$! + + # Wait for server to be ready (longer timeout for CI environment) + for i in {1..30}; do + if nc -z 127.0.0.1 6380; then + echo "Server is ready" + break + fi + sleep 2 + echo "Waiting for server to start... ($i/30)" + done + + # Verify server is ready + if ! nc -z 127.0.0.1 6380; then + echo "Server failed to start after 60 seconds" + echo "Server logs:" + cat server.log || true + exit 1 + fi + + # Run benchmark tests + echo "Running benchmark tests..." + redis-benchmark -h 127.0.0.1 -p 6380 -n 5000000 -t set,get -c 512 -P 1024 -q + + # Stop server + kill $SERVER_PID + + # Output results + echo "Benchmark completed"