-
David Hoese authoredVerified15c185e6
test_mapserver_image.sh 2.50 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'}})"
}
start_test_container() {
debug "Starting test docker container (${image_url}:${image_tag})..."
docker run --rm -d --name test -p 8888:80 $@ ${image_url}:${image_tag}
start_status=$?
# just wait a bit to let the server start
sleep 2
debug "Container started."
return $start_status
}
kill_test_container() {
debug "Curl complete. Killing docker container..."
docker kill test >/dev/null
debug "Done killing docker container."
}
curl_index() {
debug "Starting curl basic request..."
curl --fail -sS --max-time 5 "http://localhost:8888/" >/dev/null
}
run_basic_shapefile_tests() {
sf_exit_status=0
debug "Starting shapefile tests..."
start_test_container || sf_exit_status=1
curl_index || sf_exit_status=1
kill_test_container
return $sf_exit_status
}
run_basic_postgres_tests() {
pg_exit_status=0
debug "Starting postgres tests..."
start_test_container -e POSTGRES_HOST=localhost -e POSTGRES_PASSWORD_FILE="/secrets/fake_file" || pg_exit_status=1
add_shapefile_content
curl_index || pg_exit_status=1
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 "SUCCESS"
else
debug "FAIL"
fi
exit $exit_status