Skip to content

Commit 57d7165

Browse files
Merge pull request #64 from PDOK/jd/more-tests
More WMS tests
2 parents 2e12793 + 014b731 commit 57d7165

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+4459
-15
lines changed

cmd/main.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ import (
2222
"flag"
2323
"os"
2424

25+
"github.com/pdok/mapserver-operator/internal/controller/mapserver"
26+
2527
"github.com/go-logr/zapr"
2628
"github.com/pdok/smooth-operator/pkg/integrations/logging"
2729
"github.com/peterbourgon/ff"
@@ -93,6 +95,7 @@ func main() {
9395
var slackWebhookURL string
9496
var logLevel int
9597
var setUptimeOperatorAnnotations bool
98+
var storageClassName string
9699
flag.StringVar(&metricsAddr, "metrics-bind-address", ":8080", "The address the metrics endpoint binds to. "+
97100
"Use :8443 for HTTPS or :8080 for HTTP, or leave as 0 to disable the metrics service.")
98101
flag.StringVar(&probeAddr, "health-probe-bind-address", ":8081", "The address the probe endpoint binds to.")
@@ -116,6 +119,7 @@ func main() {
116119
flag.StringVar(&slackWebhookURL, "slack-webhook-url", "", "The webhook url for sending slack messages. Disabled if left empty")
117120
flag.IntVar(&logLevel, "log-level", 0, "The zapcore loglevel. 0 = info, 1 = warn, 2 = error")
118121
flag.BoolVar(&setUptimeOperatorAnnotations, "set-uptime-operator-annotations", true, "When enabled IngressRoutes get annotations that are used by the pdok/uptime-operator.")
122+
flag.StringVar(&storageClassName, "storage-class-name", "", "The name of the storage class to use when using an ephemeral volume.")
119123

120124
opts := zap.Options{
121125
Development: true,
@@ -137,9 +141,11 @@ func main() {
137141
setupLog.Error(errors.New("baseURL is required"), "A value for baseURL must be specified.")
138142
os.Exit(1)
139143
}
144+
140145
pdoknlv3.SetHost(host)
141146
mapfilegenerator.SetDebugLevel(mapserverDebugLevel)
142147
controller.SetUptimeOperatorAnnotations(setUptimeOperatorAnnotations)
148+
mapserver.SetStorageClassName(storageClassName)
143149

144150
// if the enable-http2 flag is false (the default), http/2 should be disabled
145151
// due to its vulnerabilities. More specifically, disabling http/2 will

config/manager/manager.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ spec:
6464
- --leader-elect
6565
- --health-probe-bind-address=:8081
6666
- --baseurl=http://localhost:32788
67+
- --storage-class-name=test-storage
6768
image: controller:latest
6869
name: manager
6970
ports: []

internal/controller/mapserver/deployment.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package mapserver
22

33
import (
44
"errors"
5-
"os"
65
"strings"
76

87
pdoknlv3 "github.com/pdok/mapserver-operator/api/v3"
@@ -27,6 +26,12 @@ const (
2726
mimeTextXML = "text/xml"
2827
)
2928

29+
var storageClassName string
30+
31+
func SetStorageClassName(name string) {
32+
storageClassName = name
33+
}
34+
3035
// TODO fix linting (funlen)
3136
//
3237
//nolint:funlen
@@ -46,8 +51,8 @@ func GetVolumesForDeployment[O pdoknlv3.WMSWFS](obj O, configMapNames types.Hash
4651
},
4752
}
4853

49-
if value, set := os.LookupEnv("STORAGE_CLASS_NAME"); set {
50-
baseVolume.Ephemeral.VolumeClaimTemplate.Spec.StorageClassName = &value
54+
if storageClassName != "" {
55+
baseVolume.Ephemeral.VolumeClaimTemplate.Spec.StorageClassName = &storageClassName
5156
}
5257
} else {
5358
baseVolume.VolumeSource = corev1.VolumeSource{

internal/controller/shared_controller_test.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -269,11 +269,13 @@ func testMutates[R Reconciler, O pdoknlv3.WMSWFS](reconcilerFn func() R, resourc
269269
})
270270

271271
It("Should generate a correct MapfileGenerator Configmap", func() {
272-
cm := getBareConfigMap(resource, MapfileGeneratorName)
273-
testMutateConfigMap(cm, outputPath+"configmap-mapfile-generator.yaml", func(cm *corev1.ConfigMap) error {
274-
return mutateConfigMapMapfileGenerator(reconcilerFn(), resource, cm, &owner)
275-
}, true)
276-
configMapNames.MapfileGenerator = cm.Name
272+
if path, include := shouldIncludeFile("configmap-mapfile-generator.yaml"); include {
273+
cm := getBareConfigMap(resource, MapfileGeneratorName)
274+
testMutateConfigMap(cm, path, func(cm *corev1.ConfigMap) error {
275+
return mutateConfigMapMapfileGenerator(reconcilerFn(), resource, cm, &owner)
276+
}, true)
277+
configMapNames.MapfileGenerator = cm.Name
278+
}
277279
})
278280

279281
It("Should generate a correct CapabilitiesGenerator Configmap", func() {

internal/controller/suite_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ import (
3434
"path/filepath"
3535
"testing"
3636

37+
"github.com/pdok/mapserver-operator/internal/controller/mapserver"
38+
3739
pdoknlv2beta1 "github.com/pdok/mapserver-operator/api/v2beta1"
3840
smoothoperatorv1 "github.com/pdok/smooth-operator/api/v1"
3941
smoothoperatorvalidation "github.com/pdok/smooth-operator/pkg/validation"
@@ -175,6 +177,7 @@ var _ = BeforeSuite(func() {
175177
Expect(err).NotTo(HaveOccurred())
176178

177179
pdoknlv3.SetHost("http://localhost:32788")
180+
mapserver.SetStorageClassName("test-storage")
178181
})
179182

180183
var _ = AfterSuite(func() {

internal/controller/test_data/wfs/complete/expected/deployment.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,7 @@ spec:
243243
- ephemeral:
244244
volumeClaimTemplate:
245245
spec:
246+
storageClassName: test-storage
246247
accessModes:
247248
- ReadWriteOnce
248249
resources:
Lines changed: 244 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,244 @@
1+
apiVersion: v1
2+
data:
3+
input.yaml: |-
4+
global:
5+
additionalschemalocations: http://inspire.ec.europa.eu/schemas/inspire_dls/1.0 http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd
6+
http://inspire.ec.europa.eu/schemas/common/1.0 http://inspire.ec.europa.eu/schemas/common/1.0/common.xsd
7+
namespace: http://dataset.geonovum.nl
8+
onlineresourceurl: http://localhost
9+
path: /datasetOwner/dataset/2016
10+
prefix: dataset
11+
version: v1_0
12+
services:
13+
wms130:
14+
definition:
15+
capability:
16+
wmscapabilities:
17+
extendedcapabilities:
18+
metadataurl:
19+
mediatype: application/vnd.ogc.csw.GetRecordByIdResponse_xml
20+
url: https://www.nationaalgeoregister.nl/geonetwork/srv/dut/csw?service=CSW&version=2.0.2&request=GetRecordById&outputschema=http://www.isotc211.org/2005/gmd&elementsetname=full&id=metameta-meta-meta-meta-metametameta
21+
responselanguage:
22+
language: dut
23+
supportedlanguages:
24+
defaultlanguage:
25+
language: dut
26+
layer:
27+
- abstract: Top "Layer" Abstract
28+
authorityurl:
29+
name: authority-name
30+
onlineresource:
31+
href: http://authority-url
32+
identifier:
33+
authority: authority-name
34+
value: bronbron-bron-bron-bron-bronbronbron
35+
keywordlist:
36+
keyword:
37+
- top-layer-keyword-1
38+
- top-layer-keyword-2
39+
layer:
40+
- abstract: group layer abstract "1"
41+
authorityurl:
42+
name: authority-name
43+
onlineresource:
44+
href: http://authority-url
45+
identifier:
46+
authority: authority-name
47+
value: bronbron-bron-bron-bron-bronbronbron
48+
keywordlist:
49+
keyword:
50+
- group-layer-keyword-1
51+
- group-layer-keyword-2
52+
layer:
53+
- abstract: gpkg-layer-abstract "2"
54+
authorityurl:
55+
name: authority-name
56+
onlineresource:
57+
href: http://authority-url
58+
identifier:
59+
authority: authority-name
60+
value: bronbron-bron-bron-bron-bronbronbron
61+
keywordlist:
62+
keyword:
63+
- gpkg-layer-keyword-1
64+
- gpkg-layer-keyword-2
65+
maxscaledenominator: 20
66+
metadataurl:
67+
- format: text/plain
68+
onlineresource:
69+
href: https://www.nationaalgeoregister.nl/geonetwork/srv/dut/csw?service=CSW&version=2.0.2&request=GetRecordById&outputschema=http://www.isotc211.org/2005/gmd&elementsetname=full&id=datadata-data-data-data-datadatadata
70+
type: simple
71+
xlink: http://www.w3.org/1999/xlink
72+
type: TC211
73+
minscaledenominator: 30
74+
name: gpkg-layer-name
75+
queryable: 1
76+
style:
77+
- abstract: gpkg-layer-style-1-abstract
78+
legendurl:
79+
format: image/png
80+
height: 20
81+
onlineresource:
82+
href: http://localhost/datasetOwner/dataset/2016/wms/v1_0/legend/gpkg-layer-name/gpkg-layer-style-1-name.png
83+
type: simple
84+
xlink: http://www.w3.org/1999/xlink
85+
width: 78
86+
name: gpkg-layer-style-1-name
87+
title: gpkg-layer-style-1-title
88+
- legendurl:
89+
format: image/png
90+
height: 20
91+
onlineresource:
92+
href: http://localhost/datasetOwner/dataset/2016/wms/v1_0/legend/gpkg-layer-name/gpkg-layer-style-2-name.png
93+
type: simple
94+
xlink: http://www.w3.org/1999/xlink
95+
width: 78
96+
name: gpkg-layer-style-2-name
97+
title: gpkg-layer-style-2-title
98+
title: gpkg-layer-title "2"
99+
- abstract: postgis-layer-abstract
100+
authorityurl:
101+
name: authority-name
102+
onlineresource:
103+
href: http://authority-url
104+
identifier:
105+
authority: authority-name
106+
value: bronbron-bron-bron-bron-bronbronbron
107+
keywordlist:
108+
keyword:
109+
- postgis-layer-keyword-1
110+
- postgis-layer-keyword-2
111+
maxscaledenominator: 20
112+
metadataurl:
113+
- format: text/plain
114+
onlineresource:
115+
href: https://www.nationaalgeoregister.nl/geonetwork/srv/dut/csw?service=CSW&version=2.0.2&request=GetRecordById&outputschema=http://www.isotc211.org/2005/gmd&elementsetname=full&id=datadata-data-data-data-datadatadata
116+
type: simple
117+
xlink: http://www.w3.org/1999/xlink
118+
type: TC211
119+
minscaledenominator: 30
120+
name: postgis-layer-name
121+
queryable: 1
122+
style:
123+
- abstract: postgis-layer-style-1-abstract
124+
legendurl:
125+
format: image/png
126+
height: 20
127+
onlineresource:
128+
href: http://localhost/datasetOwner/dataset/2016/wms/v1_0/legend/postgis-layer-name/postgis-layer-style-1-name.png
129+
type: simple
130+
xlink: http://www.w3.org/1999/xlink
131+
width: 78
132+
name: postgis-layer-style-1-name
133+
title: postgis-layer-style-1-title
134+
- legendurl:
135+
format: image/png
136+
height: 20
137+
onlineresource:
138+
href: http://localhost/datasetOwner/dataset/2016/wms/v1_0/legend/postgis-layer-name/postgis-layer-style-2-name.png
139+
type: simple
140+
xlink: http://www.w3.org/1999/xlink
141+
width: 78
142+
name: postgis-layer-style-2-name
143+
title: postgis-layer-style-2-title
144+
title: postgis-layer-title
145+
maxscaledenominator: 50
146+
metadataurl:
147+
- format: text/plain
148+
onlineresource:
149+
href: https://www.nationaalgeoregister.nl/geonetwork/srv/dut/csw?service=CSW&version=2.0.2&request=GetRecordById&outputschema=http://www.isotc211.org/2005/gmd&elementsetname=full&id=datadata-data-data-data-datadatadata
150+
type: simple
151+
xlink: http://www.w3.org/1999/xlink
152+
type: TC211
153+
name: group-layer-name
154+
queryable: 1
155+
style:
156+
- abstract: group-layer-style-1-abstract
157+
legendurl:
158+
format: image/png
159+
height: 20
160+
onlineresource:
161+
href: http://localhost/datasetOwner/dataset/2016/wms/v1_0/legend/group-layer-name/group-layer-style-1-name.png
162+
type: simple
163+
xlink: http://www.w3.org/1999/xlink
164+
width: 78
165+
name: group-layer-style-1-name
166+
title: group-layer-style-1-title
167+
- legendurl:
168+
format: image/png
169+
height: 20
170+
onlineresource:
171+
href: http://localhost/datasetOwner/dataset/2016/wms/v1_0/legend/group-layer-name/group-layer-style-2-name.png
172+
type: simple
173+
xlink: http://www.w3.org/1999/xlink
174+
width: 78
175+
name: group-layer-style-2-name
176+
title: group-layer-style-2-title
177+
title: group layer title "1"
178+
maxscaledenominator: 50
179+
metadataurl:
180+
- format: text/plain
181+
onlineresource:
182+
href: https://www.nationaalgeoregister.nl/geonetwork/srv/dut/csw?service=CSW&version=2.0.2&request=GetRecordById&outputschema=http://www.isotc211.org/2005/gmd&elementsetname=full&id=datadata-data-data-data-datadatadata
183+
type: simple
184+
xlink: http://www.w3.org/1999/xlink
185+
type: TC211
186+
name: top-layer-name
187+
queryable: 1
188+
style:
189+
- abstract: top-layer-style-1-abstract
190+
legendurl:
191+
format: image/png
192+
height: 20
193+
onlineresource:
194+
href: http://localhost/datasetOwner/dataset/2016/wms/v1_0/legend/top-layer-name/top-layer-style-1-name.png
195+
type: simple
196+
xlink: http://www.w3.org/1999/xlink
197+
width: 78
198+
name: top-layer-style-1-name
199+
title: top-layer-style-1-title
200+
- legendurl:
201+
format: image/png
202+
height: 20
203+
onlineresource:
204+
href: http://localhost/datasetOwner/dataset/2016/wms/v1_0/legend/top-layer-name/top-layer-style-2-name.png
205+
type: simple
206+
xlink: http://www.w3.org/1999/xlink
207+
width: 78
208+
name: top-layer-style-2-name
209+
title: top-layer-style-2-title
210+
title: Top "Layer" Title
211+
service:
212+
abstract: some "service" abstract
213+
accessconstraints: http://creativecommons.org/publicdomain/zero/1.0/deed.nl
214+
keywordlist:
215+
keyword:
216+
- service-keyword-1
217+
- service-keyword-2
218+
- infoMapAccessService
219+
optionalconstraints:
220+
maxheight: 4000
221+
maxwidth: 4000
222+
title: some service title
223+
filename: /var/www/config/capabilities_wms_130.xml
224+
225+
immutable: true
226+
kind: ConfigMap
227+
metadata:
228+
labels:
229+
app: mapserver
230+
dataset: dataset
231+
dataset-owner: datasetOwner
232+
inspire: "true"
233+
service-type: wms
234+
service-version: v1_0
235+
theme: '2016'
236+
name: complete-wms-capabilities-generator-2fh6mb98c8
237+
namespace: default
238+
ownerReferences:
239+
- apiVersion: pdok.nl/v3
240+
kind: WMS
241+
name: complete
242+
uid: ""
243+
blockOwnerDeletion: true
244+
controller: true

0 commit comments

Comments
 (0)