Skip to content

Commit c07ad53

Browse files
committed
K8SPS-73 - Add self-healing test
1 parent b3eae63 commit c07ad53

36 files changed

+853
-4
lines changed

e2e-tests/functions

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -547,16 +547,17 @@ kill_pods() {
547547
local selector=$2
548548
local pod_label=$3
549549
local label_value=$4
550+
local chaos_suffix=$5
550551

551552
if [ "${selector}" == "pod" ]; then
552553
yq eval '
553-
.metadata.name = "chaos-pod-kill-'${RANDOM}'" |
554+
.metadata.name = "chaos-pod-kill-'${chaos_suffix}'" |
554555
del(.spec.selector.pods.test-namespace) |
555556
.spec.selector.pods.'${ns}'[0] = "'${pod_label}'"' ${TESTS_CONFIG_DIR}/chaos-pod-kill.yml \
556557
| kubectl apply --namespace ${ns} -f -
557558
elif [ "${selector}" == "label" ]; then
558559
yq eval '
559-
.metadata.name = "chaos-kill-label-'${RANDOM}'" |
560+
.metadata.name = "chaos-kill-label-'${chaos_suffix}'" |
560561
.spec.mode = "all" |
561562
del(.spec.selector.pods) |
562563
.spec.selector.labelSelectors."'${pod_label}'" = "'${label_value}'"' ${TESTS_CONFIG_DIR}/chaos-pod-kill.yml \
@@ -568,9 +569,10 @@ kill_pods() {
568569
failure_pod() {
569570
local ns=$1
570571
local pod=$2
572+
local chaos_suffix=$3
571573

572574
yq eval '
573-
.metadata.name = "chaos-pod-failure-'${RANDOM}'" |
575+
.metadata.name = "chaos-pod-failure-'${chaos_suffix}'" |
574576
del(.spec.selector.pods.test-namespace) |
575577
.spec.selector.pods.'${ns}'[0] = "'${pod}'"' ${TESTS_CONFIG_DIR}/chaos-pod-failure.yml \
576578
| kubectl apply --namespace ${ns} -f -
@@ -580,9 +582,10 @@ failure_pod() {
580582
network_loss() {
581583
local ns=$1
582584
local pod=$2
585+
local chaos_suffix=$3
583586

584587
yq eval '
585-
.metadata.name = "chaos-pod-network-loss-'${RANDOM}'" |
588+
.metadata.name = "chaos-pod-network-loss-'${chaos_suffix}'" |
586589
del(.spec.selector.pods.test-namespace) |
587590
.spec.selector.pods.'${ns}'[0] = "'${pod}'"' ${TESTS_CONFIG_DIR}/chaos-network-loss.yml \
588591
| kubectl apply --namespace ${ns} -f -

e2e-tests/run-distro.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ monitoring
1414
one-pod
1515
operator-self-healing
1616
scaling
17+
self-healing
1718
service-per-pod
1819
sidecars
1920
tls-cert-manager

e2e-tests/run-minikube.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ haproxy
1212
init-deploy
1313
one-pod
1414
operator-self-healing
15+
self-healing
1516
sidecars
1617
tls-cert-manager
1718
users

e2e-tests/run-pr.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ monitoring
1818
one-pod
1919
operator-self-healing
2020
scaling
21+
self-healing
2122
service-per-pod
2223
sidecars
2324
tls-cert-manager

e2e-tests/run-release.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ monitoring
1717
one-pod
1818
operator-self-healing
1919
scaling
20+
self-healing
2021
service-per-pod
2122
sidecars
2223
tls-cert-manager
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestAssert
3+
timeout: 120
4+
---
5+
apiVersion: apiextensions.k8s.io/v1
6+
kind: CustomResourceDefinition
7+
metadata:
8+
name: perconaservermysqls.ps.percona.com
9+
spec:
10+
group: ps.percona.com
11+
names:
12+
kind: PerconaServerMySQL
13+
listKind: PerconaServerMySQLList
14+
plural: perconaservermysqls
15+
shortNames:
16+
- ps
17+
singular: perconaservermysql
18+
scope: Namespaced
19+
---
20+
apiVersion: kuttl.dev/v1beta1
21+
kind: TestAssert
22+
metadata:
23+
name: check-operator-deploy-status
24+
timeout: 120
25+
commands:
26+
- script: kubectl assert exist-enhanced deployment percona-server-mysql-operator -n ${OPERATOR_NS:-$NAMESPACE} --field-selector status.readyReplicas=1
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestStep
3+
timeout: 10
4+
commands:
5+
- script: |-
6+
set -o errexit
7+
set -o xtrace
8+
9+
source ../../functions
10+
11+
deploy_operator
12+
deploy_non_tls_cluster_secrets
13+
deploy_tls_cluster_secrets
14+
deploy_client
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestAssert
3+
timeout: 120
4+
---
5+
apiVersion: apps/v1
6+
kind: Deployment
7+
metadata:
8+
name: chaos-controller-manager
9+
spec:
10+
replicas: 3
11+
status:
12+
availableReplicas: 3
13+
readyReplicas: 3
14+
replicas: 3
15+
updatedReplicas: 3
16+
---
17+
apiVersion: apps/v1
18+
kind: DaemonSet
19+
metadata:
20+
name: chaos-daemon
21+
status:
22+
currentNumberScheduled: 3
23+
desiredNumberScheduled: 3
24+
numberAvailable: 3
25+
numberMisscheduled: 0
26+
numberReady: 3
27+
updatedNumberScheduled: 3
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestStep
3+
timeout: 10
4+
commands:
5+
- script: |-
6+
set -o errexit
7+
set -o xtrace
8+
9+
source ../../functions
10+
11+
deploy_chaos_mesh
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestAssert
3+
timeout: 420
4+
---
5+
kind: StatefulSet
6+
apiVersion: apps/v1
7+
metadata:
8+
name: self-healing-mysql
9+
status:
10+
observedGeneration: 1
11+
replicas: 3
12+
readyReplicas: 3
13+
currentReplicas: 3
14+
updatedReplicas: 3
15+
collisionCount: 0
16+
---
17+
kind: StatefulSet
18+
apiVersion: apps/v1
19+
metadata:
20+
name: self-healing-orc
21+
status:
22+
observedGeneration: 1
23+
replicas: 3
24+
readyReplicas: 3
25+
currentReplicas: 3
26+
updatedReplicas: 3
27+
collisionCount: 0
28+
---
29+
kind: StatefulSet
30+
apiVersion: apps/v1
31+
metadata:
32+
name: self-healing-haproxy
33+
status:
34+
observedGeneration: 1
35+
replicas: 3
36+
readyReplicas: 3
37+
currentReplicas: 3
38+
updatedReplicas: 3
39+
collisionCount: 0
40+
---
41+
apiVersion: ps.percona.com/v1alpha1
42+
kind: PerconaServerMySQL
43+
metadata:
44+
name: self-healing
45+
finalizers:
46+
- delete-mysql-pods-in-order
47+
status:
48+
haproxy:
49+
ready: 3
50+
size: 3
51+
state: ready
52+
mysql:
53+
ready: 3
54+
size: 3
55+
state: ready
56+
orchestrator:
57+
ready: 3
58+
size: 3
59+
state: ready
60+
state: ready

0 commit comments

Comments
 (0)