client handler sets max clients with next_power_of_two #1148
Workflow file for this run
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: Ahnlich TestSuite | |
| on: | |
| push: | |
| branches: ["main"] | |
| paths: | |
| - ahnlich/** | |
| - sdk/** | |
| pull_request: | |
| branches: ["main"] | |
| paths: | |
| - ahnlich/** | |
| - sdk/** | |
| env: | |
| CARGO_TERM_COLOR: always | |
| SCCACHE_GHA_ENABLED: "true" | |
| RUSTC_WRAPPER: "sccache" | |
| jobs: | |
| run-rust-tests: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up sccache | |
| uses: mozilla-actions/sccache-action@v0.0.9 | |
| - name: Set up Rust cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: ahnlich | |
| shared-key: ahnlich-rust | |
| - name: Set up cargo and rustup tools | |
| run: | | |
| which cargo-nextest || cargo install --locked cargo-nextest | |
| - name: Install protoc | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y protobuf-compiler | |
| - name: Cache Docker images. | |
| uses: ScribeMD/docker-cache@0.5.0 | |
| with: | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('ahnlich/Cargo.lock') }} | |
| - name: Cache Ahnlich Home directory images. | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.ahnlich | |
| key: ${{ runner.os }}-ahnlich-models | |
| - name: Format and Lint | |
| working-directory: ./ahnlich | |
| run: | | |
| make format | |
| make clippy | |
| - name: Check Rust Client is up to date | |
| working-directory: ./ahnlich | |
| run: | | |
| make grpc-update-rust | |
| if [[ -n "$(git status . --porcelain)" ]]; then | |
| echo "::error::Running 'make grpc-update-rust' caused changes, Please check that rust client is up to date" | |
| git --no-pager diff . | |
| exit 1 | |
| fi | |
| - name: Detect changed rust files in workspace | |
| uses: dorny/paths-filter@v3 | |
| id: changes | |
| with: | |
| filters: | | |
| ai: | |
| - 'ahnlich/ai/**' | |
| types: | |
| - 'ahnlich/types/**' | |
| - name: Build and Format Rust Example | |
| working-directory: ./examples/rust/image-search | |
| run: | | |
| cargo b && cargo fmt | |
| - name: Run Full Workspace Tests | |
| if: steps.changes.outputs.ai == 'true' || steps.changes.outputs.types == 'true' | |
| working-directory: ./ahnlich | |
| run: make test | |
| - name: Run Workspace Tests (excluding AI) | |
| if: steps.changes.outputs.ai != 'true' && steps.changes.outputs.types != 'true' | |
| working-directory: ./ahnlich | |
| run: cargo nextest run --workspace --exclude ai --no-capture | |
| - name: Upload Test Results | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: rust | |
| path: ahnlich/target/nextest/default/rust.xml | |
| run-python-tests: | |
| if: always() | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up sccache | |
| uses: mozilla-actions/sccache-action@v0.0.9 | |
| - name: Set up Rust cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: ahnlich | |
| shared-key: ahnlich-rust | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: 3.11 | |
| - name: Run image | |
| uses: abatilo/actions-poetry@v3 | |
| with: | |
| poetry-version: 1.7.0 | |
| - name: View poetry --help | |
| run: poetry --help | |
| - name: Cache using poetry lock | |
| uses: actions/cache@v4 | |
| with: | |
| path: ./.venv | |
| key: venv-${{ hashFiles('poetry.lock') }} | |
| - name: Installing poetry dependencies | |
| working-directory: ./sdk/ahnlich-client-py | |
| run: poetry install | |
| - name: Check Python Linting | |
| working-directory: ./sdk/ahnlich-client-py | |
| run: | | |
| poetry run isort . -c --profile black; echo $? | |
| poetry run black . --check; echo $? | |
| - name: Install protoc | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y protobuf-compiler | |
| - name: Complie Binaries | |
| working-directory: ./ahnlich | |
| run: | | |
| cargo build | |
| - name: Check Python Client is up to date | |
| working-directory: ./ahnlich | |
| run: | | |
| make grpc-update-python | |
| if [[ -n "$(git status ../sdk/ahnlich-client-py --porcelain)" ]]; then | |
| echo "::error::Running 'make grpc-update-python' caused changes, Please check that python client is up to date" | |
| git --no-pager diff ../sdk/ahnlich-client-py | |
| exit 1 | |
| fi | |
| - name: Run Python Client Tests | |
| working-directory: ./sdk/ahnlich-client-py | |
| env: | |
| AHNLICH_DB_HOST: "127.0.0.1" | |
| AHNLICH_DB_PORT: 1349 | |
| AHNLICH_AI_HOST: "127.0.0.1" | |
| AHNLICH_AI_PORT: 8000 | |
| run: | | |
| poetry run pytest -s -vv --junitxml=./python.xml | |
| - name: Upload Test Results | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: python | |
| path: sdk/ahnlich-client-py/python.xml | |
| run-go-tests: | |
| if: always() | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up sccache | |
| uses: mozilla-actions/sccache-action@v0.0.9 | |
| - name: Set up Rust cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: ahnlich | |
| shared-key: ahnlich-rust | |
| - name: Install Protoc | |
| uses: arduino/setup-protoc@v3 | |
| - name: Setup buf | |
| uses: bufbuild/buf-setup-action@v1 | |
| - name: Setup Go Environment | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version: 1.22 | |
| cache-dependency-path: ./sdk/ahnlich-client-go/go.sum | |
| - name: Install Dependencies | |
| working-directory: ./sdk/ahnlich-client-go | |
| run: make install-dependencies CI=1 | |
| - name: Format and Lint Check | |
| working-directory: ./sdk/ahnlich-client-go | |
| run: make pre-commit-check | |
| # TODO: enable once Go grpc formatting is stabilised | |
| # - name: Check Go client is up to date | |
| # working-directory: ./ahnlich | |
| # run: | | |
| # make grpc-update-go | |
| # if [[ -n "$(git status ../sdk/ahnlich-client-go --porcelain)" ]]; then | |
| # echo "::error::Running 'make grpc-update-go' caused changes. Please check that the Go client is up to date" | |
| # git --no-pager diff ../sdk/ahnlich-client-go | |
| # exit 1 | |
| # fi | |
| - name: Run Tests | |
| working-directory: ./sdk/ahnlich-client-go | |
| run: | | |
| make test CACHE=1 REPORT=1 | |
| - name: Upload Test Results | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: go | |
| path: sdk/ahnlich-client-go/go.xml | |
| run-node-tests: | |
| if: always() | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up sccache | |
| uses: mozilla-actions/sccache-action@v0.0.9 | |
| - name: Set up Rust cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: ahnlich | |
| shared-key: ahnlich-rust | |
| - name: Cache Ahnlich Home directory | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.ahnlich | |
| key: ${{ runner.os }}-ahnlich-models | |
| - name: Install Protoc | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y protobuf-compiler | |
| - name: Setup buf | |
| uses: bufbuild/buf-setup-action@v1 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| - name: Install Dependencies | |
| working-directory: ./sdk/ahnlich-client-node | |
| run: make install-dependencies | |
| - name: Format Check | |
| working-directory: ./sdk/ahnlich-client-node | |
| run: make pre-commit-check | |
| - name: Check Node client is up to date | |
| working-directory: ./ahnlich | |
| run: | | |
| make grpc-update-node | |
| if [[ -n "$(git status ../sdk/ahnlich-client-node/grpc --porcelain)" ]]; then | |
| echo "::error::Running 'make grpc-update-node' caused changes. Please check that the Node client is up to date" | |
| git --no-pager diff ../sdk/ahnlich-client-node/grpc | |
| exit 1 | |
| fi | |
| - name: Build Binaries | |
| working-directory: ./ahnlich | |
| run: cargo build --bin ahnlich-db --bin ahnlich-ai | |
| - name: Run Tests | |
| working-directory: ./sdk/ahnlich-client-node | |
| run: make test REPORT=1 | |
| - name: Upload Test Results | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: node | |
| path: sdk/ahnlich-client-node/node.xml | |
| upload-test-results: | |
| if: always() | |
| runs-on: ubuntu-latest | |
| needs: ["run-rust-tests", "run-python-tests", "run-go-tests", "run-node-tests"] | |
| steps: | |
| - name: Download Rust Test Output | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: rust | |
| path: ./rust | |
| - name: Download Python Test Output | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: python | |
| path: ./python | |
| - name: Download Go Test Output | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: go | |
| path: ./go | |
| - name: Download Node Test Output | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: node | |
| path: ./node | |
| - name: Publish Test Results | |
| uses: EnricoMi/publish-unit-test-result-action/macos@v2 | |
| if: always() | |
| with: | |
| files: | | |
| rust/*.xml | |
| python/*.xml | |
| go/*.xml | |
| node/*.xml |