name: CodSpeed

on:
  # Run on pushes to the main branch
  push:
    branches:
      - "master" # or "main"
  # Run on pull requests
  pull_request:
  # `workflow_dispatch` allows CodSpeed to trigger backtest
  # performance analysis in order to generate initial data.
  workflow_dispatch:

env:
  UV_NO_SYNC: true

jobs:
  benchmarks:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v6
      - name: Set up Python
        uses: actions/setup-python@v6
        with:
          python-version: "3.12"
      - name: Setup uv
        uses: astral-sh/setup-uv@v7
        with:
          enable-cache: true
          cache-dependency-glob: |
            pyproject.toml
            uv.lock
      - name: Mongo Service
        run: bash mongodb-cluster/run.sh
        env:
          MODE: sharded
          VERSION: "4.2"
      - name: Install dependencies
        run: |
          uv sync --locked --no-dev --extra test
      - name: Run benches
        uses: CodSpeedHQ/action@v4
        with:
          mode: simulation
          run: uv run pytest tests/integration/benchmarks --codspeed
        env:
          TEST_MONGO_URI: "mongodb://172.16.17.10:27017/?retryWrites=false"
          TEST_MONGO_MODE: "sharded"
