1
2
3
4
5
6
7
8
9
10
11
12
13
14 package sidecar
15
16 import (
17 "context"
18 "time"
19
20 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
21 "k8s.io/apimachinery/pkg/labels"
22 "k8s.io/apimachinery/pkg/util/wait"
23 "k8s.io/client-go/kubernetes"
24 "k8s.io/kubernetes/test/e2e/framework"
25 "sigs.k8s.io/controller-runtime/pkg/client"
26
27 "github.com/chaos-mesh/chaos-mesh/test/pkg/fixture"
28 )
29
30 func TestcaseInvalidConfigMapKey(
31 ns string,
32 cmNamespace string,
33 cmName string,
34 kubeCli kubernetes.Interface,
35 cli client.Client,
36 ) {
37
38 ctx, cancel := context.WithCancel(context.Background())
39 err := createTemplateConfig(ctx, cli, cmName,
40 map[string]string{
41 "chaos-pd.yaml": `name: chaosfs-pd
42 selector:
43 labelSelectors:
44 "app.kubernetes.io/component": "pd"`})
45 framework.ExpectNoError(err, "failed to create template config")
46
47 listOptions := metav1.ListOptions{
48 LabelSelector: labels.SelectorFromSet(map[string]string{
49 "app.kubernetes.io/component": "controller-manager",
50 }).String(),
51 }
52 pods, err := kubeCli.CoreV1().Pods(cmNamespace).List(listOptions)
53 framework.ExpectNoError(err, "get chaos mesh controller pods error")
54
55 err = wait.Poll(time.Second, 10*time.Second, func() (done bool, err error) {
56 newPods, err := kubeCli.CoreV1().Pods(cmNamespace).List(listOptions)
57 framework.ExpectNoError(err, "get chaos mesh controller pods error")
58 if !fixture.HaveSameUIDs(pods.Items, newPods.Items) {
59 return true, nil
60 }
61 if newPods.Items[0].Status.ContainerStatuses[0].RestartCount > 0 {
62 return true, nil
63 }
64 return false, nil
65 })
66 framework.ExpectError(err, "wait chaos mesh not dies")
67 framework.ExpectEqual(err.Error(), wait.ErrWaitTimeout.Error())
68
69 cancel()
70 }
71
72 func TestcaseInvalidConfiguration(
73 ns string,
74 cmNamespace string,
75 cmName string,
76 kubeCli kubernetes.Interface,
77 cli client.Client,
78 ) {
79
80 ctx, cancel := context.WithCancel(context.Background())
81 defer cancel()
82 err := createTemplateConfig(ctx, cli, cmName,
83 map[string]string{
84 "data": `name: chaosfs-pd
85 selector:
86 labelSelectors:
87 "app.kubernetes.io/component": "pd"`})
88 framework.ExpectNoError(err, "failed to create template config")
89
90 listOptions := metav1.ListOptions{
91 LabelSelector: labels.SelectorFromSet(map[string]string{
92 "app.kubernetes.io/component": "controller-manager",
93 }).String(),
94 }
95 pods, err := kubeCli.CoreV1().Pods(cmNamespace).List(listOptions)
96 framework.ExpectNoError(err, "get chaos mesh controller pods error")
97
98 err = wait.Poll(time.Second, 10*time.Second, func() (done bool, err error) {
99 newPods, err := kubeCli.CoreV1().Pods(cmNamespace).List(listOptions)
100 framework.ExpectNoError(err, "get chaos mesh controller pods error")
101 if !fixture.HaveSameUIDs(pods.Items, newPods.Items) {
102 return true, nil
103 }
104 if newPods.Items[0].Status.ContainerStatuses[0].RestartCount > 0 {
105 return true, nil
106 }
107 return false, nil
108 })
109 framework.ExpectError(err, "wait chaos mesh not dies")
110 framework.ExpectEqual(err.Error(), wait.ErrWaitTimeout.Error())
111 }
112