Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: test for save db artifact #246

Open
wants to merge 7 commits into
base: develop
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
233 changes: 128 additions & 105 deletions .github/workflows/testing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,32 +34,32 @@ jobs:
- name: Lint
run: pre-commit run --all-files --show-diff-on-failure

build-test-bench:
name: "Build test bench containers"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Build test bench container
uses: docker/bake-action@v6
with:
load: true
files: tests/integration/dockerfiles/docker-bake.hcl
set: |
*.cache-to=type=gha,scope=global,mode=max
*.cache-from=type=gha,scope=global
# build-test-bench:
# name: "Build test bench containers"
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
#
# - name: Set up Docker Buildx
# uses: docker/setup-buildx-action@v3
#
# - name: Build test bench container
# uses: docker/bake-action@v6
# with:
# load: true
# files: tests/integration/dockerfiles/docker-bake.hcl
# set: |
# *.cache-to=type=gha,scope=global,mode=max
# *.cache-from=type=gha,scope=global

test:
services:
local_mongodb:
image: mongo:5.0
ports:
- 27017:27017

needs: [build-test-bench]
# services:
# local_mongodb:
# image: mongo:5.0
# ports:
# - 27017:27017
#
# needs: [build-test-bench]
runs-on: ubuntu-latest
strategy:
fail-fast: false
Expand All @@ -69,89 +69,112 @@ jobs:
steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: pip
cache-dependency-path: pyproject.toml

- name: Install mongo-tools
run: |
wget https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2204-x86_64-100.10.0.deb
sudo apt install ./mongodb-database-tools-*-100.10.0.deb

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Load test bench containers
uses: docker/bake-action@v6
with:
load: true
files: tests/integration/dockerfiles/docker-bake.hcl
set: |
*.cache-from=type=gha,scope=global

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements/requirements.txt
pip install .[tests]

- name: Unit tests
# - uses: actions/setup-python@v5
# with:
# python-version: ${{ matrix.python-version }}
# cache: pip
# cache-dependency-path: pyproject.toml
#
# - name: Install mongo-tools
# run: |
# wget https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2204-x86_64-100.10.0.deb
# sudo apt install ./mongodb-database-tools-*-100.10.0.deb
#
# - name: Set up Docker Buildx
# uses: docker/setup-buildx-action@v3
#
# - name: Load test bench containers
# uses: docker/bake-action@v6
# with:
# load: true
# files: tests/integration/dockerfiles/docker-bake.hcl
# set: |
# *.cache-from=type=gha,scope=global
#
# - name: Install dependencies
# run: |
# python -m pip install --upgrade pip
# pip install -r requirements/requirements.txt
# pip install .[tests]

# Testing save db artifact
# Should be adapted to have a "real" fake failure from jobflow remote so that
# a "real" jfr db is dumped and can be checked
- name: Testing the save db artifact in case a test fails
id: failure
run: |
COVERAGE_FILE=.coverage.1 \
pytest \
--pytest-durations-min=1 \
--cov=jobflow_remote --cov-report= --cov-config pyproject.toml \
--ignore tests/integration \
echo "Forcing a failure in this step"
exit 1
continue-on-error: true

- name: Integration tests
# Ensure previous test indeed failed (it continues on error but also continues on success ...)
- name: Make sure the previous step has failed
if: ${{ steps.failure.outcome == 'success' }}
run: |
COVERAGE_FILE=.coverage.2 \
pytest \
--pytest-durations-min=1 \
--cov=jobflow_remote --cov-report= --cov-config pyproject.toml \
tests/integration
echo "The previous step with an explicit failure should have failed while it succeeded"
exit 1

# combining the reports with --cov-append did not seem to work
- name: Generate coverage report
# This should check that a dump has been created in the github workspace, check its content (?)
# and then remove it
- name: Check the dump of the db
run: |
coverage combine .coverage.1 .coverage.2
coverage xml

- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v5
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

docs:
name: Build documentation
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0

- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Install docs dependencies
run: |
python -m pip install -U pip
pip install -U setuptools wheel
# Required to generate rst files from markdown
sudo apt install pandoc
pip install -r requirements/requirements.txt
pip install .[docs]

- name: Build Sphinx docs
working-directory: doc
run: |
# cannot use sphinx build directly as the makefile handles generation
# of some rst files
make html
echo "Checking db dump"

# - name: Unit tests
# run: |
# COVERAGE_FILE=.coverage.1 \
# pytest \
# --pytest-durations-min=1 \
# --cov=jobflow_remote --cov-report= --cov-config pyproject.toml \
# --ignore tests/integration \
#
# - name: Integration tests
# run: |
# COVERAGE_FILE=.coverage.2 \
# pytest \
# --pytest-durations-min=1 \
# --cov=jobflow_remote --cov-report= --cov-config pyproject.toml \
# tests/integration
#
# # combining the reports with --cov-append did not seem to work
# - name: Generate coverage report
# run: |
# coverage combine .coverage.1 .coverage.2
# coverage xml
#
# - name: Upload coverage reports to Codecov
# uses: codecov/codecov-action@v5
# env:
# CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
#
# docs:
# name: Build documentation
# runs-on: ubuntu-latest
#
# steps:
# - name: Checkout repository
# uses: actions/checkout@v4
# with:
# submodules: true
# fetch-depth: 0
#
# - name: Set up Python 3.11
# uses: actions/setup-python@v5
# with:
# python-version: '3.11'
#
# - name: Install docs dependencies
# run: |
# python -m pip install -U pip
# pip install -U setuptools wheel
# # Required to generate rst files from markdown
# sudo apt install pandoc
# pip install -r requirements/requirements.txt
# pip install .[docs]
#
# - name: Build Sphinx docs
# working-directory: doc
# run: |
# # cannot use sphinx build directly as the makefile handles generation
# # of some rst files
# make html
Loading