mirror of
https://github.com/openstreetmap/mod_tile.git
synced 2025-08-05 18:51:43 +00:00
Build mod_tile with cmake
This commit is contained in:

committed by
ǝɹʇʇɐʃǝ◖ xıʃǝɟ

parent
6c8a1d9aec
commit
f4ee376b35
220
tests/CMakeLists.txt
Normal file
220
tests/CMakeLists.txt
Normal file
@ -0,0 +1,220 @@
|
||||
#-----------------------------------------------------------------------------
|
||||
#
|
||||
# CMake Config
|
||||
#
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
#
|
||||
# Find external dependencies
|
||||
#
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
include(Dart)
|
||||
|
||||
execute_process(COMMAND ${APXS_EXECUTABLE} -q progname
|
||||
OUTPUT_VARIABLE APXS_PROGNAME
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
find_package(UnixCommands REQUIRED)
|
||||
find_program(CAT_EXECUTABLE NAMES cat REQUIRED)
|
||||
find_program(CURL_EXECUTABLE NAMES curl REQUIRED)
|
||||
find_program(HTTPD_EXECUTABLE NAMES ${APXS_PROGNAME} REQUIRED)
|
||||
find_program(ID_EXECUTABLE NAMES id REQUIRED)
|
||||
find_program(KILL_EXECUTABLE NAMES kill REQUIRED)
|
||||
find_program(MAPNIK_CONFIG_EXECUTABLE NAMES mapnik-config REQUIRED)
|
||||
find_program(MKDIR_EXECUTABLE NAMES mkdir REQUIRED)
|
||||
find_program(SHA256SUM_EXECUTABLE NAMES gsha256sum sha256sum REQUIRED)
|
||||
|
||||
execute_process(COMMAND ${MAPNIK_CONFIG_EXECUTABLE} --fonts
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
OUTPUT_VARIABLE MAPNIK_FONTS_DIR
|
||||
)
|
||||
|
||||
execute_process(COMMAND ${MAPNIK_CONFIG_EXECUTABLE} --input-plugins
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
OUTPUT_VARIABLE MAPNIK_INPUT_DIR
|
||||
)
|
||||
|
||||
execute_process(COMMAND ${ID_EXECUTABLE} -gn nobody
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
OUTPUT_VARIABLE NOGROUP_NAME
|
||||
)
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
#
|
||||
# Test configurations
|
||||
#
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
set(MAP_NAME "default")
|
||||
set(TILE_SHA256SUM "dbf26531286e844a3a9735cdd193598dca78d22f77cafe5824bcaf17f88cbb08")
|
||||
set(TILE_URL "http://localhost:8081/tiles/renderd-example/9/297/191.png")
|
||||
set(TILE_CMD "${CURL_EXECUTABLE} --fail --silent ${TILE_URL}")
|
||||
|
||||
configure_file(
|
||||
renderd.conf.in
|
||||
conf/renderd.conf
|
||||
)
|
||||
|
||||
configure_file(
|
||||
httpd.conf.in
|
||||
conf/httpd.conf
|
||||
)
|
||||
|
||||
configure_file(
|
||||
../utils/example-map/index.html
|
||||
www/index.html
|
||||
COPYONLY
|
||||
)
|
||||
|
||||
configure_file(
|
||||
../utils/example-map/mapnik.xml
|
||||
www/mapnik.xml
|
||||
COPYONLY
|
||||
)
|
||||
|
||||
configure_file(
|
||||
../utils/example-map/very_simplified_land_polygons.gpkg
|
||||
www/very_simplified_land_polygons.gpkg
|
||||
COPYONLY
|
||||
)
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
#
|
||||
# Tests
|
||||
#
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
add_test(
|
||||
NAME gen_tile_test
|
||||
COMMAND gen_tile_test
|
||||
WORKING_DIRECTORY src
|
||||
)
|
||||
add_test(
|
||||
NAME create_dirs
|
||||
COMMAND ${MKDIR_EXECUTABLE} -p -v logs run tiles
|
||||
)
|
||||
add_test(
|
||||
NAME start_renderd
|
||||
COMMAND ${BASH} -c "
|
||||
echo '${PROJECT_BINARY_DIR}/src/renderd --config ${PROJECT_BINARY_DIR}/tests/conf/renderd.conf --foreground > ${PROJECT_BINARY_DIR}/tests/logs/renderd.log 2>&1 &' > ${PROJECT_BINARY_DIR}/tests/renderd_start.sh
|
||||
echo 'printf \${!} > ${PROJECT_BINARY_DIR}/tests/run/renderd.pid' >> ${PROJECT_BINARY_DIR}/tests/renderd_start.sh
|
||||
echo 'exit 0' >> ${PROJECT_BINARY_DIR}/tests/renderd_start.sh
|
||||
${BASH} ${PROJECT_BINARY_DIR}/tests/renderd_start.sh
|
||||
"
|
||||
)
|
||||
add_test(
|
||||
NAME start_httpd
|
||||
COMMAND ${HTTPD_EXECUTABLE} -e debug -f ${PROJECT_BINARY_DIR}/tests/conf/httpd.conf -k start
|
||||
)
|
||||
add_test(
|
||||
NAME render_speedtest
|
||||
COMMAND render_speedtest --map ${MAP_NAME} --max-zoom 10 --socket ${PROJECT_BINARY_DIR}/tests/run/renderd.sock
|
||||
)
|
||||
add_test(
|
||||
NAME download_tile
|
||||
COMMAND ${BASH} -c "
|
||||
until $(${TILE_CMD} --output tile.png); do
|
||||
echo 'Sleeping 1s';
|
||||
sleep 1;
|
||||
done
|
||||
"
|
||||
)
|
||||
add_test(
|
||||
NAME check_tile
|
||||
COMMAND ${BASH} -c "
|
||||
echo '${TILE_SHA256SUM} tile.png' | ${SHA256SUM_EXECUTABLE} -c
|
||||
"
|
||||
)
|
||||
add_test(
|
||||
NAME dirty_tile
|
||||
COMMAND ${BASH} -c "
|
||||
TILE_STATUS_CMD=\"${TILE_CMD}/status | cut -d. -f2\"
|
||||
TILE_STATUS_OUTPUT_OLD=$(\${TILE_STATUS_CMD})
|
||||
sleep 5;
|
||||
TILE_DIRTY_OUTPUT=$(${TILE_CMD}/dirty)
|
||||
if [ \"\${TILE_DIRTY_OUTPUT}\" != \"Tile submitted for rendering\" ]; then
|
||||
exit 1;
|
||||
fi
|
||||
until [ \"\${TILE_STATUS_OUTPUT_OLD}\" != \"$(\${TILE_STATUS_CMD})\" ]; do
|
||||
echo 'Sleeping 1s';
|
||||
sleep 1;
|
||||
done
|
||||
"
|
||||
)
|
||||
add_test(
|
||||
NAME remove_tile
|
||||
COMMAND ${RM} -v tile.png
|
||||
)
|
||||
add_test(
|
||||
NAME stop_renderd
|
||||
COMMAND ${BASH} -c "
|
||||
${KILL_EXECUTABLE} $(${CAT_EXECUTABLE} run/renderd.pid) && ${RM} run/renderd.pid
|
||||
"
|
||||
)
|
||||
add_test(
|
||||
NAME stop_httpd
|
||||
COMMAND ${BASH} -c "
|
||||
${KILL_EXECUTABLE} $(${CAT_EXECUTABLE} run/httpd.pid) && ${RM} run/httpd.pid
|
||||
"
|
||||
)
|
||||
add_test(
|
||||
NAME clear_dirs
|
||||
COMMAND ${BASH} -c "
|
||||
${RM} -f -r -v logs/* run/* tiles/*
|
||||
"
|
||||
)
|
||||
|
||||
|
||||
set_tests_properties(create_dirs PROPERTIES
|
||||
FIXTURES_SETUP httpd_started
|
||||
)
|
||||
set_tests_properties(start_renderd PROPERTIES
|
||||
DEPENDS create_dirs
|
||||
FIXTURES_SETUP httpd_started
|
||||
)
|
||||
set_tests_properties(start_httpd PROPERTIES
|
||||
DEPENDS create_dirs
|
||||
FIXTURES_SETUP httpd_started
|
||||
)
|
||||
set_tests_properties(stop_renderd PROPERTIES
|
||||
FIXTURES_CLEANUP httpd_started
|
||||
REQUIRED_FILES run/renderd.pid
|
||||
)
|
||||
set_tests_properties(stop_httpd PROPERTIES
|
||||
FIXTURES_CLEANUP httpd_started
|
||||
REQUIRED_FILES run/httpd.pid
|
||||
)
|
||||
set_tests_properties(clear_dirs PROPERTIES
|
||||
DEPENDS "stop_renderd;stop_httpd"
|
||||
FIXTURES_CLEANUP httpd_started
|
||||
REQUIRED_FILES "logs;run;tiles"
|
||||
)
|
||||
|
||||
set_tests_properties(render_speedtest PROPERTIES
|
||||
FIXTURES_REQUIRED httpd_started
|
||||
TIMEOUT 60
|
||||
)
|
||||
set_tests_properties(download_tile PROPERTIES
|
||||
FIXTURES_REQUIRED httpd_started
|
||||
FIXTURES_SETUP tile_downloaded
|
||||
TIMEOUT 10
|
||||
)
|
||||
set_tests_properties(check_tile PROPERTIES
|
||||
DEPENDS download_tile
|
||||
FIXTURES_REQUIRED "httpd_started;tile_downloaded"
|
||||
REQUIRED_FILES tile.png
|
||||
)
|
||||
set_tests_properties(dirty_tile PROPERTIES
|
||||
DEPENDS download_tile
|
||||
FIXTURES_REQUIRED "httpd_started;tile_downloaded"
|
||||
REQUIRED_FILES tile.png
|
||||
TIMEOUT 20
|
||||
)
|
||||
set_tests_properties(remove_tile PROPERTIES
|
||||
DEPENDS download_tile
|
||||
FIXTURES_CLEANUP tile_downloaded
|
||||
REQUIRED_FILES tile.png
|
||||
)
|
69
tests/httpd.conf.in
Normal file
69
tests/httpd.conf.in
Normal file
@ -0,0 +1,69 @@
|
||||
Alias /renderd-example-map @PROJECT_BINARY_DIR@/tests/www
|
||||
Redirect /renderd-example-map/leaflet/leaflet.css https://unpkg.com/leaflet/dist/leaflet.css
|
||||
Redirect /renderd-example-map/leaflet/leaflet.min.js https://unpkg.com/leaflet/dist/leaflet.js
|
||||
|
||||
<Directory @PROJECT_BINARY_DIR@/tests/www>
|
||||
Allow from all
|
||||
AllowOverride All
|
||||
DirectoryIndex index.html
|
||||
Options +FollowSymLinks
|
||||
Order Allow,Deny
|
||||
</Directory>
|
||||
|
||||
<IfModule !tile_module>
|
||||
LoadModule tile_module @PROJECT_BINARY_DIR@/src/mod_tile.so
|
||||
</IfModule>
|
||||
|
||||
<VirtualHost *:8081>
|
||||
LoadTileConfigFile @PROJECT_BINARY_DIR@/tests/conf/renderd.conf
|
||||
ModTileBulkMode Off
|
||||
ModTileCacheDurationDirty 900
|
||||
ModTileCacheDurationLowZoom 9 518400
|
||||
ModTileCacheDurationMax 604800
|
||||
ModTileCacheDurationMediumZoom 13 86400
|
||||
ModTileCacheDurationMinimum 10800
|
||||
ModTileCacheLastModifiedFactor 0.20
|
||||
ModTileEnableStats On
|
||||
ModTileEnableTileThrottling Off
|
||||
ModTileEnableTileThrottlingXForward 0
|
||||
ModTileMaxLoadMissing 5
|
||||
ModTileMaxLoadOld 2
|
||||
ModTileMissingRequestTimeout 10
|
||||
ModTileRenderdSocketName @PROJECT_BINARY_DIR@/tests/run/renderd.sock
|
||||
ModTileRequestTimeout 3
|
||||
ModTileThrottlingRenders 128 0.2
|
||||
ModTileThrottlingTiles 10000 1
|
||||
ModTileTileDir @PROJECT_BINARY_DIR@/tests/tiles
|
||||
</VirtualHost>
|
||||
|
||||
CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b"
|
||||
ErrorLog logs/error_log
|
||||
Group @NOGROUP_NAME@
|
||||
Listen 8081
|
||||
LogLevel debug
|
||||
PidFile run/httpd.pid
|
||||
ServerName localhost
|
||||
ServerRoot @PROJECT_BINARY_DIR@/tests
|
||||
User nobody
|
||||
|
||||
<IfModule !access_compat_module>
|
||||
LoadModule access_compat_module @HTTPD_MODULES_DIR@/mod_access_compat.so
|
||||
</IfModule>
|
||||
<IfModule !alias_module>
|
||||
LoadModule alias_module @HTTPD_MODULES_DIR@/mod_alias.so
|
||||
</IfModule>
|
||||
<IfModule !authz_core_module>
|
||||
LoadModule authz_core_module @HTTPD_MODULES_DIR@/mod_authz_core.so
|
||||
</IfModule>
|
||||
<IfModule !dir_module>
|
||||
LoadModule dir_module @HTTPD_MODULES_DIR@/mod_dir.so
|
||||
</IfModule>
|
||||
<IfModule !log_config_module>
|
||||
LoadModule log_config_module @HTTPD_MODULES_DIR@/mod_log_config.so
|
||||
</IfModule>
|
||||
<IfModule !mpm_event_module>
|
||||
LoadModule mpm_event_module @HTTPD_MODULES_DIR@/mod_mpm_event.so
|
||||
</IfModule>
|
||||
<IfModule !unixd_module>
|
||||
LoadModule unixd_module @HTTPD_MODULES_DIR@/mod_unixd.so
|
||||
</IfModule>
|
15
tests/renderd.conf.in
Normal file
15
tests/renderd.conf.in
Normal file
@ -0,0 +1,15 @@
|
||||
[renderd]
|
||||
pid_file=@PROJECT_BINARY_DIR@/tests/run/renderd.pid
|
||||
socketname=@PROJECT_BINARY_DIR@/tests/run/renderd.sock
|
||||
stats_file=@PROJECT_BINARY_DIR@/tests/run/renderd.stats
|
||||
tile_dir=@PROJECT_BINARY_DIR@/tests/tiles
|
||||
|
||||
[mapnik]
|
||||
font_dir_recurse=true
|
||||
font_dir=@MAPNIK_FONTS_DIR@
|
||||
plugins_dir=@MAPNIK_INPUT_DIR@
|
||||
|
||||
[@MAP_NAME@]
|
||||
TILEDIR=@PROJECT_BINARY_DIR@/tests/tiles
|
||||
URI=/tiles/renderd-example
|
||||
XML=@PROJECT_BINARY_DIR@/tests/www/mapnik.xml
|
Reference in New Issue
Block a user