Skip to content

Commit d761f96

Browse files
authored
Added AddTileConfig documentation to example HTTPD config (#372)
_Also_: - Removed `AddTileMimeConfig` from example `HTTPD` config - No longer needed after merging #346 - Deprecation notice incoming with #370 - Added additional `AddTileConfig`/`AddTileMimeConfig` tests - Testing failing download with invalid map name in `httpd.conf` - Testing parsing invalid `httpd.conf`, e.g.: - `LoadTileConfigFile` without arguments - `LoadTileConfigFile` without non-existent file - Replaced `grep` with `${GREP_EXECUTABLE}` in tests
1 parent 097f941 commit d761f96

3 files changed

Lines changed: 124 additions & 25 deletions

File tree

etc/apache2/renderd-example-map.conf

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,25 @@ Listen 8081
2121
# "memcached://{memcached_host}:{memcached_port}" for MemcacheD
2222
ModTileTileDir /var/cache/renderd/tiles
2323

24-
# You can manually configure each tile set with AddTileConfig or AddTileMimeConfig.
24+
# You can manually configure each tile set with AddTileConfig.
2525
# The first argument is the URL path relative to this virtual host
2626
# under which a tile set is served. The second argument specifies the
2727
# name of the tile set. This is used in the communication with renderd
2828
# and is the directory under which (meta)tiles are stored on disk.
2929
#
3030
# By default (AddTileConfig) mod_tile assumes you are serving png files, however,
3131
# mod_tile can also serve arbitrary other tile types such as javascript vector tiles,
32-
# assuming the backend render daemon can handle the file type.
33-
# To this purpose AddTileMimeConfig takes a 3rd agument, the file extension and it
34-
# will guess the correct mimetype from it. If the mime type is not set correctly automatically,
35-
# you need to use the configuration file route, where you can specify the mimetype and file extension
36-
# independently.
32+
# assuming the backend render daemon can handle the type.
33+
# To this purpose AddTileConfig also accepts additional arguments in the form of
34+
# key=value pairs, with the following keys currently being supported:
35+
# * extension
36+
# * maxzoom
37+
# * mimetype
38+
# * minzoom
39+
# * tile_dir
3740
#
3841
#AddTileConfig /folder/ TileSetName
39-
#AddTileMimeConfig /folder2/ TileSetName2 js
42+
#AddTileConfig /folder2/ TileSetName2 extension=js mimetype=text/javascript
4043

4144
# Alternatively (or in addition) you can load all the tile sets defined in the configuration file into this virtual host
4245
LoadTileConfigFile /etc/renderd.conf

tests/CMakeLists.txt

Lines changed: 112 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ set(RENDERD1_PORT_BASE "59500")
4848

4949
set(CURL_CMD "${CURL_EXECUTABLE} --fail --silent")
5050

51-
set(MAP_NAMES "jpg" "png256" "png32" "webp")
51+
set(MAP_NAMES jpg png256 png32 webp)
5252

5353
set(TESTS_CONF_DIR "${PROJECT_BINARY_DIR}/tests/conf")
5454
set(TESTS_LOGS_DIR "${PROJECT_BINARY_DIR}/tests/logs")
@@ -101,16 +101,16 @@ add_test(
101101
)
102102

103103
foreach(STORAGE_BACKEND_INDEX RANGE ${STORAGE_BACKENDS_LENGTH})
104-
# Get STORAGE_BACKEND from lists
104+
# Get STORAGE_BACKEND from STORAGE_BACKENDS list
105105
list(GET STORAGE_BACKENDS ${STORAGE_BACKEND_INDEX} STORAGE_BACKEND)
106106

107107
# Increment Ports
108108
math(EXPR HTTPD0_PORT "${HTTPD0_PORT_BASE} + ${STORAGE_BACKEND_INDEX}")
109109
math(EXPR HTTPD1_PORT "${HTTPD1_PORT_BASE} + ${STORAGE_BACKEND_INDEX}")
110110
math(EXPR RENDERD1_PORT "${RENDERD1_PORT_BASE} + ${STORAGE_BACKEND_INDEX}")
111-
if(STORAGE_BACKEND STREQUAL "memcached_custom")
111+
if(STORAGE_BACKEND STREQUAL memcached_custom)
112112
math(EXPR MEMCACHED_PORT "${MEMCACHED_PORT_BASE} + ${STORAGE_BACKEND_INDEX}")
113-
elseif(STORAGE_BACKEND STREQUAL "memcached_default")
113+
elseif(STORAGE_BACKEND STREQUAL memcached_default)
114114
set(MEMCACHED_PORT "11211")
115115
endif()
116116

@@ -146,13 +146,13 @@ foreach(STORAGE_BACKEND_INDEX RANGE ${STORAGE_BACKENDS_LENGTH})
146146
set(RENDERD_CONF "${TEST_CONF_DIR}/renderd.conf")
147147

148148
# Set TILE_DIR value
149-
if(STORAGE_BACKEND STREQUAL "file")
149+
if(STORAGE_BACKEND STREQUAL file)
150150
# Use TEST_TILES_DIR for file backend
151151
set(TILE_DIR "${TEST_TILES_DIR}")
152-
elseif(STORAGE_BACKEND STREQUAL "memcached_custom")
152+
elseif(STORAGE_BACKEND STREQUAL memcached_custom)
153153
# MemcacheD backend "custom" host:port
154154
set(TILE_DIR "memcached://${MEMCACHED_HOST}:${MEMCACHED_PORT}")
155-
elseif(STORAGE_BACKEND STREQUAL "memcached_default")
155+
elseif(STORAGE_BACKEND STREQUAL memcached_default)
156156
# MemcacheD backend "default"
157157
set(TILE_DIR "memcached://")
158158
endif()
@@ -215,11 +215,11 @@ foreach(STORAGE_BACKEND_INDEX RANGE ${STORAGE_BACKENDS_LENGTH})
215215

216216
foreach(SOCKET_TYPE sock tcp)
217217
# Use socket file as --socket value for communicating with renderd process
218-
if(SOCKET_TYPE STREQUAL "sock")
218+
if(SOCKET_TYPE STREQUAL sock)
219219
set(SOCKET ${RENDERD0_SOCKET})
220220
endif()
221221
# Use TCP host:port as --socket value for communicating with renderd process
222-
if(SOCKET_TYPE STREQUAL "tcp")
222+
if(SOCKET_TYPE STREQUAL tcp)
223223
set(SOCKET ${RENDERD1_HOST}:${RENDERD1_PORT})
224224
endif()
225225

@@ -367,7 +367,7 @@ foreach(STORAGE_BACKEND_INDEX RANGE ${STORAGE_BACKENDS_LENGTH})
367367
NAME add_tile_config_${SOCKET_TYPE}_${STORAGE_BACKEND}
368368
COMMAND ${BASH} -c "
369369
CONFIG_NAME=\"add_tile_config_${SOCKET_TYPE}\"
370-
SEARCH_LINE=\$(grep -m1 \"Loading tile config \${CONFIG_NAME}\" ${HTTPD_LOG})
370+
SEARCH_LINE=\$(${GREP_EXECUTABLE} -m1 \"Loading tile config \${CONFIG_NAME}\" ${HTTPD_LOG})
371371
SEARCH_STRS=(
372372
\" at /\${CONFIG_NAME}/ \"
373373
\" extension .jpg \"
@@ -379,7 +379,7 @@ foreach(STORAGE_BACKEND_INDEX RANGE ${STORAGE_BACKENDS_LENGTH})
379379
echo \"Searching log line '\${SEARCH_LINE}'\"
380380
for SEARCH_STR in \"\${SEARCH_STRS[@]}\"; do
381381
echo \"\tFor '\${SEARCH_STR}'\"
382-
echo \"\${SEARCH_LINE}\" | grep -q -e \"\${SEARCH_STR}\" || exit 1
382+
echo \"\${SEARCH_LINE}\" | ${GREP_EXECUTABLE} -q -e \"\${SEARCH_STR}\" || exit 1
383383
done
384384
"
385385
WORKING_DIRECTORY tests
@@ -396,7 +396,7 @@ foreach(STORAGE_BACKEND_INDEX RANGE ${STORAGE_BACKENDS_LENGTH})
396396
if [ \"\${SEARCH_CONFIG}\" = \"js\" ]; then
397397
MIME_TYPE=text/javascript
398398
fi
399-
SEARCH_LINE=\$(grep -m1 \"Loading tile config \${CONFIG_NAME}\" ${HTTPD_LOG})
399+
SEARCH_LINE=\$(${GREP_EXECUTABLE} -m1 \"Loading tile config \${CONFIG_NAME}\" ${HTTPD_LOG})
400400
SEARCH_STRS=(
401401
\" at /\${CONFIG_NAME}/ \"
402402
\" extension .\${SEARCH_CONFIG} \"
@@ -407,20 +407,56 @@ foreach(STORAGE_BACKEND_INDEX RANGE ${STORAGE_BACKENDS_LENGTH})
407407
# echo \"Searching log line '\${SEARCH_LINE}'\"
408408
# for SEARCH_STR in \"\${SEARCH_STRS[@]}\"; do
409409
# echo \"\tFor '\${SEARCH_STR}'\"
410-
# echo \"\${SEARCH_LINE}\" | grep -q -e \"\${SEARCH_STR}\" || exit 1
410+
# echo \"\${SEARCH_LINE}\" | ${GREP_EXECUTABLE} -q -e \"\${SEARCH_STR}\" || exit 1
411411
# done
412-
# SEARCH_LINE=\$(grep \"AddTileMimeConfig will be deprecated\" ${HTTPD_LOG} | grep -m1 \"\${CONFIG_NAME}\")
412+
# SEARCH_LINE=\$(${GREP_EXECUTABLE} \"AddTileMimeConfig will be deprecated\" ${HTTPD_LOG} | \
413+
# ${GREP_EXECUTABLE} -m1 \"\${CONFIG_NAME}\")
413414
# echo \"Searching log line '\${SEARCH_LINE}'\"
414415
# SEARCH_STR=\"AddTileConfig /\${CONFIG_NAME}/ \${CONFIG_NAME} mimetype=\${MIME_TYPE} extension=\${SEARCH_CONFIG}\"
415416
# echo \"\tFor '\${SEARCH_STR}'\"
416-
# echo \"\${SEARCH_LINE}\" | grep -q -e \"\${SEARCH_STR}\" || exit 1
417+
# echo \"\${SEARCH_LINE}\" | ${GREP_EXECUTABLE} -q -e \"\${SEARCH_STR}\" || exit 1
417418
done
418419
"
419420
WORKING_DIRECTORY tests
420421
)
421422
set_tests_properties(add_tile_mime_config_${SOCKET_TYPE}_${STORAGE_BACKEND} PROPERTIES
422423
FIXTURES_REQUIRED services_started_${STORAGE_BACKEND}
423424
)
425+
foreach(BAD_ADD_CONFIG add_tile_config add_tile_mime_config_js add_tile_mime_config_png)
426+
if(BAD_ADD_CONFIG STREQUAL add_tile_config)
427+
set(EXTENSION jpg)
428+
elseif(BAD_ADD_CONFIG STREQUAL add_tile_mime_config_js)
429+
set(EXTENSION js)
430+
elseif(BAD_ADD_CONFIG STREQUAL add_tile_mime_config_png)
431+
set(EXTENSION png)
432+
endif()
433+
set(TILE_URL_PATH "/${BAD_ADD_CONFIG}_${SOCKET_TYPE}/${TILE_ZXY}.${EXTENSION}")
434+
set(HTTPD0_URL "http://${HTTPD0_HOST}:${HTTPD0_PORT}${TILE_URL_PATH}")
435+
set(HTTPD1_URL "http://${HTTPD1_HOST}:${HTTPD1_PORT}${TILE_URL_PATH}")
436+
add_test(
437+
NAME bad_download_tile_${BAD_ADD_CONFIG}_${SOCKET_TYPE}_${STORAGE_BACKEND}
438+
COMMAND ${BASH} -c "
439+
echo \"Downloading ${HTTPD0_URL}\"
440+
if ${CURL_CMD} ${HTTPD0_URL}; then
441+
echo \"Unexpected success.\"
442+
exit 1;
443+
else
444+
exit 0;
445+
fi
446+
echo \"Downloading ${HTTPD1_URL}\"
447+
if ${CURL_CMD} ${HTTPD1_URL}; then
448+
echo \"Unexpected success.\"
449+
exit 1;
450+
else
451+
exit 0;
452+
fi
453+
"
454+
WORKING_DIRECTORY tests
455+
)
456+
set_tests_properties(bad_download_tile_${BAD_ADD_CONFIG}_${SOCKET_TYPE}_${STORAGE_BACKEND} PROPERTIES
457+
FIXTURES_REQUIRED services_started_${STORAGE_BACKEND}
458+
)
459+
endforeach()
424460
endforeach()
425461

426462
foreach(MAP_NAME IN LISTS MAP_NAMES)
@@ -543,8 +579,6 @@ foreach(STORAGE_BACKEND_INDEX RANGE ${STORAGE_BACKENDS_LENGTH})
543579
(echo '${TILE_JPG_SHA256SUM} tile.jpg.${STORAGE_BACKEND}.1' | ${SHA256SUM_EXECUTABLE} -c) && \
544580
(echo '${TILE_PNG256_SHA256SUM} tile.png256.${STORAGE_BACKEND}.0' | ${SHA256SUM_EXECUTABLE} -c) && \
545581
(echo '${TILE_PNG256_SHA256SUM} tile.png256.${STORAGE_BACKEND}.1' | ${SHA256SUM_EXECUTABLE} -c) && \
546-
(echo '${TILE_PNG256_SHA256SUM} tile.parameterization.${STORAGE_BACKEND}.0' | ${SHA256SUM_EXECUTABLE} -c) && \
547-
(echo '${TILE_PNG256_SHA256SUM} tile.parameterization.${STORAGE_BACKEND}.1' | ${SHA256SUM_EXECUTABLE} -c) && \
548582
(echo '${TILE_PNG32_SHA256SUM} tile.png32.${STORAGE_BACKEND}.0' | ${SHA256SUM_EXECUTABLE} -c) && \
549583
(echo '${TILE_PNG32_SHA256SUM} tile.png32.${STORAGE_BACKEND}.1' | ${SHA256SUM_EXECUTABLE} -c) && \
550584
( \
@@ -632,7 +666,7 @@ foreach(STORAGE_BACKEND_INDEX RANGE ${STORAGE_BACKENDS_LENGTH})
632666
REQUIRED_FILES "${TEST_LOGS_DIR};${TEST_RUN_DIR};${TEST_TILES_DIR}"
633667
)
634668

635-
if(STORAGE_BACKEND STREQUAL "file")
669+
if(STORAGE_BACKEND STREQUAL file)
636670
set(TILE_URL_PATH "/tiles/${DEFAULT_MAP_NAME}/en,de,_/${TILE_ZXY}.png")
637671
set(HTTPD0_URL "http://${HTTPD0_HOST}:${HTTPD0_PORT}${TILE_URL_PATH}")
638672
set(HTTPD1_URL "http://${HTTPD1_HOST}:${HTTPD1_PORT}${TILE_URL_PATH}")
@@ -656,6 +690,17 @@ foreach(STORAGE_BACKEND_INDEX RANGE ${STORAGE_BACKENDS_LENGTH})
656690
FIXTURES_SETUP tiles_downloaded_${STORAGE_BACKEND}
657691
TIMEOUT 10
658692
)
693+
add_test(
694+
NAME check_tiles_parameterization_${STORAGE_BACKEND}
695+
COMMAND ${BASH} -c "
696+
(echo '${TILE_PNG256_SHA256SUM} ${TILE_FILE_NAME}.0' | ${SHA256SUM_EXECUTABLE} -c) && \
697+
(echo '${TILE_PNG256_SHA256SUM} ${TILE_FILE_NAME}.1' | ${SHA256SUM_EXECUTABLE} -c)
698+
"
699+
WORKING_DIRECTORY tests
700+
)
701+
set_tests_properties(check_tiles_parameterization_${STORAGE_BACKEND} PROPERTIES
702+
FIXTURES_REQUIRED tiles_downloaded_${STORAGE_BACKEND}
703+
)
659704
add_test(
660705
NAME remove_tile_parameterization_${STORAGE_BACKEND}
661706
COMMAND ${RM} -v ${TILE_FILE_NAME}.0 ${TILE_FILE_NAME}.1
@@ -698,3 +743,52 @@ foreach(STORAGE_BACKEND_INDEX RANGE ${STORAGE_BACKENDS_LENGTH})
698743
)
699744
endif()
700745
endforeach()
746+
747+
# Test mal-formed HTTPD configuration directives
748+
set(DIRECTIVES
749+
# "AddTileConfig"
750+
# "AddTileConfig /bad/"
751+
"LoadTileConfigFile"
752+
"LoadTileConfigFile /tmp/bad/file/name"
753+
)
754+
set(DIRECTIVE_ERRORS
755+
# "AddTileConfig error, URL path not defined"
756+
# "AddTileConfig error, name of renderd config not defined"
757+
"LoadTileConfigFile takes one argument, load an entire renderd config file"
758+
"Unable to open config file"
759+
)
760+
list(LENGTH DIRECTIVES DIRECTIVES_LENGTH)
761+
math(EXPR DIRECTIVES_LENGTH "${DIRECTIVES_LENGTH} - 1")
762+
763+
foreach(DIRECTIVE_INDEX RANGE ${DIRECTIVES_LENGTH})
764+
set(HTTPD_CONF "${TESTS_CONF_DIR}/httpd_bad_${DIRECTIVE_INDEX}.conf")
765+
# Get DIRECTIVE from DIRECTIVES list
766+
list(GET DIRECTIVES ${DIRECTIVE_INDEX} DIRECTIVE)
767+
# Get DIRECTIVE_ERROR from DIRECTIVE_ERRORS list
768+
list(GET DIRECTIVE_ERRORS ${DIRECTIVE_INDEX} DIRECTIVE_ERROR)
769+
770+
# Generate httpd.conf filelogs
771+
configure_file(
772+
httpd.conf.in
773+
${HTTPD_CONF}
774+
)
775+
776+
add_test(
777+
NAME bad_httpd_config_${DIRECTIVE_INDEX}
778+
COMMAND ${BASH} -c "
779+
echo \"${DIRECTIVE}\" >> ${HTTPD_CONF}
780+
HTTPD_OUTPUT=$(${HTTPD_EXECUTABLE} -e debug -f ${HTTPD_CONF} -t 2>&1)
781+
if [ \"\${?}\" -eq \"0\" ]; then
782+
echo \"Unexpected success.\"
783+
exit 1;
784+
fi
785+
if echo \"\${HTTPD_OUTPUT}\" | ${GREP_EXECUTABLE} -q \"${DIRECTIVE_ERROR}\"; then
786+
exit 0;
787+
else
788+
echo \"\${HTTPD_OUTPUT}\"
789+
exit 1;
790+
fi
791+
"
792+
WORKING_DIRECTORY tests
793+
)
794+
endforeach()

tests/renderd.conf.in

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# Test comment 1
2+
; Test comment 2
13
[mapnik]
24
font_dir=@MAPNIK_FONTS_DIR@
35
font_dir_recurse=@MAPNIK_FONTS_DIR_RECURSE@

0 commit comments

Comments
 (0)