Skip to content
Snippets Groups Projects
test_mapserver_image.sh 2.65 KiB
#!/usr/bin/env bash

debug() {
    echo >&2 "DEBUG: $@"
}

error() {
    echo >&2 "ERROR: $@"
    exit 1
}

if [[ $# -ne 2 ]]; then
    error "Usage: ./test_mapserver_image.sh <image_url> <image_tag>"
fi

image_url=$1
image_tag=$2

add_shapefile_content() {
    debug "Creating fake shapefile directory for C01"
    docker exec test mkdir -p /data/tiles/g16/abi/radf/C01
    debug "Creating fake shapefile file for C01"
    # TODO: Turn this into a function call it for the earlier test and add a wms_times request
    docker exec test python3 -c "import fiona; fiona.open('/data/tiles/g16/abi/radf/C01/C01.shp', 'w', driver='ESRI Shapefile', schema={'geometry': 'Polygon', 'properties': {'location': 'str', 'time': 'str:19'}})"
}

kill_test_container() {
    debug "Curl complete. Killing docker container..."
    docker kill test >/dev/null
    debug "Done killing docker container."
}

run_basic_shapefile_tests() {
    sf_exit_status=0
    debug "Starting test docker container (${image_url}:${image_tag}) for shapefile tests..."
    docker run --rm -d --name test -p 8888:80 ${image_url}:${image_tag} || sf_exit_status=1
    # just wait a bit to let the server start
    sleep 2
    debug "Container started. Starting curl basic request..."
    curl --fail -sS --max-time 5 "http://localhost:8888/" >/dev/null || sf_exit_status=1
    kill_test_container
    return $sf_exit_status
}

run_basic_postgres_tests() {
    pg_exit_status=0
    # Test with postgres settings provided
    debug "Starting test docker container (${image_url}:${image_tag}) for postgres tests..."
    docker run --rm -d --name test -e POSTGRES_HOST=localhost -e POSTGRES_PASSWORD_FILE="/secrets/fake_file" -p 8888:80 ${image_url}:${image_tag} || pg_exit_status=1
    # just wait a bit to let the server start
    sleep 2
    debug "Container started. Starting curl basic request..."
    curl --fail -sS --max-time 5 "http://localhost:8888/" >/dev/null || pg_exit_status=1

    add_shapefile_content
    debug "Starting curl basic mapfile request..."
    # NOTE: The time doesn't actually exist and no image data is available. A blank image should be returned
    curl --fail -sS --max-time 5 "http://localhost:8888/wms/g16/abi/radf/l1b?VERSION=1.1.1&REQUEST=GetMap&SERVICE=WMS&STYLES=&BBOX=-1330667.479176%2c-2773559.926648%2c2773559.926648%2c1330667.479176&WIDTH=256&HEIGHT=256&FORMAT=rgba&SRS=EPSG%3a930916&LAYERS=C01&TIME=2022-04-20T16:00:21Z" >/dev/null || pg_exit_status=1

    kill_test_container
    return $pg_exit_status
}

exit_status=0
run_basic_shapefile_tests || exit_status=1
run_basic_postgres_tests || exit_status=1
if [[ $exit_status -eq 0 ]]; then
    debug "SUCCESSFUL"
else
    debug "FAIL"
fi
exit $exit_status