Skip to content

Refactor system tests to use the new FTP server and to run in pytest #958

Refactor system tests to use the new FTP server and to run in pytest

Refactor system tests to use the new FTP server and to run in pytest #958

Workflow file for this run

# Copyright (c) University College London Hospitals NHS Foundation Trust
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
name: pixl-ci
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
# Only run actions on the most recent push to a branch
concurrency:
group: "${{ github.workflow }}-${{ github.head_ref }}"
cancel-in-progress: true
jobs:
lint:
runs-on: ubuntu-22.04
timeout-minutes: 5
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Ensure copyright and license header are present
run: ./.github/linters/check_headers_exist.sh
- name: Run pre-commit
uses: pre-commit/[email protected]
with:
extra_args: --all-files
- name: Validate Docker Compose config file
working-directory: .
run: |
cp .env.sample .env
docker compose config --quiet
hasher-tests:
runs-on: ubuntu-22.04
timeout-minutes: 10
steps:
- uses: actions/checkout@v3
- name: Init Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
cache: "pip"
- name: Install package
run: |
pip install hasher/[test]
- name: Run tests
working-directory: hasher
run: pytest
env:
ENV: test
AZURE_KEY_VAULT_NAME: test
AZURE_KEY_VAULT_SECRET_NAME: test
core-tests:
runs-on: ubuntu-22.04
timeout-minutes: 10
steps:
- uses: actions/checkout@v3
- name: Init Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
cache: "pip"
- name: Install Python dependencies
run: |
pip install pytest-pixl/ pixl_core/[test]
- name: Run tests
working-directory: pixl_core/tests
run: |
pytest
env:
ENV: test
dicom-de-id-tests:
runs-on: ubuntu-22.04
timeout-minutes: 10
steps:
- uses: actions/checkout@v3
- name: Init Python
uses: actions/setup-python@v4
with:
python-version: "3.9"
cache: "pip"
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
pip install -e pixl_core
pip install -e pytest-pixl
pip install -e pixl_dcmd[test]
- name: Run tests
working-directory: pixl_dcmd
run: |
bin/run-tests.sh
env:
ENV: test
cli-tests:
runs-on: ubuntu-22.04
timeout-minutes: 10
steps:
- uses: actions/checkout@v3
- name: Init Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
cache: "pip"
- name: Install Python dependencies
run: |
pip install pixl_core/ cli/[test]
- name: Run tests
working-directory: cli/tests
run: |
pytest
ehr-api-tests:
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v3
- uses: docker/setup-buildx-action@v3
# pre-build and cache the postgres container as installing python3 takes a while, doesn't push
- name: Cache Docker layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- uses: docker/build-push-action@v5
with:
context: .
file: docker/postgres/Dockerfile
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
- # Temp fix
# https://github.com/docker/build-push-action/issues/252
# https://github.com/moby/buildkit/issues/1896
name: Move cache
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
- name: Init Python
uses: actions/setup-python@v4
with:
python-version: 3.10.6
cache: "pip"
- name: Install Python dependencies
run: |
pip install pixl_core/ pixl_ehr/[test]
- name: Run tests
working-directory: pixl_ehr/tests
run: |
pytest
imaging-api-tests:
runs-on: ubuntu-22.04
timeout-minutes: 10
steps:
- uses: actions/checkout@v3
- name: Init Python
uses: actions/setup-python@v4
with:
python-version: 3.10.6
cache: "pip"
- name: Install Python dependencies
run: |
pip install pixl_core/ pixl_imaging/[test]
- name: Run tests
working-directory: pixl_imaging/tests
run: |
./run-tests.sh
system-test:
if: ${{ ! github.event.pull_request.draft || contains(github.event.pull_request.title, '[force-system-test]') }}
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v3
- name: Prune docker volumes
# seems like we're getting an error from ftp-server exiting with zero status code
# this is a workaround that resolves it locally 🤞
run: |
docker volume prune --force
- uses: docker/setup-buildx-action@v3
# pre-build and cache the postgres container as installing python3 takes a while, doesn't push
- name: Cache Docker layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- uses: docker/build-push-action@v5
with:
context: .
file: docker/postgres/Dockerfile
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
- # Temp fix
# https://github.com/docker/build-push-action/issues/252
# https://github.com/moby/buildkit/issues/1896
name: Move cache
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
- name: Init Python
uses: actions/setup-python@v4
with:
python-version: 3.10.6
cache: "pip"
- name: Install Python dependencies
run: |
pip install pixl_core/
pip install cli/[test]
pip install pytest-pixl/
- name: Build test services
working-directory: test
run: |
docker compose build
- name: Build services
run: |
docker compose build
- name: Run tests
working-directory: test
run: |
./run-system-test.sh
echo FINISHED SYSTEM TEST SCRIPT
- name: Dump ehr-api docker logs for debugging
if: ${{ always() }}
run: |
docker logs -t system-test-ehr-api-1 2>&1
- name: Dump imaging-api docker logs for debugging
if: ${{ always() }}
run: |
docker logs -t system-test-imaging-api-1 2>&1