Skip to content

Client test

Client test #80

name: OpenAPI Integration Tests
on:
push:
paths:
- 'golem-worker-service-base/src/gateway_api_definition/http/**'
- 'golem-worker-service-base/tests/**'
- 'tests/api_client_test.py'
- 'tests/requirements.txt'
- '.github/workflows/openapi-integration-tests.yaml'
pull_request:
paths:
- 'golem-worker-service-base/src/gateway_api_definition/http/**'
- 'golem-worker-service-base/tests/**'
- 'tests/api_client_test.py'
- 'tests/requirements.txt'
- '.github/workflows/openapi-integration-tests.yaml'
env:
CARGO_TERM_COLOR: always
RUST_LOG: debug
CARGO_TERM_VERBOSE: true
WORKER_SERVICE_HTTP_PORT: 9005
jobs:
openapi-integration-tests:
name: Run OpenAPI Integration Tests
runs-on: ubuntu-latest
services:
redis:
image: redis
ports:
- 6379:6379
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
submodules: recursive
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Cache Rust dependencies
uses: Swatinem/rust-cache@v2
with:
shared-key: "openapi-tests"
- name: Install Protoc
uses: arduino/setup-protoc@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
pip install -r tests/requirements.txt
- name: Build Dependencies
run: |
cd golem-worker-service-base
cargo build --all-features
- name: Run Clippy
run: |
cd golem-worker-service-base
cargo clippy --all-targets --all-features -- -D warnings
- name: Run OpenAPI Tests
run: |
cd golem-worker-service-base
cargo test gateway_api_definition::http::openapi_export -- --nocapture
- name: Run Swagger UI Tests
run: |
cd golem-worker-service-base
cargo test gateway_api_definition::http::swagger_ui -- --nocapture
- name: Run Integration Tests
run: |
cd golem-worker-service-base
cargo test --test api_gateway_end_to_end_tests -- --nocapture
cargo test --test services_tests -- --nocapture
- name: Start Worker Service for Python Tests
run: |
# Create config directory and worker service config
mkdir -p config
cat << EOF > config/worker-service.toml
environment = "local"
[rust]
backtrace = 1
log = "info,h2=warn,hyper=warn,tower=warn"
[http]
port = ${{ env.WORKER_SERVICE_HTTP_PORT }}
[grpc]
port = 9007
[custom_request]
port = 9006
EOF
# Build and start worker service
cargo build --bin golem-worker-service
cargo run --bin golem-worker-service &
# Wait for service to be ready
echo "Waiting for worker service to be ready..."
timeout 30 bash -c "until curl -s http://localhost:${WORKER_SERVICE_HTTP_PORT}/health > /dev/null 2>&1; do sleep 1; done"
echo "Worker service is running!"
- name: Run Python API Client Tests
run: |
python tests/api_client_test.py
- name: Upload Test Results
if: always()
uses: actions/upload-artifact@v4
with:
name: test-results
path: |
golem-worker-service-base/test-output.json
golem-worker-service-base/target/debug/deps/test_*.xml
test-output/