Skip to content

Commit

Permalink
Fix DEFAULT_ATTRIBUTION value and add tests (#360)
Browse files Browse the repository at this point in the history
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
  • Loading branch information
hummeltech authored Dec 12, 2023
1 parent 925183a commit 8abe6ee
Show file tree
Hide file tree
Showing 4 changed files with 94 additions and 15 deletions.
10 changes: 10 additions & 0 deletions .github/actions/dependencies/install/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ inputs:
debian-test-dependencies:
default: >-
apache2
jq
fedora-build-dependencies:
default: >-
cairo-devel
Expand All @@ -45,6 +46,7 @@ inputs:
fedora-test-dependencies:
default: >-
httpd
jq
freebsd-build-dependencies:
default: >-
apache24
Expand All @@ -56,6 +58,9 @@ inputs:
libmemcached
mapnik
pkgconf
freebsd-test-dependencies:
default: >-
jq
macos-build-dependencies:
default: >-
apr
Expand All @@ -70,6 +75,7 @@ inputs:
macos-test-dependencies:
default: >-
coreutils
jq
opensuse-build-dependencies:
default: >-
apache2-devel
Expand All @@ -85,6 +91,7 @@ inputs:
apache2
apache2-event
apache2-prefork
jq
opensuse-mapnik-build-dependencies:
default: >-
bzip2
Expand Down Expand Up @@ -121,6 +128,7 @@ inputs:
rhel-test-dependencies:
default: >-
httpd
jq
rhel-mapnik-build-dependencies:
default: >-
boost-devel
Expand Down Expand Up @@ -172,6 +180,7 @@ inputs:
ubuntu-test-dependencies:
default: >-
apache2
jq
mapnik-build-version-centos-stream:
default: 3.1.0
mapnik-build-version-amazonlinux2-centos7:
Expand Down Expand Up @@ -224,6 +233,7 @@ runs:
with:
packages: >-
${{ inputs.freebsd-build-dependencies }}
${{ inputs.freebsd-test-dependencies }}
${{ matrix.build_system == 'CMake' && 'cmake' || 'autoconf automake' }}
${{ matrix.compiler == 'GNU' && 'gcc' || 'llvm' }}
if: github.job == 'FreeBSD'
Expand Down
2 changes: 1 addition & 1 deletion .github/actions/dependencies/install/brew/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ runs:
using: composite
steps:
- name: Install package(s)
run: brew install ${{ inputs.packages }}
run: brew install ${{ inputs.packages }} || true
shell: bash --noprofile --norc -euxo pipefail {0}
2 changes: 1 addition & 1 deletion includes/mod_tile.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
/* Maximum number of times we camp out before giving up */
#define MAXCAMP 10

#define DEFAULT_ATTRIBUTION "&copy;<a href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> and <a href=\"http://wiki.openstreetmap.org/wiki/Contributors\">contributors</a>, <a href=\"http://opendatacommons.org/licenses/odbl/\">(ODbL)</a>"
#define DEFAULT_ATTRIBUTION "&copy;<a href=\\\"http://www.openstreetmap.org/\\\">OpenStreetMap</a> and <a href=\\\"http://wiki.openstreetmap.org/wiki/Contributors\\\">contributors</a>, <a href=\\\"http://opendatacommons.org/licenses/odbl/\\\">(ODbL)</a>"

typedef struct delaypool_entry {
struct in6_addr ip_addr;
Expand Down
95 changes: 82 additions & 13 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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}\"
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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()

0 comments on commit 8abe6ee

Please sign in to comment.