c81d3f81f5
* Mock server in WFS provider tests This commit mocks the layer in WFS tests and prepares return values required to satisfy the tests. This reduces the test fidelity, but it makes them stable and increases execution speed (literally 100x on my machine, 66 sec to 0.6 sec). Since the return value is mocked, it doesn't make sense to send different parameters to the server, so some tests became obsolete. The original tests are still there in another file, but are not supposed to be run in CI. * Mention wfs live tests in github CI * Comment test file where all tests are skipped pytest considers this to be a failure, but we still want the test file to be mentioned here
211 lines
7.5 KiB
YAML
211 lines
7.5 KiB
YAML
name: Build
|
|
|
|
on:
|
|
push:
|
|
paths-ignore:
|
|
- '**.md'
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
paths-ignore:
|
|
- '!**.md'
|
|
release:
|
|
types:
|
|
- released
|
|
|
|
jobs:
|
|
flake8_py3:
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- name: Setup Python
|
|
uses: actions/setup-python@v1
|
|
with:
|
|
python-version: 3.8
|
|
architecture: x64
|
|
cache: 'pip'
|
|
- name: Checkout pygeoapi
|
|
uses: actions/checkout@master
|
|
- name: Install flake8
|
|
run: pip install flake8
|
|
- name: Run flake8
|
|
uses: suo/flake8-github-action@releases/v1
|
|
with:
|
|
checkName: 'flake8_py3' # NOTE: this needs to be the same as the job name
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
main:
|
|
needs: [flake8_py3]
|
|
runs-on: ubuntu-22.04
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- python-version: 3.8
|
|
env:
|
|
PYGEOAPI_CONFIG: "$(pwd)/pygeoapi-config.yml"
|
|
|
|
steps:
|
|
- name: Clear up GitHub runner diskspace
|
|
run: |
|
|
echo "Space before"
|
|
df -h /
|
|
sudo rm -rf /usr/local/lib/android
|
|
sudo rm -rf /usr/share/dotnet
|
|
echo "Space after"
|
|
df -h /
|
|
- name: Chown user
|
|
run: |
|
|
sudo chown -R $USER:$USER $GITHUB_WORKSPACE
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-python@v2
|
|
name: Setup Python ${{ matrix.python-version }}
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
- name: Configure sysctl limits
|
|
run: |
|
|
sudo swapoff -a
|
|
sudo sysctl -w vm.swappiness=1
|
|
sudo sysctl -w fs.file-max=262144
|
|
sudo sysctl -w vm.max_map_count=262144
|
|
- name: Install and run PostgreSQL/PostGIS 📦
|
|
uses: huaxk/postgis-action@v1
|
|
with:
|
|
postgresql password: ${{ secrets.DatabasePassword || 'postgres' }}
|
|
postgresql db: 'test'
|
|
- name: Install and run Elasticsearch 📦
|
|
uses: getong/elasticsearch-action@v1.2
|
|
with:
|
|
elasticsearch version: '8.3.1'
|
|
host port: 9200
|
|
container port: 9200
|
|
host node port: 9300
|
|
node port: 9300
|
|
discovery type: 'single-node'
|
|
- name: Install and run MongoDB
|
|
uses: supercharge/mongodb-github-action@1.5.0
|
|
with:
|
|
mongodb-version: 4.4
|
|
- name: Install and run SensorThingsAPI
|
|
uses: cgs-earth/sensorthings-action@v0.0.2
|
|
- name: Install sqlite and gpkg dependencies
|
|
uses: awalsh128/cache-apt-pkgs-action@latest
|
|
with:
|
|
packages: libsqlite3-mod-spatialite
|
|
version: 4.3.0a-6build1
|
|
- name: Use ubuntuGIS unstable ppa
|
|
run: sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable && sudo apt update
|
|
shell: bash
|
|
- name: Install GDAL with Python bindings
|
|
uses: awalsh128/cache-apt-pkgs-action@latest
|
|
with:
|
|
packages: gdal-bin libgdal-dev
|
|
version: 3.8.3
|
|
- name: Install and run Oracle
|
|
run: |
|
|
docker run -d --name oracledb -e ORACLE_PWD=oracle -v ${{ github.workspace }}/tests/data/oracle/init-db:/opt/oracle/scripts/startup -p 1521:1521 container-registry.oracle.com/database/express:21.3.0-xe
|
|
- name: Install requirements 📦
|
|
run: |
|
|
pip3 install -r requirements.txt
|
|
pip3 install -r requirements-admin.txt
|
|
pip3 install -r requirements-starlette.txt
|
|
pip3 install -r requirements-dev.txt
|
|
pip3 install -r requirements-provider.txt
|
|
pip3 install -r requirements-django.txt
|
|
pip3 install -r docs/requirements.txt
|
|
python3 setup.py install
|
|
pip3 install --upgrade numpy elasticsearch
|
|
pip3 install --upgrade numpy "sqlalchemy<2"
|
|
pip3 install --upgrade flake8
|
|
pip3 install --global-option=build_ext --global-option="-I/usr/include/gdal" GDAL==`gdal-config --version`
|
|
#pip3 install --upgrade rasterio==1.1.8
|
|
- name: setup test data ⚙️
|
|
run: |
|
|
python3 tests/load_es_data.py tests/data/ne_110m_populated_places_simple.geojson geonameid
|
|
python3 tests/load_es_data.py tests/cite/canada-hydat-daily-mean-02HC003.geojson IDENTIFIER
|
|
python3 tests/load_mongo_data.py tests/data/ne_110m_populated_places_simple.geojson
|
|
gunzip < tests/data/hotosm_bdi_waterways.sql.gz | psql postgresql://postgres:${{ secrets.DatabasePassword || 'postgres' }}@localhost:5432/test
|
|
psql postgresql://postgres:${{ secrets.DatabasePassword || 'postgres' }}@localhost:5432/test -f tests/data/dummy_data.sql
|
|
docker ps
|
|
python3 tests/load_oracle_data.py
|
|
- name: run unit tests ⚙️
|
|
env:
|
|
POSTGRESQL_PASSWORD: ${{ secrets.DatabasePassword || 'postgres' }}
|
|
run: |
|
|
pytest tests/test_api.py
|
|
pytest tests/test_api_ogr_provider.py
|
|
pytest tests/test_config.py
|
|
pytest tests/test_csv__formatter.py
|
|
pytest tests/test_csv__provider.py
|
|
pytest tests/test_django.py
|
|
pytest tests/test_elasticsearch__provider.py
|
|
pytest tests/test_esri_provider.py
|
|
pytest tests/test_filesystem_provider.py
|
|
pytest tests/test_geojson_provider.py
|
|
pytest tests/test_mongo_provider.py
|
|
pytest tests/test_ogr_csv_provider.py
|
|
pytest tests/test_ogr_esrijson_provider.py
|
|
pytest tests/test_ogr_gpkg_provider.py
|
|
pytest tests/test_ogr_shapefile_provider.py
|
|
pytest tests/test_ogr_sqlite_provider.py
|
|
pytest tests/test_ogr_wfs_provider.py
|
|
# pytest tests/test_ogr_wfs_provider_live.py # NOTE: these are skipped in the file but listed here for completeness
|
|
pytest tests/test_openapi.py
|
|
pytest tests/test_oracle_provider.py
|
|
pytest tests/test_postgresql_provider.py
|
|
pytest tests/test_rasterio_provider.py
|
|
pytest tests/test_sensorthings_provider.py
|
|
pytest tests/test_socrata_provider.py
|
|
pytest tests/test_sqlite_geopackage_provider.py
|
|
pytest tests/test_tinydb_catalogue_provider.py
|
|
pytest tests/test_tinydb_manager_for_parallel_requests.py
|
|
pytest tests/test_util.py
|
|
pytest tests/test_xarray_netcdf_provider.py
|
|
pytest tests/test_xarray_zarr_provider.py
|
|
- name: build docs 🏗️
|
|
run: cd docs && make html
|
|
- name: failed tests 🚩
|
|
if: ${{ failure() }}
|
|
run: |
|
|
pip3 list -v
|
|
|
|
admin:
|
|
needs: [flake8_py3]
|
|
runs-on: ubuntu-20.04
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- python-version: 3.8
|
|
env:
|
|
PYGEOAPI_CONFIG: "tests/pygeoapi-test-config-admin.yml"
|
|
PYGEOAPI_OPENAPI: "tests/pygeoapi-test-openapi-admin.yml"
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-python@v2
|
|
name: Setup Python ${{ matrix.python-version }}
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
- uses: awalsh128/cache-apt-pkgs-action@latest
|
|
with:
|
|
packages: gunicorn python3-gevent
|
|
version: 1.0
|
|
- name: Install requirements 📦
|
|
run: |
|
|
pip3 install -r requirements.txt
|
|
pip3 install -r requirements-dev.txt
|
|
pip3 install -r requirements-admin.txt
|
|
python3 setup.py install
|
|
- name: Run pygeoapi with admin API ⚙️
|
|
run: |
|
|
pygeoapi openapi generate ${PYGEOAPI_CONFIG} --output-file ${PYGEOAPI_OPENAPI}
|
|
gunicorn --bind 0.0.0.0:5000 \
|
|
--reload \
|
|
--reload-extra-file ${PYGEOAPI_CONFIG} \
|
|
pygeoapi.flask_app:APP &
|
|
- name: run integration tests ⚙️
|
|
run: |
|
|
pytest tests/test_admin_api.py
|
|
- name: failed tests 🚩
|
|
if: ${{ failure() }}
|
|
run: |
|
|
pip3 list -v
|