Skip to content

Commit 5c8b545

Browse files
authored
Merge pull request #60 from PDOK/mapserver_8.0.x_upgrade_regressiontest
Add regression test action; add test data
2 parents 8929e13 + a1c9477 commit 5c8b545

File tree

18 files changed

+363
-1
lines changed

18 files changed

+363
-1
lines changed
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
---
2+
name: regression-test
3+
on:
4+
pull_request:
5+
jobs:
6+
test-regression:
7+
runs-on: ubuntu-latest
8+
steps:
9+
- uses: actions/checkout@v4
10+
11+
# build local test image
12+
- name: Set up Docker Buildx
13+
uses: docker/setup-buildx-action@v3
14+
with:
15+
driver: docker
16+
- name: Build test image
17+
uses: docker/build-push-action@v5
18+
with:
19+
push: false
20+
tags: pdok/mapserver:local
21+
- name: Build test image (NL target)
22+
uses: docker/build-push-action@v5
23+
with:
24+
push: false
25+
target: NL
26+
tags: pdok/mapserver:local-nl
27+
28+
- name: Regression test => rectObj wrong projection (WMS)
29+
run: |
30+
# start WMS mapserver
31+
docker run -e MAPSERVER_CONFIG_FILE=/srv/data/rectobj.conf -e MS_MAPFILE=/srv/data/rectobj.map -e SERVICE_TYPE=WMS --rm -d \
32+
-p 8181:80 --name mapserver-rectobj-wms -v `pwd`/testdata/rectobj:/srv/data pdok/mapserver:local
33+
34+
# execute request
35+
mkdir -p `pwd`/testdata/rectobj/actual
36+
curl "http://localhost:8181/mapserver?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&BBOX=545287.2873572960962,6867556.049125162885,545689.3385149866808,6868025.580225903541&CRS=EPSG:3857&WIDTH=995&HEIGHT=1162&LAYERS=pand&STYLES=&FORMAT=image/png&TRANSPARENT=TRUE" -sLo `pwd`/testdata/rectobj/actual/rectobj.png
37+
38+
# assert results are as expected
39+
exit_code=0
40+
41+
# diff WMS png files, if binary diff exists, check for 'perceptual diff' using compiled binary of https://github.com/myint/perceptualdiff
42+
wms_diff=$(diff -q `pwd`/testdata/rectobj/expected/wms.png `pwd`/testdata/rectobj/actual/rectobj.png)
43+
if [ -n "$wms_diff" ]
44+
then
45+
echo "binary diff between images, checking for perceptual diff"
46+
wms_pdiff=$(`pwd`/testdata/perceptualdiff `pwd`/testdata/rectobj/expected/wms.png `pwd`/testdata/rectobj/actual/rectobj.png)
47+
if [ -n "$wms_pdiff" ]
48+
then
49+
echo "$wms_pdiff"
50+
exit_code=1
51+
fi
52+
fi
53+
54+
# cleanup
55+
rm -rf `pwd`/testdata/rectobj/actual
56+
57+
# stop mapserver
58+
docker stop mapserver-rectobj-wms
59+
60+
exit $exit_code
61+
62+
- name: Regression test => rectObj wrong projection (WFS)
63+
run: |
64+
# start WFS mapserver
65+
docker run -e MAPSERVER_CONFIG_FILE=/srv/data/rectobj.conf -e MS_MAPFILE=/srv/data/rectobj.map -e SERVICE_TYPE=WFS --rm -d \
66+
-p 8182:80 --name mapserver-rectobj-wfs -v `pwd`/testdata/rectobj:/srv/data pdok/mapserver:local
67+
68+
# execute request
69+
mkdir -p `pwd`/testdata/rectobj/actual
70+
curl "http://localhost:8182/mapserver?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=bag:pand&STARTINDEX=0&COUNT=1000&SRSNAME=urn:ogc:def:crs:EPSG::3857&BBOX=545287.2873572960962,6867556.049125162885,545689.3385149866808,6868025.580225903541,urn:ogc:def:crs:EPSG::3857" -sLo `pwd`/testdata/rectobj/actual/rectobj.xml
71+
72+
# assert results are as expected
73+
exit_code=0
74+
75+
# diff WFS xml files, ignore timestamp but match numberMatched and numberReturned
76+
wfs_diff=$(diff -q `pwd`/testdata/rectobj/expected/wfs.xml `pwd`/testdata/rectobj/actual/rectobj.xml -I 'timeStamp="[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}T[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}"\snumberMatched="5"\snumberReturned="5"')
77+
if [ -n "$wfs_diff" ]
78+
then
79+
echo "$wfs_diff"
80+
exit_code=1
81+
fi
82+
83+
# cleanup
84+
rm -rf `pwd`/testdata/rectobj/actual
85+
86+
# stop mapserver
87+
docker stop mapserver-rectobj-wfs
88+
89+
exit $exit_code
90+
91+
- name: Regression test => RDNAPTRANS (RD->ETRS89)
92+
run: |
93+
# start mapserver
94+
docker run --rm -d -p 8181:80 --name mapserver-rdnap-wfs -v `pwd`/testdata/ETRS89andRDNAP:/srv/data -e MAPSERVER_CONFIG_FILE=/srv/data/rd.conf -e SERVICE_TYPE=wfs -e MS_MAPFILE=/srv/data/rd.map pdok/mapserver:local
95+
96+
# execute request
97+
mkdir -p `pwd`/testdata/ETRS89andRDNAP/actual
98+
curl "http://localhost:8181/mapserver?service=WFS&version=2.0.0&request=GetFeature&typeName=rd&outputFormat=geojson&srsName=EPSG:4258" -sL | \
99+
jq --arg crs "etrs89" '.features | .[] | { id, x_dev: (.geometry.coordinates[0] - (.properties[$crs+"_x"]|tonumber)), y_dev: (.geometry.coordinates[1] - (.properties[$crs+"_y"]|tonumber)) } | {error: ((.x_dev|fabs) > 0.001 or (.y_dev|fabs) > 0.001 )} + .' | \
100+
jq -s 'group_by (.error)[] | {error: .[0].error, count: length}' > `pwd`/testdata/ETRS89andRDNAP/actual/etrs89.json
101+
102+
# assert results are as expected
103+
exit_code=0
104+
results=($(cat `pwd`/testdata/ETRS89andRDNAP/actual/etrs89.json | jq -r '.error'))
105+
for err in "${results[@]}"
106+
do
107+
if [ "$err" == "true" ]
108+
then
109+
echo "found errors in RDNAPTRANS from RD to ETRS89:"
110+
cat `pwd`/testdata/ETRS89andRDNAP/actual/etrs89.json
111+
exit_code=1
112+
fi
113+
done
114+
115+
# cleanup
116+
rm -rf `pwd`/testdata/ETRS89andRDNAP/actual
117+
118+
# stop mapserver
119+
docker stop mapserver-rdnap-wfs
120+
121+
exit $exit_code
122+
123+
- name: Regression test => RDNAPTRANS (ETRS89->RD)
124+
run: |
125+
# start mapserver
126+
docker run --rm -d -p 8181:80 --name mapserver-rdnap-wfs -v `pwd`/testdata/ETRS89andRDNAP:/srv/data -e MAPSERVER_CONFIG_FILE=/srv/data/etrs89.conf -e SERVICE_TYPE=wfs -e MS_MAPFILE=/srv/data/etrs89.map pdok/mapserver:local-nl
127+
128+
# execute request
129+
mkdir -p `pwd`/testdata/ETRS89andRDNAP/actual
130+
curl "http://localhost:8181/mapserver?service=WFS&version=2.0.0&request=GetFeature&typeName=etrs89&outputFormat=geojson&srsName=EPSG:28992" -sL | \
131+
jq --arg crs "rd" '.features | .[] | { id, x_dev: (.geometry.coordinates[0] - (.properties[$crs+"_x"]|tonumber)), y_dev: (.geometry.coordinates[1] - (.properties[$crs+"_y"]|tonumber)) } | {error: ((.x_dev|fabs) > 0.001 or (.y_dev|fabs) > 0.001 )} + .' | \
132+
jq -s 'group_by (.error)[] | {error: .[0].error, count: length}' > `pwd`/testdata/ETRS89andRDNAP/actual/rd.json
133+
134+
# assert results are as expected
135+
exit_code=0
136+
results=($(cat `pwd`/testdata/ETRS89andRDNAP/actual/rd.json | jq -r '.error'))
137+
for err in "${results[@]}"
138+
do
139+
if [ "$err" == "true" ]
140+
then
141+
echo "found errors in RDNAPTRANS from ETRS89 to RD:"
142+
cat `pwd`/testdata/ETRS89andRDNAP/actual/rd.json
143+
exit_code=1
144+
fi
145+
done
146+
147+
# cleanup
148+
rm -rf `pwd`/testdata/ETRS89andRDNAP/actual
149+
150+
# stop mapserver
151+
docker stop mapserver-rdnap-wfs
152+
153+
exit $exit_code

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ RUN mkdir /usr/local/src/mapserver/build && \
137137

138138
#local image lighttpd build from https://github.com/PDOK/lighttpd-docker/tree/PDOK-14748_mapserver_8
139139
# TODO use definitive lighttpd image
140-
FROM pdok/lighttpd:mapserver AS service
140+
FROM pdok/lighttpd:1.4.67-bookworm-rc1 AS service
141141

142142
USER root
143143
LABEL maintainer="PDOK dev <https://github.com/PDOK/mapserver-docker/issues>"
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)