fix(cloud): enforce instance capacity ceilings #1404
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: Unit Tests | |
| on: | |
| pull_request: | |
| types: [opened, ready_for_review, synchronize] | |
| paths: | |
| - 'src/langbot/**' | |
| - 'tests/**' | |
| - '.github/workflows/run-tests.yml' | |
| - 'pyproject.toml' | |
| - 'uv.lock' | |
| - 'run_tests.sh' | |
| - 'scripts/test-*.sh' | |
| push: | |
| branches: | |
| - master | |
| - develop | |
| - 'feat/**' | |
| # No path filter on push: every push to the branches above runs the | |
| # full unit-test suite. feat/** branches in particular must be tested | |
| # on every push (they accumulate large changes before a PR exists). | |
| jobs: | |
| test: | |
| name: Unit Tests | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ['3.11', '3.12', '3.13'] | |
| fail-fast: false | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| - name: Install dependencies | |
| run: uv sync --dev | |
| - name: Run unit + smoke tests | |
| run: uv run pytest tests/unit_tests/ tests/smoke/ -q --tb=short | |
| - name: Test Summary | |
| if: always() | |
| run: | | |
| echo "## Unit Tests Results" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "Python Version: ${{ matrix.python-version }}" >> $GITHUB_STEP_SUMMARY | |
| echo "Test Status: ${{ job.status }}" >> $GITHUB_STEP_SUMMARY | |
| integration: | |
| name: Fast Integration Tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.12' | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| - name: Install dependencies | |
| run: uv sync --dev | |
| - name: Run fast integration tests | |
| run: uv run pytest tests/integration/ -m "not slow" -q --tb=short | |
| - name: Integration Test Summary | |
| if: always() | |
| run: | | |
| echo "## Integration Tests Results" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "Test Status: ${{ job.status }}" >> $GITHUB_STEP_SUMMARY | |
| e2e: | |
| name: E2E Startup Tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.12' | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| - name: Install dependencies | |
| run: uv sync --dev | |
| - name: Run E2E startup tests | |
| run: uv run pytest tests/e2e -q --tb=short | |
| - name: E2E Test Summary | |
| if: always() | |
| run: | | |
| echo "## E2E Startup Test Results" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "Test Status: ${{ job.status }}" >> $GITHUB_STEP_SUMMARY | |
| box-integration: | |
| name: Box Integration Tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.12' | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| - name: Install dependencies | |
| run: uv sync --dev | |
| - name: Check Docker runtime | |
| run: docker info | |
| - name: Run Box integration tests | |
| run: uv run pytest tests/integration_tests -q --tb=short | |
| - name: Box Integration Test Summary | |
| if: always() | |
| run: | | |
| echo "## Box Integration Test Results" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "Test Status: ${{ job.status }}" >> $GITHUB_STEP_SUMMARY | |
| coverage: | |
| name: Coverage Gate | |
| runs-on: ubuntu-latest | |
| needs: [test, integration] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.12' | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| - name: Install dependencies | |
| run: uv sync --dev | |
| - name: Run coverage (unit + smoke) | |
| run: | | |
| uv run pytest tests/unit_tests/ tests/smoke/ \ | |
| --cov=langbot \ | |
| --cov-report=xml \ | |
| --cov-report=term-missing \ | |
| --cov-fail-under=18 \ | |
| -q --tb=short | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@v5 | |
| with: | |
| files: ./coverage.xml | |
| flags: unit-tests | |
| name: coverage-report | |
| fail_ci_if_error: false | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| - name: Coverage Summary | |
| if: always() | |
| run: | | |
| echo "## Coverage Results" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "Threshold: 18%" >> $GITHUB_STEP_SUMMARY | |
| echo "Status: ${{ job.status }}" >> $GITHUB_STEP_SUMMARY |