* Add tests for `ModTileCacheExtendedHostName` and expired tileOld/TileVeryOld
* Add tests for `ModTileEnableTileThrottling`/`ModTileEnableTileThrottlingXForward`
* Improve service startup "tests"
* Address intermittent download test failure
* Caused by load exceeding threshold
* Add more missing bad HTTPD config tests
* Allow for newer `libpng` with Docker tests
* Also test more image/file types
And setting it to `0`, no longer requiring defining it everywhere except in foreground executables as needed.
_Also_:
* Require `GLib` >= `v2.50`
* Needed for [g_log_writer_standard_streams](https://docs.gtk.org/glib/func.log_writer_standard_streams.html)
* Set FreeBSD job `BUILD_PARALLEL_LEVEL` & `TEST_PARALLEL_LEVEL` environment variables via `run`
* Rather than hard-coding them
_Also_:
* Added checks for `min` & `max` `x`, `y` & `z` tile coordinate options in order to:
* Ensure they are integers
* Ensure they are positive
Resolves#387
* Report coverage for almost all jobs
* Some jobs fail and are omitted
* Add more tests to `gen_tile_test.cpp`
* Also lightly cleaned up formatting
* Clean up cmake/* files
* So they don't report an empty version
* Remove commented `check_*` lines from `CMakeLists.txt` file
* These were left over from the initial CMake support implementation
* `includes/config.h.in`
* Wrap contents in `#ifndef CONFIG_H`
* `includes/mod_tile.h`
* Include `protocol.h`
* For `XMLCONFIG_MAX`
* Include `apr_tables.h`
* For `apr_array_header_t`/`apr_time_t`/`apr_uint64_t`
* Include `netinet/in.h`
* For `in6_addr`/`in_addr_t`
* `src/cache_expire.c`
* Include `netinet/in.h`
* For `htonl`/`htons`
* `src/gen_tile.cpp`
* Use `snprintf` instead of `sprintf`
* To resolve `warning: 'sprintf' is deprecated` in [`macOS` builds](https://github.com/openstreetmap/mod_tile/actions/runs/7590268635/job/20677236621#step:5:579)
* `src/gen_tile_test.cpp`
* Use `snprintf` instead of `sprintf`
* To resolve `warning: 'sprintf' is deprecated` in [`macOS` builds](https://github.com/openstreetmap/mod_tile/actions/runs/7590268635/job/20677236621#step:5:579)
* `src/mod_tile.c`
* Use `snprintf` instead of `sprintf`
* To resolve `warning: 'sprintf' is deprecated` in [`macOS` builds](https://github.com/openstreetmap/mod_tile/actions/runs/7590268635/job/20677236621#step:5:579)
* Cast `os_thread` to `(unsigned long)` in `ap_log_rerror` calls format
* To resolve `warning: format specifies type 'long' but the argument has type 'apr_os_thread_t'`
* `os_thread` is an alias of `unsigned long`
* Use `"%" APR_OFF_T_FMT`/`APR_UINT64_T_FMT "..."` to resolve warnings under `macOS`
* To resolve `warning: format specifies type 'long' but the argument has type 'off_t'`
* The format/type for `apr_off_t` varies under `macOS`
* See [here](8e68a77f61/include/apr.h.in (L610-L645))
* And resolve `warning: format specifies type 'long' but the argument has type 'apr_uint64_t'`
* The format/type for `apr_uint64_t` varies under `macOS`
* See [here](8e68a77f61/include/apr.h.in (L610-L645))
* Divide by `2.0` rather than `2`
* To resolve `possible loss of precision` warning
* Use `%li` rather than `"%" APR_TIME_T_FMT` as format for `maxAge`
* It is defined as a `long int`
* `src/render_submit_queue.c`
* Include `string.h`/`strings.h`
* To resolve `warning: call to undeclared library function 'bzero'`
* To resolve `warning: call to undeclared library function 'strncpy'`
* To resolve `warning: call to undeclared library function 'strdup'`
* To resolve `warning: call to undeclared library function 'strerror'`
* To resolve `warning: call to undeclared library function 'strchr'`
* To resolve `warning: call to undeclared library function 'strlen'`
* To resolve `warning: call to undeclared library function 'memset'`
* Cast `performance_stats.stat[i].noRendered` to `(float)`
* To resolve `possible loss of precision` warning
* `src/renderd.c`
* Use `snprintf` instead of `sprintf`
* To resolve `warning: 'sprintf' is deprecated` in [`macOS` builds](https://github.com/openstreetmap/mod_tile/actions/runs/7590268635/job/20677236621#step:5:579)
* Change `const char` to `char` for `ini_fileExtension`, `ini_mimeType`, `ini_outputFormat`
* To resolve `warning: format specifies type 'char *' but the argument has type 'const char *'`
* `src/request_queue.c`
* Add `default case` to `switch` statements
* To resolve:
* `warning: enumeration values 'queueRender' and 'queueDuplicate' not handled in switch`
* `warning: enumeration values 'cmdIgnore', 'cmdDone', and 'cmdNotDone' not handled in switch`
* `src/store_file.c`
* Cast `pthread_self()` to `(unsigned long)`
* To resolve `warning: format specifies type 'unsigned long' but the argument has type 'pthread_t'`
* No longer need `CFLAGS=-Wno-implicit-function-declaration`
* Run tests in parallel in some `GitHub Actions` Workflows
* Except for `macOS` & `Coverage` jobs
* Update `Node.js 16` actions to `Node.js 20` versions
* `actions/upload-artifact`
* `actions/cache`
* Add server `IP:Port` in `CTest` HTTPD logs
* Make `render_speedtest_*` CTest tests require tiles to be downloaded
* Add & use tile download functions for CTest
* Including `check` & `remove` "tests"
* To remove much of the redundant code
* Split up HTTPD0/HTTPD1 downloads in CTest
* Remove Amazon Linux 2/CentOS 7 from CI workflow
* Comment out fedora:rawhide, it's not currently working
* Re-enable CentOS Stream tests
* To facilitate running `memcached` tests for all jobs
* `CentOS`/`Debian`/`Fedora` jobs don't seem to like running `memcached` on `localhost`
* `FreeBSD` jobs don't seem to like running `memcached` on `0.0.0.0`
_Also_:
- Changed `AddTileConfig` parsing directive
- From `AP_INIT_RAW_ARGS` to `AP_INIT_TAKE_ARGV`
- Makes code a bit cleaner, e.g.:
- Checking for first two "arguments"
- Iterating "arguments"
- Applied Artistic Style Formatting
- After merging #346
- Added deprecation notice when using `AddTileMimeConfig`
- Enabled commented `AddTileConfig`/`AddTileMimeConfig` tests
_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
So that MemcacheD hosts and ports other than `localhost` and `11211` can be used.
_Also_:
- Added `ctest --parallel` execution support
- Added tests for custom `MemcacheD` {host}:{port}
- Added tests for `AddTileConfig`/`AddTileMimeConfig`
AddTileConfig is a shorthand way of adding tile configs without a renderd.conf; if you use mod_tile with tirex, then you will typically not have a renderd.conf and hence rely on AddTileConfig.
AddTileConfig lacks the richness of renderd.conf configuration; you cannot, for example, configure differing max_zooms or file extensions or mime types.
To partly fix this problem, AddTileMimeConfig was introduced which takes one extra argument - misleadingly, not the MIME type, but the file extension, as a third parameter.
This approach is not scalable and difficult to use because of the positional parameters.
This pull request introduces optional key-value pairs for the AddTileConfig directive. You can now write
AddTileConfig /tile tile mimetype=image/jpeg extension=jpg maxzoom=22
to configure your tile layer. Currently, "mimetype", "maxzoom", "minzoom", and "extension" are supported.
This is totally backwards compatible, as old-style AddTileConfig directives will still work like they did before.
The AddTileMimeConfig directive still works but it could be deprecated in favour of this new AddTileConfig syntax.
Co-authored-by: Frederik Ramm <ramm@geofabrik.de>
By taking advantage of `YAML anchors`: https://docs.docker.com/compose/compose-file/10-fragments/
_Also_:
- Added `full` service to `docker/docker-compose.yml` (including real osm data and openstreetmap carto)
- Under `ubuntu-devel-full`
- I.E. (`cd docker && docker compose up ubuntu-devel-full`)
- In order to more fully test
`renderd` coverage is otherwise not properly reported
_Also:_
- Removed `freebsd12` from CI
- Packages are no longer provided (http://pkg.freebsd.org/)
- Added test for `HTCP host name` specification
- Renamed files in `src`/`includes` to match target names
- `src/daemon.c` → `src/renderd.c`
- `src/speedtest.cpp` →`src/render_speedtest.cpp`
- `includes/daemon.h` → `includes/renderd.h`
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
* Allow the …/status URL to be turned on or off (default of on remains)
Add ModTileEnableStatusURL On/Off to allow the …/status to be turned on
(default) or off. Previous behaviour has …/status on, which is not
changed in this patch.
* Allow the …/dirty URL to be turned on or off (default of on remains)
Add ModTileEnableDirtyURL On/Off to allow the …/dirty to be turned on
(default) or off. Previous behaviour has …/dirty on, which is not
changed in this patch.
* Make …/dirty & …/status disabled by default.
This is a breaking change. To get the old default behaviour back, you
must now manually add `ModTileEnableStatusURL On` &
`ModTileEnableDirtyURL On` to your apache configuration.
* Change default for ModTileEnable Dirty/Status URL to On
* Add log output for when `/dirty`/`/status` is Off
* Add tests for "ModTileEnable{Dirty|Status}URL Off"
---------
Co-authored-by: Amanda McCann <amanda@technomancy.org>
In order to ensure that the instructions contained within `README.rst` also work when installing `mod_tile` packages from `Debian`/`Ubuntu` repositories, I have added a basic test which first installs those packages and then executes the same commands from the aforementioned instructions.
Here is an example of a workflow run:
https://github.com/hummeltech/mod_tile/actions/runs/5638547864
**Also:**
* Add additional image format types into example configuration instructions in `README.rst`
* Which are already referenced in [utils/example-map/index.html](https://github.com/openstreetmap/mod_tile/blob/master/utils/example-map/index.html#L28-L39)
* Add step in `README.rst` to ensure `/var/run/renderd` exists
Currently failing:
```
/__e/node20/bin/node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by /__e/node20/bin/node)
/__e/node20/bin/node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /__e/node20/bin/node)
/__e/node20/bin/node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /__e/node20/bin/node)
/__e/node20/bin/node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /__e/node20/bin/node)
/__e/node20/bin/node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by /__e/node20/bin/node)
/__e/node20/bin/node: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by /__e/node20/bin/node)
```
For linting `CMakeLists.txt` & `*.cmake` files (`cmakelint`) as well as various other formats such as `HTML`, `MarkDown` & `YAML` (`prettier`.)
### Also:
* Upgrade `actions/checkout` from `v3` to `v4`
* Output coverage summary to GitHub Job step summary
* Minor build docs cleanup for `CentOS` & `FreeBSD`