# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python

name: Run Tests

on:
  push:
    branches:
      - main
      - v0.*
  pull_request:
    branches:
      - main
      - v0.*

jobs:
  build:
    runs-on: ubuntu-latest
    timeout-minutes: 15
    strategy:
      fail-fast: false
      matrix:
        python-version: ["3.11"]

    steps:
    - uses: actions/checkout@v4
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v3
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu
        pip install -e ".[test,build,yuanrong]"
        pip install mooncake-transfer-engine-non-cuda
    - name: Run Tests
      run: |
        pytest tests
    - name: Run MooncakeStore Backend Specific E2E Tests
      run: |
        TQ_TEST_BACKEND=MooncakeStore pytest tests/e2e/test_e2e_lifecycle_consistency.py
        pkill -f "[m]ooncake_master" || true
        TQ_TEST_BACKEND=MooncakeStore pytest tests/e2e/test_kv_interface_e2e.py
        pkill -f "[m]ooncake_master" || true
    - name: Run Yuanrong Backend Specific E2E Tests
      run: |
        TQ_TEST_BACKEND=Yuanrong pytest tests/e2e/test_e2e_lifecycle_consistency.py
        TQ_TEST_BACKEND=Yuanrong pytest tests/e2e/test_kv_interface_e2e.py