Fix DEFAULT_ATTRIBUTION value and add tests (#360)

The value for `DEFAULT_ATTRIBUTION` in `includes/mod_tile.h` needed to be escaped, it was causing a JSON parsing failure.
* Added basic test for `/.../.../tile-layer.json` to ensure parsing is successful
* Added basic tests for `/metrics` & `/mod_tile` URLs
This commit is contained in:
Hummeltech
2023-12-12 12:48:15 -07:00
committed by GitHub
parent 925183a960
commit 8abe6eed6d
4 changed files with 94 additions and 15 deletions

View File

@ -23,6 +23,7 @@ find_program(CURL_EXECUTABLE NAMES curl REQUIRED)
find_program(GREP_EXECUTABLE NAMES grep REQUIRED)
find_program(HTTPD_EXECUTABLE NAMES ${HTTPD_PROGNAME} REQUIRED)
find_program(ID_EXECUTABLE NAMES id REQUIRED)
find_program(JQ_EXECUTABLE NAMES jq)
find_program(KILL_EXECUTABLE NAMES kill REQUIRED)
find_program(MKDIR_EXECUTABLE NAMES mkdir REQUIRED)
find_program(SHA256SUM_EXECUTABLE NAMES gsha256sum sha256sum REQUIRED)
@ -52,20 +53,20 @@ set(TILE_DIRTY_ON_URL "http://localhost:${HTTPD0_PORT}/tiles/renderd-example/9/2
set(TILE_STATUS_OFF_URL "http://localhost:${HTTPD1_PORT}/tiles/renderd-example/9/297/191.png/status")
set(TILE_STATUS_ON_URL "http://localhost:${HTTPD0_PORT}/tiles/renderd-example/9/297/191.png/status")
set(CURL_CMD "${CURL_EXECUTABLE} --fail --silent")
set(TILE_DEFAULT_CMD "${CURL_CMD} ${TILE_DEFAULT_URL}")
set(METRICS_URL "http://localhost:${HTTPD0_PORT}/metrics")
set(MOD_TILE_URL "http://localhost:${HTTPD0_PORT}/mod_tile")
set(TILE_DEFAULT_TILEJSON_URL "http://localhost:${HTTPD0_PORT}/tiles/renderd-example/tile-layer.json")
set(TILE_DEFAULT_SHA256SUM "dbf26531286e844a3a9735cdd193598dca78d22f77cafe5824bcaf17f88cbb08")
set(TILE_JPG_CMD "${CURL_CMD} ${TILE_JPG_URL}")
set(TILE_JPG_SHA256SUM "e09c3406c02f03583dadf0c8404c2d3efdc06a40d399e381ed2f47f49fde42d7")
set(TILE_PNG256_CMD "${CURL_CMD} ${TILE_PNG256_URL}")
set(TILE_PNG256_SHA256SUM "${TILE_DEFAULT_SHA256SUM}")
set(TILE_PNG32_CMD "${CURL_CMD} ${TILE_PNG32_URL}")
set(TILE_PNG32_SHA256SUM "1006d92152f1e18896e0016fb43201b14bbcf7655955b74495ad3610541d325b")
set(TILE_WEBP_CMD "${CURL_CMD} ${TILE_WEBP_URL}")
set(TILE_WEBP_SHA256SUM_4 "ef3862a57831b21ec69c15be196e1e2b4fea66246c361142631b9fa22b85decc") # libwebp.so.4
set(TILE_WEBP_SHA256SUM_6 "96fc0455b2269a7bcd4a5b3c9844529c3c77e3bb15f56e72f78a5af3bc15b6b5") # libwebp.so.6
set(TILE_WEBP_SHA256SUM_7 "a82ef9ba5dc333de88af7b645084c30ab2b01c664e17162cbf6659c287cc4df4") # libwebp.so.7
set(CURL_CMD "${CURL_EXECUTABLE} --fail --silent")
execute_process(COMMAND ${ID_EXECUTABLE} -gn ${WWW_USER_NAME}
OUTPUT_STRIP_TRAILING_WHITESPACE
OUTPUT_VARIABLE WWW_GROUP_NAME
@ -167,23 +168,23 @@ add_test(
add_test(
NAME download_tiles
COMMAND ${BASH} -c "
until $(${TILE_DEFAULT_CMD} --output tile.png); do
until $(${CURL_CMD} ${TILE_DEFAULT_URL} --output tile.png); do
echo 'Sleeping 1s (DEFAULT)';
sleep 1;
done
until $(${TILE_JPG_CMD} --output tile.jpg); do
until $(${CURL_CMD} ${TILE_JPG_URL} --output tile.jpg); do
echo 'Sleeping 1s (JPG)';
sleep 1;
done
until $(${TILE_PNG256_CMD} --output tile.png256); do
until $(${CURL_CMD} ${TILE_PNG256_URL} --output tile.png256); do
echo 'Sleeping 1s (PNG256)';
sleep 1;
done
until $(${TILE_PNG32_CMD} --output tile.png32); do
until $(${CURL_CMD} ${TILE_PNG32_URL} --output tile.png32); do
echo 'Sleeping 1s (PNG32)';
sleep 1;
done
until $(${TILE_WEBP_CMD} --output tile.webp); do
until $(${CURL_CMD} ${TILE_WEBP_URL} --output tile.webp); do
echo 'Sleeping 1s (WEBP)';
sleep 1;
done
@ -206,7 +207,7 @@ add_test(
WORKING_DIRECTORY tests
)
add_test(
NAME dirty_tile
NAME status_and_dirty_urls
COMMAND ${BASH} -c "
TILE_DIRTY_ON_CMD=\"${CURL_CMD} ${TILE_DIRTY_ON_URL}\"
TILE_STATUS_ON_CMD=\"${CURL_CMD} ${TILE_STATUS_ON_URL}\"
@ -239,6 +240,48 @@ add_test(
"
WORKING_DIRECTORY tests
)
add_test(
NAME metrics_url
COMMAND ${BASH} -c "
METRICS_CMD=\"${CURL_CMD} ${METRICS_URL}\"
METRICS_OUTPUT=$(\${METRICS_CMD})
echo \"\${METRICS_OUTPUT}\"
for LAYER in '' '-jpg' '-png256' '-png32' '-webp'; do
LAYER_200=\"modtile_layer_responses_total{layer=\\\"/tiles/renderd-example\${LAYER}/\\\",status=\\\"200\\\"} 1\"
LAYER_404=\"modtile_layer_responses_total{layer=\\\"/tiles/renderd-example\${LAYER}/\\\",status=\\\"404\\\"} 0\"
echo \"\${LAYER_200}\"
echo \"\${LAYER_404}\"
if [[ \"\${METRICS_OUTPUT}\" != *\"\${LAYER_200}\"* ]]; then
exit 1;
fi
if [[ \"\${METRICS_OUTPUT}\" != *\"\${LAYER_404}\"* ]]; then
exit 1;
fi
done
"
WORKING_DIRECTORY tests
)
add_test(
NAME mod_tile_url
COMMAND ${BASH} -c "
MOD_TILE_CMD=\"${CURL_CMD} ${MOD_TILE_URL}\"
MOD_TILE_OUTPUT=$(\${MOD_TILE_CMD})
echo \"\${MOD_TILE_OUTPUT}\"
for LAYER in '' '-jpg' '-png256' '-png32' '-webp'; do
LAYER_200=\"NoRes200Layer/tiles/renderd-example\${LAYER}/: 1\"
LAYER_404=\"NoRes404Layer/tiles/renderd-example\${LAYER}/: 0\"
echo \"\${LAYER_200}\"
echo \"\${LAYER_404}\"
if [[ \"\${MOD_TILE_OUTPUT}\" != *\"\${LAYER_200}\"* ]]; then
exit 1;
fi
if [[ \"\${MOD_TILE_OUTPUT}\" != *\"\${LAYER_404}\"* ]]; then
exit 1;
fi
done
"
WORKING_DIRECTORY tests
)
add_test(
NAME remove_tiles
COMMAND ${RM} -v tile.png tile.jpg tile.png256 tile.png32 tile.webp
@ -322,14 +365,40 @@ set_tests_properties(check_tiles PROPERTIES
FIXTURES_REQUIRED "httpd_started;tiles_downloaded"
REQUIRED_FILES "tile.png;tile.jpg;tile.png256;tile.png32;tile.webp"
)
set_tests_properties(dirty_tile PROPERTIES
set_tests_properties(status_and_dirty_urls PROPERTIES
DEPENDS download_tiles
FIXTURES_REQUIRED "httpd_started;tiles_downloaded"
REQUIRED_FILES "tile.png;tile.jpg;tile.png256;tile.png32;tile.webp"
TIMEOUT 60
)
set_tests_properties(metrics_url PROPERTIES
DEPENDS download_tiles
FIXTURES_REQUIRED "httpd_started;tiles_downloaded"
)
set_tests_properties(mod_tile_url PROPERTIES
DEPENDS download_tiles
FIXTURES_REQUIRED "httpd_started;tiles_downloaded"
)
set_tests_properties(remove_tiles PROPERTIES
DEPENDS download_tiles
FIXTURES_CLEANUP tiles_downloaded
REQUIRED_FILES "tile.png;tile.jpg;tile.png256;tile.png32;tile.webp"
)
if(JQ_EXECUTABLE)
add_test(
NAME tilejson_url
COMMAND ${BASH} -c "
TILE_DEFAULT_TILEJSON_CMD=\"${CURL_CMD} ${TILE_DEFAULT_TILEJSON_URL}\"
TILE_DEFAULT_TILEJSON_OUTPUT=$(\${TILE_DEFAULT_TILEJSON_CMD})
TILE_DEFAULT_TILEJSON_VERSION=$(echo \"\${TILE_DEFAULT_TILEJSON_OUTPUT}\" | ${JQ_EXECUTABLE} -r .tilejson)
if [ \"\${TILE_DEFAULT_TILEJSON_VERSION}\" != \"2.0.0\" ]; then
exit 1;
fi
"
WORKING_DIRECTORY tests
)
set_tests_properties(tilejson_url PROPERTIES
FIXTURES_REQUIRED httpd_started
)
endif()