Client test #80
Workflow file for this run
This file contains 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: 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/ |