Skip to content

proxy tests

proxy tests #217

Workflow file for this run

name: Test
on:
push: ~
# TODO cache imported DB or filtered & downloaded data
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'master' }}
jobs:
import:
name: Import data
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Get Date
id: get-date
shell: bash
run: |
echo "date=$(/bin/date -u "+%Y%m")" >> $GITHUB_OUTPUT
- name: Cache data
uses: actions/cache@v4
id: cache-data
with:
path: |
data/germany.osm.pbf
data/filtered/germany.osm.pbf
key: ${{ runner.os }}-data-${{ steps.get-date.outputs.date }}-berlin
- name: Download Berlin
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
run: |
curl --location --fail --output data/berlin.osm.pbf https://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf
- name: Start database
env:
OSM2PGSQL_DATAFILE: berlin.osm.pbf
run: |
docker compose build db
docker compose up --no-build --wait db
- name: Build import image
run: |
docker compose build import
if [[ "${{ github.ref_name }}" = "master" ]]; then
docker compose push import
fi
- name: Import data
env:
OSM2PGSQL_DATAFILE: berlin.osm.pbf
run: |
docker compose run import import
- name: Prepare and start API
run: |
docker compose stop db
DB_CONTAINER_ID="$(docker compose ps --all --format json | jq -r 'select(.Service == "db") | .ID')"
docker commit "$DB_CONTAINER_ID" ghcr.io/hiddewie/openrailwaymap-import-db:${{ github.sha }}
docker push ghcr.io/hiddewie/openrailwaymap-import-db:${{ github.sha }}
test-api:
name: Test API
runs-on: ubuntu-latest
needs:
- import
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Install Hurl
env:
VERSION: '5.0.1'
run: |
curl --location --remote-name https://github.com/Orange-OpenSource/hurl/releases/download/$VERSION/hurl_${VERSION}_amd64.deb
sudo apt update && sudo apt install ./hurl_${VERSION}_amd64.deb
- name: Pull database
run: |
docker pull ghcr.io/hiddewie/openrailwaymap-import-db:${{ github.sha }}
docker tag ghcr.io/hiddewie/openrailwaymap-import-db:${{ github.sha }} ghcr.io/hiddewie/openrailwaymap-import-db:latest
- name: Start database
run: |
docker compose up --no-build --wait db
- name: Prepare and start API
run: |
api/prepare-api.sh
docker compose up --wait --no-build api
- name: Run API tests
working-directory: api
run: |
hurl --test --verbose --variable base_url=http://localhost:5000/api test/api.hurl
- name: Service logs
if: always()
continue-on-error: true
run: |
echo "API logs"
docker compose logs api
test-web:
name: Test web
runs-on: ubuntu-latest
needs:
- import
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Install Hurl
env:
VERSION: '5.0.1'
run: |
curl --location --remote-name https://github.com/Orange-OpenSource/hurl/releases/download/$VERSION/hurl_${VERSION}_amd64.deb
sudo apt update && sudo apt install ./hurl_${VERSION}_amd64.deb
- name: Pull database
run: |
docker pull ghcr.io/hiddewie/openrailwaymap-import-db:${{ github.sha }}
docker tag ghcr.io/hiddewie/openrailwaymap-import-db:${{ github.sha }} ghcr.io/hiddewie/openrailwaymap-import-db:latest
- name: Start database
run: |
docker compose up --no-build --wait db
- name: Start tile server
run: |
docker compose build martin
docker compose up --no-build --detach martin
- name: Start web server
run: |
docker compose build martin-proxy
docker compose up --no-build --wait martin-proxy
- name: Run proxy tests
working-directory: proxy
run: |
hurl --test --verbose --variable base_url=http://localhost:8000 test/proxy.hurl
- name: Run UI tests
if: false
run: |
# TODO
- name: Service logs
if: always()
continue-on-error: true
run: |
echo "Martin logs"
docker compose logs martin
DB_CONTAINER_ID="$(docker compose ps --all --format json | jq -r 'select(.Service == "martin") | .ID')"
docker inspect openrailwaymap-cartocss-martin-1
echo "Proxy logs"
docker compose logs martin-proxy
DB_CONTAINER_ID="$(docker compose ps --all --format json | jq -r 'select(.Service == "martin-proxy") | .ID')"
docker inspect openrailwaymap-cartocss-martin-proxy-1
test-tiles:
name: Test tiles
runs-on: ubuntu-latest
needs:
- import
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Install Hurl
env:
VERSION: '5.0.1'
run: |
curl --location --remote-name https://github.com/Orange-OpenSource/hurl/releases/download/$VERSION/hurl_${VERSION}_amd64.deb
sudo apt update && sudo apt install ./hurl_${VERSION}_amd64.deb
- name: Pull database
run: |
docker pull ghcr.io/hiddewie/openrailwaymap-import-db:${{ github.sha }}
docker tag ghcr.io/hiddewie/openrailwaymap-import-db:${{ github.sha }} ghcr.io/hiddewie/openrailwaymap-import-db:latest
- name: Start database
run: |
docker compose up --no-build --wait db
- name: Generate tiles
env:
BBOX: '12.9611,52.2934,13.8126,52.7147'
run: |
for tile in low-med high standard speed signals electrification; do
env "TILES=$tile" docker compose up --no-build martin-cp
done
- name: List generated tiles
run: |
ls -la tiles/*.mbtiles
- name: Start martin with tiles
run: |
docker compose build martin-static
docker compose up --no-build --wait martin-static
- name: Run static tile tests
working-directory: tiles
run: |
hurl --test --verbose --variable base_url=http://localhost:3000 test/tiles.hurl