test: Setup benchmarking with benchmark for program instruction iteration #1228
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: Tests | |
on: | |
push: | |
branches: [ master ] | |
pull_request: | |
branches: [ master ] | |
workflow_dispatch: | |
jobs: | |
docs: | |
name: Build and test documentation | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v2 | |
with: | |
python-version: '3.8' | |
- uses: actions/cache@v2 | |
with: | |
path: .venv | |
key: poetry-${{ hashFiles('poetry.lock') }} | |
- name: Build and test the documentation | |
run: | | |
sudo apt update | |
sudo apt install pandoc | |
. scripts/ci_install_deps | |
poetry run make docs | |
check-format: | |
name: Check formatting | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v2 | |
with: | |
python-version: '3.8' | |
- uses: actions/cache@v2 | |
with: | |
path: .venv | |
key: poetry-${{ hashFiles('poetry.lock') }} | |
- name: Check format | |
run: | | |
sudo apt update | |
. scripts/ci_install_deps | |
poetry run make check-format | |
check-style: | |
name: Check style | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v2 | |
with: | |
python-version: '3.8' | |
- uses: actions/cache@v2 | |
with: | |
path: .venv | |
key: poetry-${{ hashFiles('poetry.lock') }} | |
- name: Check style | |
run: | | |
sudo apt update | |
. scripts/ci_install_deps | |
poetry run make check-style | |
check-types: | |
name: Check types | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v2 | |
with: | |
python-version: '3.8' | |
- uses: actions/cache@v2 | |
with: | |
path: .venv | |
key: poetry-${{ hashFiles('poetry.lock') }} | |
- name: Check types | |
run: | | |
sudo apt update | |
. scripts/ci_install_deps | |
poetry run make check-types | |
test-doctest: | |
name: Run Doctests | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v2 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- uses: actions/cache@v2 | |
with: | |
path: .venv | |
key: poetry-${{ hashFiles('poetry.lock') }} | |
- name: Test Unit (Python ${{ matrix.python-version }}) | |
run: | | |
sudo apt update | |
. scripts/ci_install_deps | |
sudo apt install pandoc | |
docker run --rm -itd -p 5555:5555 rigetti/quilc -R | |
docker run --rm -itd -p 5000:5000 rigetti/qvm -S | |
poetry run make doctest | |
test-unit: | |
name: Test Unit | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
pull-requests: write # allows coverage bot to comment | |
strategy: | |
matrix: | |
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v2 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- uses: actions/cache@v2 | |
with: | |
path: .venv | |
key: poetry-${{ hashFiles('poetry.lock') }} | |
- name: Test Unit (Python ${{ matrix.python-version }}) | |
run: | | |
sudo apt update | |
. scripts/ci_install_deps | |
docker run --rm -itd -p 5555:5555 rigetti/quilc -R | |
docker run --rm -itd -p 5000:5000 rigetti/qvm -S | |
poetry run make test | |
- name: Report Coverage | |
if: matrix.python-version == '3.11' && github.event_name == 'pull_request' | |
continue-on-error: true | |
uses: orgoro/coverage@v3.1 | |
with: | |
coverageFile: coverage.xml | |
thresholdAll: 0.87 | |
thresholdNew: 0.9 | |
token: ${{ secrets.GITHUB_TOKEN }} | |
check-docker-image: | |
name: Check types | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v2 | |
with: | |
python-version: '3.8' | |
- uses: actions/cache@v2 | |
with: | |
path: .venv | |
key: poetry-${{ hashFiles('poetry.lock') }} | |
- name: Check types | |
run: | | |
sudo apt update | |
pip wheel . -w wheels | |
- name: Build and Test | |
uses: docker/build-push-action@v4 | |
with: | |
file: Dockerfile.test | |
context: . | |
load: true | |
tags: test | |
- name: Test Image | |
run: | | |
docker run --rm test python -c "from pyquil import get_qc" | |
test-e2e: | |
name: Test e2e QVM | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v2 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- uses: actions/cache@v2 | |
with: | |
path: .venv | |
key: poetry-${{ hashFiles('poetry.lock') }} | |
- name: Test e2e QVM (Python ${{ matrix.python-version }}) | |
id: runTests | |
run: | | |
sudo apt update | |
. scripts/ci_install_deps | |
docker run --rm -itd -p 5555:5555 rigetti/quilc -R | |
docker run --rm -itd -p 5000:5000 rigetti/qvm -S | |
poetry run make e2e TEST_QUANTUM_PROCESSOR=2q-qvm | |
docker ps -q | xargs -L 1 docker logs | |
- name: Dump docker logs | |
if: always() && steps.runTests.outcome == 'failure' | |
run: | | |
docker ps -q | xargs -L 1 docker logs |