feat: add TLS support for RedHub server #19
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI Tests | |
| on: | |
| push: | |
| branches: [ main, master ] | |
| pull_request: | |
| branches: [ main, master ] | |
| jobs: | |
| build-and-test: | |
| strategy: | |
| matrix: | |
| go-version: ['1.21', '1.22', '1.23', '1.24'] | |
| os: [ubuntu-latest] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Set up Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version: ${{ matrix.go-version }} | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y redis-tools netcat-openbsd | |
| - name: Download dependencies | |
| run: go mod download | |
| - name: Verify dependencies | |
| run: go mod verify | |
| - name: Build all packages | |
| run: go build ./... | |
| - name: Build example | |
| run: | | |
| cd example/memory_kv | |
| go build -o server | |
| - name: Run unit tests | |
| run: go test -v -race -coverprofile=coverage.out ./... | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| file: ./coverage.out | |
| fail_ci_if_error: false | |
| benchmark-test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Set up Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version: '1.24' | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y redis-tools netcat-openbsd | |
| - name: Build example server | |
| run: | | |
| cd example/memory_kv | |
| go build -o server | |
| - name: Start server | |
| run: | | |
| cd example/memory_kv | |
| ./server -addr "127.0.0.1:6380" > server.log 2>&1 & | |
| SERVER_PID=$! | |
| echo $SERVER_PID > server.pid | |
| # Wait for server to be ready | |
| for i in {1..30}; do | |
| if nc -z 127.0.0.1 6380; then | |
| echo "Server is ready" | |
| break | |
| fi | |
| sleep 1 | |
| 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" | |
| cat server.log | |
| exit 1 | |
| fi | |
| - name: Warm up server | |
| run: | | |
| echo "Warming up server..." | |
| redis-benchmark -h 127.0.0.1 -p 6380 -n 10000 -t set,get -c 16 -q | |
| - name: Run SET benchmark | |
| run: | | |
| echo "Running SET benchmark..." | |
| redis-benchmark -h 127.0.0.1 -p 6380 -n 100000 -t set -c 16 -q | |
| - name: Run GET benchmark | |
| run: | | |
| echo "Running GET benchmark..." | |
| redis-benchmark -h 127.0.0.1 -p 6380 -n 100000 -t get -c 16 -q | |
| - name: Run mixed SET/GET benchmark | |
| run: | | |
| echo "Running mixed SET/GET benchmark..." | |
| redis-benchmark -h 127.0.0.1 -p 6380 -n 100000 -t set,get -c 16 -q | |
| - name: Run concurrent benchmark | |
| run: | | |
| echo "Running concurrent benchmark..." | |
| redis-benchmark -h 127.0.0.1 -p 6380 -n 100000 -t set,get -c 64 -q | |
| - name: Stop server | |
| if: always() | |
| run: | | |
| cd example/memory_kv | |
| if [ -f server.pid ]; then | |
| kill $(cat server.pid) || true | |
| rm server.pid | |
| fi | |
| - name: Show server logs | |
| if: failure() | |
| run: | | |
| cat example/memory_kv/server.log || true |