Skip to content

Refactored aristotle_validate #2663

Refactored aristotle_validate

Refactored aristotle_validate #2663

# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
name: hazardlib + engine + server tests
on:
pull_request:
jobs:
engine:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04]
python-version: ["3.12"]
env:
GITHUB_HEAD_REF: ${{ github.head_ref }}
FROM_FORK: ${{ github.event.pull_request.head.repo.fork }}
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
if [[ $FROM_FORK == "true" ]]; then
python install.py devel --version=$GITHUB_HEAD_REF --from_fork
else
python install.py devel --version=$GITHUB_HEAD_REF
fi
- name: Calculators hazard tests
run: |
set -e
source ~/openquake/bin/activate
pip install pytest https://wheelhouse.openquake.org/v3/py/rtgmpy-1.0.0-py3-none-any.whl
oq engine --upgrade-db
pytest --doctest-modules -x --disable-warnings --color=yes --durations=10 openquake/calculators -k 'not risk and not damage and not bcr'
hazardlib:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-24.04]
python-version: ["3.12"]
env:
GITHUB_HEAD_REF: ${{ github.head_ref }}
FROM_FORK: ${{ github.event.pull_request.head.repo.fork }}
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
if [[ $FROM_FORK == "true" ]]; then
python install.py devel --version=$GITHUB_HEAD_REF --from_fork
else
python install.py devel --version=$GITHUB_HEAD_REF
fi
- name: Hazardlib tests
run: |
set -e
source ~/openquake/bin/activate
pip install pyshp pytest flake8 ruff https://wheelhouse.openquake.org/v3/py/rtgmpy-1.0.0-py3-none-any.whl
oq engine --upgrade-db
cd openquake
ruff check --preview .
pytest calculators -k 'risk or damage or bcr' -x --doctest-modules --disable-warnings --color=yes --durations=5
pytest -xs --doctest-modules --disable-warnings --color=yes --durations=8 sep hmtk risklib commonlib baselib hazardlib
pytest --doctest-modules ../doc/contributing/*.rst
server_public_mode:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-24.04]
python-version: ["3.11"]
env:
GITHUB_HEAD_REF: ${{ github.head_ref }}
FROM_FORK: ${{ github.event.pull_request.head.repo.fork }}
OQ_APPLICATION_MODE: PUBLIC
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
if [[ $FROM_FORK == "true" ]]; then
python install.py devel --version=$GITHUB_HEAD_REF --from_fork
else
python install.py devel --version=$GITHUB_HEAD_REF
fi
- name: Server 'PUBLIC' mode tests
run: |
curl -O https://downloads.openquake.org/test_data/exposure.hdf5
source ~/openquake/bin/activate
pip install pytest https://wheelhouse.openquake.org/v3/py/rtgmpy-1.0.0-py3-none-any.whl
oq engine --upgrade-db
# Starting the webui here is not needed by test_public_mode,
# but here we also want to check that the webui starts without errors
oq webui start 127.0.0.1:8800 -s &
echo "Waiting WEBUI up on port 8800...."
while ! nc -z localhost 8800; do
sleep 5 # wait for 5 seconds before check again
done
pytest -xs --doctest-modules --disable-warnings --color=yes openquake/commands openquake/engine
# -v 2 also logs the test names
./openquake/server/manage.py test -v 2 tests.test_public_mode
server_read_only_mode:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-24.04]
python-version: ["3.11"]
env:
GITHUB_HEAD_REF: ${{ github.head_ref }}
FROM_FORK: ${{ github.event.pull_request.head.repo.fork }}
OQ_APPLICATION_MODE: READ_ONLY
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
if [[ $FROM_FORK == "true" ]]; then
python install.py devel --version=$GITHUB_HEAD_REF --from_fork
else
python install.py devel --version=$GITHUB_HEAD_REF
fi
- name: Server 'READ_ONLY' mode tests
run: |
source ~/openquake/bin/activate
oq engine --upgrade-db
# -v 2 also logs the test names
./openquake/server/manage.py test -v 2 tests.test_read_only_mode
server_aelo_mode:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-24.04]
python-version: ["3.11"]
env:
GITHUB_HEAD_REF: ${{ github.head_ref }}
FROM_FORK: ${{ github.event.pull_request.head.repo.fork }}
OQ_APPLICATION_MODE: AELO
OQ_CONFIG_FILE: openquake/server/tests/data/openquake.cfg
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
if [[ $FROM_FORK == "true" ]]; then
python install.py devel --version=$GITHUB_HEAD_REF --from_fork
else
python install.py devel --version=$GITHUB_HEAD_REF
fi
- name: Server 'AELO' mode tests
run: |
source ~/openquake/bin/activate
oq engine --upgrade-db
./openquake/server/manage.py migrate
./openquake/server/manage.py loaddata openquake/server/fixtures/0001_cookie_consent_required_plus_hide_cookie_bar.json
./openquake/server/manage.py collectstatic --noinput
# -v 2 also logs the test names
./openquake/server/manage.py test -v 2 tests.test_aelo_mode
server_aristotle_mode:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-24.04]
python-version: ["3.11"]
env:
GITHUB_HEAD_REF: ${{ github.head_ref }}
FROM_FORK: ${{ github.event.pull_request.head.repo.fork }}
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
if [[ $FROM_FORK == "true" ]]; then
python install.py devel --version=$GITHUB_HEAD_REF --from_fork
else
python install.py devel --version=$GITHUB_HEAD_REF
fi
- name: Server 'ARISTOTLE' mode tests
run: |
set -x
date
wget https://downloads.openquake.org/test_data/exposure.hdf5
date
mv exposure.hdf5 openquake/qa_tests_data/mosaic/
source ~/openquake/bin/activate
export PY_VER="$(python -c 'import sys; version=sys.version_info[:2]; print("{0}.{1}".format(*version))')"
export PYVER="$(echo ${PY_VER} | tr -d .)"
pip install https://wheelhouse.openquake.org/v3/linux/py${PYVER}/timezonefinder-6.5.2-cp${PYVER}-cp${PYVER}-manylinux_2_17_x86_64.manylinux_2_5_x86_64.manylinux1_x86_64.manylinux2014_x86_64.whl
oq engine --upgrade-db
./openquake/server/manage.py migrate
touch ~/webui-access.log
# -v 2 also logs the test names
OQ_APPLICATION_MODE=ARISTOTLE OQ_CONFIG_FILE=openquake/server/tests/data/openquake.cfg ./openquake/server/manage.py test -v 2 tests.test_aristotle_mode