Skip to content

Commit ae40ae1

Browse files
Merge pull request #279 from omersch381/enhance_kuttl_tests
Enhance Kuttl tests coverage
2 parents b8784e9 + 4d52b98 commit ae40ae1

17 files changed

+537
-79
lines changed
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
#!/bin/bash
2+
#
3+
# This is a base script which will verify the pools.yaml generated file.
4+
#
5+
# Get the ConfigMap content
6+
NUM_OF_SERVICES=$1
7+
EXPECTED_IPS_NUM=$((NUM_OF_SERVICES * 2))
8+
config_content=$(oc get -n $NAMESPACE configmap designate-pools-yaml-config-map -o jsonpath='{.data.pools-yaml-content}')
9+
10+
# Validate pools.yaml config map YAML structure
11+
if ! yq eval '.' <<< "$config_content" &> /dev/null; then
12+
echo "Invalid YAML structure"
13+
exit 1
14+
fi
15+
16+
# Assert pool's name
17+
if [ "$(echo "$config_content" | yq eval '.[0].name' -)" != "default" ]; then
18+
echo "Pool name is not 'default'"
19+
exit 1
20+
fi
21+
22+
# Assert pool's NS records
23+
if [ "$(echo "$config_content" | yq eval '.[0].ns_records[0].hostname' -)" != "ns1.example.com." ]; then
24+
echo "First NS record hostname is incorrect"
25+
exit 1
26+
fi
27+
if [ "$(echo "$config_content" | yq eval '.[0].ns_records[1].hostname' -)" != "ns2.example.com." ]; then
28+
echo "Second NS record hostname is incorrect"
29+
exit 1
30+
fi
31+
32+
# Check nameserver IPs
33+
nameserver_ips=$(echo "$config_content" | yq eval '.[0].nameservers[].host' -)
34+
for ip in $nameserver_ips; do
35+
if [[ ! $ip =~ ^172\.28\.0\.[0-9]+$ ]]; then
36+
echo "Invalid nameserver IP format: $ip"
37+
exit 1
38+
fi
39+
done
40+
41+
# Check master IPs
42+
master_ips=$(echo "$config_content" | yq eval '.[0].targets[].masters[].host' -)
43+
for ip in $master_ips; do
44+
if [[ ! $ip =~ ^172\.28\.0\.[0-9]+$ ]]; then
45+
echo "Invalid master IP format: $ip"
46+
exit 1
47+
fi
48+
done
49+
50+
# Check target.option IPs
51+
target_ips=$(echo "$config_content" | yq eval '.[0].targets[].options.host' -)
52+
rndc_ips=$(echo "$config_content" | yq eval '.[0].targets[].options.rndc_host' -)
53+
for ip in $target_ips $rndc_ips; do
54+
if [[ ! $ip =~ ^172\.28\.0\.[0-9]+$ ]]; then
55+
echo "Invalid target/rndc IP format: $ip"
56+
exit 1
57+
fi
58+
done
59+
60+
# Count total unique IPs
61+
all_ips=$(echo "$config_content" | yq eval '
62+
.[0].nameservers[].host,
63+
.[0].targets[].masters[].host,
64+
.[0].targets[].options.host,
65+
.[0].targets[].options.rndc_host' - | sort -u)
66+
unique_ip_count=$(echo "$all_ips" | wc -l)
67+
if [ "$unique_ip_count" -ne $EXPECTED_IPS_NUM ]; then
68+
echo "Expected $EXPECTED_IPS_NUM unique IPs, found $unique_ip_count"
69+
exit 1
70+
fi
71+
72+
# Verify port numbers
73+
nameserver_ports=$(echo "$config_content" | yq eval '.[0].nameservers[].port' -)
74+
for port in $nameserver_ports; do
75+
if [ "$port" -ne 53 ]; then
76+
echo "Invalid nameserver port: $port"
77+
exit 1
78+
fi
79+
done
80+
master_ports=$(echo "$config_content" | yq eval '.[0].targets[].masters[].port' -)
81+
for port in $master_ports; do
82+
if [ "$port" -ne 5354 ]; then
83+
echo "Invalid master port: $port"
84+
exit 1
85+
fi
86+
done
87+
rndc_ports=$(echo "$config_content" | yq eval '.[0].targets[].options.rndc_port' -)
88+
for port in $rndc_ports; do
89+
if [ "$port" -ne 953 ]; then
90+
echo "Invalid rndc port: $port"
91+
exit 1
92+
fi
93+
done
94+
echo "pools.yaml generated file was verified successfully"
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#!/bin/bash
2+
#
3+
# This is a base script which will verify Bind9 & Mdns predictable IPs.
4+
#
5+
# Check Bind9 predictable IPs configmap
6+
NUM_OF_SERVICES=$1
7+
bind_ips=$(oc get -n $NAMESPACE configmap designate-bind-ip-map -o json | jq -r '.data | values[]')
8+
if [ $(echo "$bind_ips" | wc -l) -ne ${NUM_OF_SERVICES} ]; then
9+
echo "Expected ${NUM_OF_SERVICES} bind addresses, found $(echo "$bind_ips" | wc -l)"
10+
exit 1
11+
fi
12+
for ip in $bind_ips; do
13+
if [[ ! $ip =~ ^172\.28\.0\.[0-9]+$ ]]; then
14+
echo "Invalid bind IP format: $ip"
15+
exit 1
16+
fi
17+
done
18+
19+
# Check Mdns predictable IPs configmap
20+
mdns_ips=$(oc get -n $NAMESPACE configmap designate-mdns-ip-map -o json | jq -r '.data | values[]')
21+
if [ $(echo "$mdns_ips" | wc -l) -ne ${NUM_OF_SERVICES} ]; then
22+
echo "Expected ${NUM_OF_SERVICES} mdns addresses, found $(echo "$mdns_ips" | wc -l)"
23+
exit 1
24+
fi
25+
for ip in $mdns_ips; do
26+
if [[ ! $ip =~ ^172\.28\.0\.[0-9]+$ ]]; then
27+
echo "Invalid mdns IP format: $ip"
28+
exit 1
29+
fi
30+
done
31+
echo "Bind9 & Mdns predictable IPs were verified successfully"

tests/kuttl/tests/designate_scale/02-assert.yaml

Lines changed: 81 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#
22
# Check for:
33
#
4-
# - 1 DesignateAPI CR
5-
# - 3 Pods for DesignateAPI CR
4+
# - Designate CR with all services scaled to 3 replicas
5+
# - 3 Pods for each Designate service
66
#
77

88
apiVersion: designate.openstack.org/v1beta1
@@ -14,8 +14,26 @@ metadata:
1414
spec:
1515
designateAPI:
1616
replicas: 3
17+
designateBackendbind9:
18+
replicas: 3
19+
designateCentral:
20+
replicas: 3
21+
designateMdns:
22+
replicas: 3
23+
designateProducer:
24+
replicas: 3
25+
designateUnbound:
26+
replicas: 3
27+
designateWorker:
28+
replicas: 3
1729
status:
1830
designateAPIReadyCount: 3
31+
designateBackendbind9ReadyCount: 3
32+
designateCentralReadyCount: 3
33+
designateMdnsReadyCount: 3
34+
designateProducerReadyCount: 3
35+
designateUnboundReadyCount: 3
36+
designateWorkerReadyCount: 3
1937
---
2038
apiVersion: apps/v1
2139
kind: Deployment
@@ -25,3 +43,64 @@ spec:
2543
replicas: 3
2644
status:
2745
availableReplicas: 3
46+
---
47+
apiVersion: apps/v1
48+
kind: StatefulSet
49+
metadata:
50+
name: designate-backendbind9
51+
spec:
52+
replicas: 3
53+
status:
54+
availableReplicas: 3
55+
---
56+
apiVersion: apps/v1
57+
kind: Deployment
58+
metadata:
59+
name: designate-central
60+
spec:
61+
replicas: 3
62+
status:
63+
availableReplicas: 3
64+
---
65+
apiVersion: apps/v1
66+
kind: StatefulSet
67+
metadata:
68+
name: designate-mdns
69+
spec:
70+
replicas: 3
71+
status:
72+
availableReplicas: 3
73+
---
74+
apiVersion: apps/v1
75+
kind: Deployment
76+
metadata:
77+
name: designate-producer
78+
spec:
79+
replicas: 3
80+
status:
81+
availableReplicas: 3
82+
---
83+
apiVersion: apps/v1
84+
kind: StatefulSet
85+
metadata:
86+
name: designate-unbound
87+
spec:
88+
replicas: 3
89+
status:
90+
availableReplicas: 3
91+
---
92+
apiVersion: apps/v1
93+
kind: Deployment
94+
metadata:
95+
name: designate-worker
96+
spec:
97+
replicas: 3
98+
status:
99+
availableReplicas: 3
100+
---
101+
apiVersion: kuttl.dev/v1beta1
102+
kind: TestAssert
103+
commands:
104+
- script: |
105+
../../common/validate-predictable-ips.sh 3
106+
../../common/validate-pools-yaml.sh 3
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestStep
3+
commands:
4+
- script: |
5+
SVC_REPLICA_COUNT=3
6+
for svc in API Backendbind9 Central Mdns Producer Unbound Worker; do oc patch designate -n $NAMESPACE designate --type='json' -p='[{"op": "replace", "path": "/spec/designate'"${svc}"'/replicas", "value":'"${SVC_REPLICA_COUNT}"'}]'; done

tests/kuttl/tests/designate_scale/02-scale-designateapi.yaml

Lines changed: 0 additions & 5 deletions
This file was deleted.

tests/kuttl/tests/designate_scale/03-assert.yaml

Lines changed: 81 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#
22
# Check for:
33
#
4-
# - 1 DesignateAPI CR
5-
# - 1 Pods for DesignateAPI CR
4+
# - Designate CR with all services scaled down to 1 replica
5+
# - 1 Pod for each Designate service
66
#
77

88
apiVersion: designate.openstack.org/v1beta1
@@ -14,8 +14,26 @@ metadata:
1414
spec:
1515
designateAPI:
1616
replicas: 1
17+
designateBackendbind9:
18+
replicas: 1
19+
designateCentral:
20+
replicas: 1
21+
designateMdns:
22+
replicas: 1
23+
designateProducer:
24+
replicas: 1
25+
designateUnbound:
26+
replicas: 1
27+
designateWorker:
28+
replicas: 1
1729
status:
1830
designateAPIReadyCount: 1
31+
designateBackendbind9ReadyCount: 1
32+
designateCentralReadyCount: 1
33+
designateMdnsReadyCount: 1
34+
designateProducerReadyCount: 1
35+
designateUnboundReadyCount: 1
36+
designateWorkerReadyCount: 1
1937
---
2038
apiVersion: apps/v1
2139
kind: Deployment
@@ -25,3 +43,64 @@ spec:
2543
replicas: 1
2644
status:
2745
availableReplicas: 1
46+
---
47+
apiVersion: apps/v1
48+
kind: StatefulSet
49+
metadata:
50+
name: designate-backendbind9
51+
spec:
52+
replicas: 1
53+
status:
54+
availableReplicas: 1
55+
---
56+
apiVersion: apps/v1
57+
kind: Deployment
58+
metadata:
59+
name: designate-central
60+
spec:
61+
replicas: 1
62+
status:
63+
availableReplicas: 1
64+
---
65+
apiVersion: apps/v1
66+
kind: StatefulSet
67+
metadata:
68+
name: designate-mdns
69+
spec:
70+
replicas: 1
71+
status:
72+
availableReplicas: 1
73+
---
74+
apiVersion: apps/v1
75+
kind: Deployment
76+
metadata:
77+
name: designate-producer
78+
spec:
79+
replicas: 1
80+
status:
81+
availableReplicas: 1
82+
---
83+
apiVersion: apps/v1
84+
kind: StatefulSet
85+
metadata:
86+
name: designate-unbound
87+
spec:
88+
replicas: 1
89+
status:
90+
availableReplicas: 1
91+
---
92+
apiVersion: apps/v1
93+
kind: Deployment
94+
metadata:
95+
name: designate-worker
96+
spec:
97+
replicas: 1
98+
status:
99+
availableReplicas: 1
100+
---
101+
apiVersion: kuttl.dev/v1beta1
102+
kind: TestAssert
103+
commands:
104+
- script: |
105+
../../common/validate-predictable-ips.sh 1
106+
../../common/validate-pools-yaml.sh 1
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestStep
3+
commands:
4+
- script: |
5+
SVC_REPLICA_COUNT=1
6+
for svc in API Backendbind9 Central Mdns Producer Unbound Worker; do oc patch designate -n $NAMESPACE designate --type='json' -p='[{"op": "replace", "path": "/spec/designate'"${svc}"'/replicas", "value":'"${SVC_REPLICA_COUNT}"'}]'; done

tests/kuttl/tests/designate_scale/03-scale-down-designateapi.yaml

Lines changed: 0 additions & 5 deletions
This file was deleted.

0 commit comments

Comments
 (0)