Skip to content

Commit 8abe6ee

Browse files
authored
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
1 parent 925183a commit 8abe6ee

4 files changed

Lines changed: 94 additions & 15 deletions

File tree

.github/actions/dependencies/install/action.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ inputs:
3131
debian-test-dependencies:
3232
default: >-
3333
apache2
34+
jq
3435
fedora-build-dependencies:
3536
default: >-
3637
cairo-devel
@@ -45,6 +46,7 @@ inputs:
4546
fedora-test-dependencies:
4647
default: >-
4748
httpd
49+
jq
4850
freebsd-build-dependencies:
4951
default: >-
5052
apache24
@@ -56,6 +58,9 @@ inputs:
5658
libmemcached
5759
mapnik
5860
pkgconf
61+
freebsd-test-dependencies:
62+
default: >-
63+
jq
5964
macos-build-dependencies:
6065
default: >-
6166
apr
@@ -70,6 +75,7 @@ inputs:
7075
macos-test-dependencies:
7176
default: >-
7277
coreutils
78+
jq
7379
opensuse-build-dependencies:
7480
default: >-
7581
apache2-devel
@@ -85,6 +91,7 @@ inputs:
8591
apache2
8692
apache2-event
8793
apache2-prefork
94+
jq
8895
opensuse-mapnik-build-dependencies:
8996
default: >-
9097
bzip2
@@ -121,6 +128,7 @@ inputs:
121128
rhel-test-dependencies:
122129
default: >-
123130
httpd
131+
jq
124132
rhel-mapnik-build-dependencies:
125133
default: >-
126134
boost-devel
@@ -172,6 +180,7 @@ inputs:
172180
ubuntu-test-dependencies:
173181
default: >-
174182
apache2
183+
jq
175184
mapnik-build-version-centos-stream:
176185
default: 3.1.0
177186
mapnik-build-version-amazonlinux2-centos7:
@@ -224,6 +233,7 @@ runs:
224233
with:
225234
packages: >-
226235
${{ inputs.freebsd-build-dependencies }}
236+
${{ inputs.freebsd-test-dependencies }}
227237
${{ matrix.build_system == 'CMake' && 'cmake' || 'autoconf automake' }}
228238
${{ matrix.compiler == 'GNU' && 'gcc' || 'llvm' }}
229239
if: github.job == 'FreeBSD'

.github/actions/dependencies/install/brew/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ runs:
88
using: composite
99
steps:
1010
- name: Install package(s)
11-
run: brew install ${{ inputs.packages }}
11+
run: brew install ${{ inputs.packages }} || true
1212
shell: bash --noprofile --norc -euxo pipefail {0}

includes/mod_tile.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
/* Maximum number of times we camp out before giving up */
5050
#define MAXCAMP 10
5151

52-
#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>"
52+
#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>"
5353

5454
typedef struct delaypool_entry {
5555
struct in6_addr ip_addr;

tests/CMakeLists.txt

Lines changed: 82 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ find_program(CURL_EXECUTABLE NAMES curl REQUIRED)
2323
find_program(GREP_EXECUTABLE NAMES grep REQUIRED)
2424
find_program(HTTPD_EXECUTABLE NAMES ${HTTPD_PROGNAME} REQUIRED)
2525
find_program(ID_EXECUTABLE NAMES id REQUIRED)
26+
find_program(JQ_EXECUTABLE NAMES jq)
2627
find_program(KILL_EXECUTABLE NAMES kill REQUIRED)
2728
find_program(MKDIR_EXECUTABLE NAMES mkdir REQUIRED)
2829
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
5253
set(TILE_STATUS_OFF_URL "http://localhost:${HTTPD1_PORT}/tiles/renderd-example/9/297/191.png/status")
5354
set(TILE_STATUS_ON_URL "http://localhost:${HTTPD0_PORT}/tiles/renderd-example/9/297/191.png/status")
5455

55-
set(CURL_CMD "${CURL_EXECUTABLE} --fail --silent")
56-
set(TILE_DEFAULT_CMD "${CURL_CMD} ${TILE_DEFAULT_URL}")
56+
set(METRICS_URL "http://localhost:${HTTPD0_PORT}/metrics")
57+
set(MOD_TILE_URL "http://localhost:${HTTPD0_PORT}/mod_tile")
58+
set(TILE_DEFAULT_TILEJSON_URL "http://localhost:${HTTPD0_PORT}/tiles/renderd-example/tile-layer.json")
59+
5760
set(TILE_DEFAULT_SHA256SUM "dbf26531286e844a3a9735cdd193598dca78d22f77cafe5824bcaf17f88cbb08")
58-
set(TILE_JPG_CMD "${CURL_CMD} ${TILE_JPG_URL}")
5961
set(TILE_JPG_SHA256SUM "e09c3406c02f03583dadf0c8404c2d3efdc06a40d399e381ed2f47f49fde42d7")
60-
set(TILE_PNG256_CMD "${CURL_CMD} ${TILE_PNG256_URL}")
6162
set(TILE_PNG256_SHA256SUM "${TILE_DEFAULT_SHA256SUM}")
62-
set(TILE_PNG32_CMD "${CURL_CMD} ${TILE_PNG32_URL}")
6363
set(TILE_PNG32_SHA256SUM "1006d92152f1e18896e0016fb43201b14bbcf7655955b74495ad3610541d325b")
64-
set(TILE_WEBP_CMD "${CURL_CMD} ${TILE_WEBP_URL}")
6564
set(TILE_WEBP_SHA256SUM_4 "ef3862a57831b21ec69c15be196e1e2b4fea66246c361142631b9fa22b85decc") # libwebp.so.4
6665
set(TILE_WEBP_SHA256SUM_6 "96fc0455b2269a7bcd4a5b3c9844529c3c77e3bb15f56e72f78a5af3bc15b6b5") # libwebp.so.6
6766
set(TILE_WEBP_SHA256SUM_7 "a82ef9ba5dc333de88af7b645084c30ab2b01c664e17162cbf6659c287cc4df4") # libwebp.so.7
6867

68+
set(CURL_CMD "${CURL_EXECUTABLE} --fail --silent")
69+
6970
execute_process(COMMAND ${ID_EXECUTABLE} -gn ${WWW_USER_NAME}
7071
OUTPUT_STRIP_TRAILING_WHITESPACE
7172
OUTPUT_VARIABLE WWW_GROUP_NAME
@@ -167,23 +168,23 @@ add_test(
167168
add_test(
168169
NAME download_tiles
169170
COMMAND ${BASH} -c "
170-
until $(${TILE_DEFAULT_CMD} --output tile.png); do
171+
until $(${CURL_CMD} ${TILE_DEFAULT_URL} --output tile.png); do
171172
echo 'Sleeping 1s (DEFAULT)';
172173
sleep 1;
173174
done
174-
until $(${TILE_JPG_CMD} --output tile.jpg); do
175+
until $(${CURL_CMD} ${TILE_JPG_URL} --output tile.jpg); do
175176
echo 'Sleeping 1s (JPG)';
176177
sleep 1;
177178
done
178-
until $(${TILE_PNG256_CMD} --output tile.png256); do
179+
until $(${CURL_CMD} ${TILE_PNG256_URL} --output tile.png256); do
179180
echo 'Sleeping 1s (PNG256)';
180181
sleep 1;
181182
done
182-
until $(${TILE_PNG32_CMD} --output tile.png32); do
183+
until $(${CURL_CMD} ${TILE_PNG32_URL} --output tile.png32); do
183184
echo 'Sleeping 1s (PNG32)';
184185
sleep 1;
185186
done
186-
until $(${TILE_WEBP_CMD} --output tile.webp); do
187+
until $(${CURL_CMD} ${TILE_WEBP_URL} --output tile.webp); do
187188
echo 'Sleeping 1s (WEBP)';
188189
sleep 1;
189190
done
@@ -206,7 +207,7 @@ add_test(
206207
WORKING_DIRECTORY tests
207208
)
208209
add_test(
209-
NAME dirty_tile
210+
NAME status_and_dirty_urls
210211
COMMAND ${BASH} -c "
211212
TILE_DIRTY_ON_CMD=\"${CURL_CMD} ${TILE_DIRTY_ON_URL}\"
212213
TILE_STATUS_ON_CMD=\"${CURL_CMD} ${TILE_STATUS_ON_URL}\"
@@ -239,6 +240,48 @@ add_test(
239240
"
240241
WORKING_DIRECTORY tests
241242
)
243+
add_test(
244+
NAME metrics_url
245+
COMMAND ${BASH} -c "
246+
METRICS_CMD=\"${CURL_CMD} ${METRICS_URL}\"
247+
METRICS_OUTPUT=$(\${METRICS_CMD})
248+
echo \"\${METRICS_OUTPUT}\"
249+
for LAYER in '' '-jpg' '-png256' '-png32' '-webp'; do
250+
LAYER_200=\"modtile_layer_responses_total{layer=\\\"/tiles/renderd-example\${LAYER}/\\\",status=\\\"200\\\"} 1\"
251+
LAYER_404=\"modtile_layer_responses_total{layer=\\\"/tiles/renderd-example\${LAYER}/\\\",status=\\\"404\\\"} 0\"
252+
echo \"\${LAYER_200}\"
253+
echo \"\${LAYER_404}\"
254+
if [[ \"\${METRICS_OUTPUT}\" != *\"\${LAYER_200}\"* ]]; then
255+
exit 1;
256+
fi
257+
if [[ \"\${METRICS_OUTPUT}\" != *\"\${LAYER_404}\"* ]]; then
258+
exit 1;
259+
fi
260+
done
261+
"
262+
WORKING_DIRECTORY tests
263+
)
264+
add_test(
265+
NAME mod_tile_url
266+
COMMAND ${BASH} -c "
267+
MOD_TILE_CMD=\"${CURL_CMD} ${MOD_TILE_URL}\"
268+
MOD_TILE_OUTPUT=$(\${MOD_TILE_CMD})
269+
echo \"\${MOD_TILE_OUTPUT}\"
270+
for LAYER in '' '-jpg' '-png256' '-png32' '-webp'; do
271+
LAYER_200=\"NoRes200Layer/tiles/renderd-example\${LAYER}/: 1\"
272+
LAYER_404=\"NoRes404Layer/tiles/renderd-example\${LAYER}/: 0\"
273+
echo \"\${LAYER_200}\"
274+
echo \"\${LAYER_404}\"
275+
if [[ \"\${MOD_TILE_OUTPUT}\" != *\"\${LAYER_200}\"* ]]; then
276+
exit 1;
277+
fi
278+
if [[ \"\${MOD_TILE_OUTPUT}\" != *\"\${LAYER_404}\"* ]]; then
279+
exit 1;
280+
fi
281+
done
282+
"
283+
WORKING_DIRECTORY tests
284+
)
242285
add_test(
243286
NAME remove_tiles
244287
COMMAND ${RM} -v tile.png tile.jpg tile.png256 tile.png32 tile.webp
@@ -322,14 +365,40 @@ set_tests_properties(check_tiles PROPERTIES
322365
FIXTURES_REQUIRED "httpd_started;tiles_downloaded"
323366
REQUIRED_FILES "tile.png;tile.jpg;tile.png256;tile.png32;tile.webp"
324367
)
325-
set_tests_properties(dirty_tile PROPERTIES
368+
set_tests_properties(status_and_dirty_urls PROPERTIES
326369
DEPENDS download_tiles
327370
FIXTURES_REQUIRED "httpd_started;tiles_downloaded"
328371
REQUIRED_FILES "tile.png;tile.jpg;tile.png256;tile.png32;tile.webp"
329372
TIMEOUT 60
330373
)
374+
set_tests_properties(metrics_url PROPERTIES
375+
DEPENDS download_tiles
376+
FIXTURES_REQUIRED "httpd_started;tiles_downloaded"
377+
)
378+
set_tests_properties(mod_tile_url PROPERTIES
379+
DEPENDS download_tiles
380+
FIXTURES_REQUIRED "httpd_started;tiles_downloaded"
381+
)
331382
set_tests_properties(remove_tiles PROPERTIES
332383
DEPENDS download_tiles
333384
FIXTURES_CLEANUP tiles_downloaded
334385
REQUIRED_FILES "tile.png;tile.jpg;tile.png256;tile.png32;tile.webp"
335386
)
387+
388+
if(JQ_EXECUTABLE)
389+
add_test(
390+
NAME tilejson_url
391+
COMMAND ${BASH} -c "
392+
TILE_DEFAULT_TILEJSON_CMD=\"${CURL_CMD} ${TILE_DEFAULT_TILEJSON_URL}\"
393+
TILE_DEFAULT_TILEJSON_OUTPUT=$(\${TILE_DEFAULT_TILEJSON_CMD})
394+
TILE_DEFAULT_TILEJSON_VERSION=$(echo \"\${TILE_DEFAULT_TILEJSON_OUTPUT}\" | ${JQ_EXECUTABLE} -r .tilejson)
395+
if [ \"\${TILE_DEFAULT_TILEJSON_VERSION}\" != \"2.0.0\" ]; then
396+
exit 1;
397+
fi
398+
"
399+
WORKING_DIRECTORY tests
400+
)
401+
set_tests_properties(tilejson_url PROPERTIES
402+
FIXTURES_REQUIRED httpd_started
403+
)
404+
endif()

0 commit comments

Comments
 (0)