From 863b07dc2f73f1dc54dd1ce880e0d99d5dc3f0cc Mon Sep 17 00:00:00 2001 From: Nikos Katirtzis Date: Thu, 17 Mar 2022 21:48:38 +0000 Subject: [PATCH 1/3] Extract environment-specific properties. --- controllers/disruption_controller_test.go | 7 +++--- controllers/suite_test.go | 29 ++++++++++++++++++----- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/controllers/disruption_controller_test.go b/controllers/disruption_controller_test.go index 866b32667..de063e2a7 100644 --- a/controllers/disruption_controller_test.go +++ b/controllers/disruption_controller_test.go @@ -41,12 +41,11 @@ func listChaosPods(instance *chaosv1beta1.Disruption) (corev1.PodList, error) { ls := labels.NewSelector() // create requirements - targetPodRequirement, _ := labels.NewRequirement(chaostypes.TargetLabel, selection.In, []string{"foo", "bar", "minikube"}) disruptionNameRequirement, _ := labels.NewRequirement(chaostypes.DisruptionNameLabel, selection.Equals, []string{instance.Name}) disruptionNamespaceRequirement, _ := labels.NewRequirement(chaostypes.DisruptionNamespaceLabel, selection.Equals, []string{instance.Namespace}) // add requirements to label selector - ls = ls.Add(*targetPodRequirement, *disruptionNamespaceRequirement, *disruptionNameRequirement) + ls = ls.Add(*disruptionNamespaceRequirement, *disruptionNameRequirement) // get matching pods if err := k8sClient.List(context.Background(), &l, &client.ListOptions{ @@ -134,7 +133,7 @@ var _ = Describe("Disruption Controller", func() { disruption = &chaosv1beta1.Disruption{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", - Namespace: "default", + Namespace: namespace, }, Spec: chaosv1beta1.DisruptionSpec{ DryRun: true, @@ -224,7 +223,7 @@ var _ = Describe("Disruption Controller", func() { disruption = &chaosv1beta1.Disruption{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", - Namespace: "default", + Namespace: namespace, }, Spec: chaosv1beta1.DisruptionSpec{ DryRun: false, diff --git a/controllers/suite_test.go b/controllers/suite_test.go index f1cda2f98..b94f83100 100644 --- a/controllers/suite_test.go +++ b/controllers/suite_test.go @@ -46,6 +46,7 @@ import ( const ( timeout = time.Second * 45 + HostTopologyKey = "kubernetes.io/hostname" ) var ( @@ -56,6 +57,9 @@ var ( instanceKey types.NamespacedName targetPodA *corev1.Pod targetPodB *corev1.Pod + namespace string + nodeLabel map[string]string + testPodImage string ) func TestAPIs(t *testing.T) { @@ -99,11 +103,17 @@ var _ = BeforeSuite(func(done Done) { Expect(err).ToNot(HaveOccurred()) }() - instanceKey = types.NamespacedName{Name: "foo", Namespace: "default"} + // wait for the cache to sync + time.Sleep(10 * time.Second) + + // set up enviroment-specific properties + setupEnvironment() + + instanceKey = types.NamespacedName{Name: "foo", Namespace: namespace} targetPodA = &corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", - Namespace: "default", + Namespace: namespace, Labels: map[string]string{ "foo": "bar", }, @@ -111,7 +121,7 @@ var _ = BeforeSuite(func(done Done) { Spec: corev1.PodSpec{ Containers: []corev1.Container{ { - Image: "k8s.gcr.io/pause:3.4.1", + Image: testPodImage, Name: "ctn1", VolumeMounts: []corev1.VolumeMount{ { @@ -121,7 +131,7 @@ var _ = BeforeSuite(func(done Done) { }, }, { - Image: "k8s.gcr.io/pause:3.4.1", + Image: testPodImage, Name: "ctn2", VolumeMounts: []corev1.VolumeMount{ { @@ -150,7 +160,7 @@ var _ = BeforeSuite(func(done Done) { targetPodB = &corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "bar", - Namespace: "default", + Namespace: namespace, Labels: map[string]string{ "foo": "bar", }, @@ -158,7 +168,7 @@ var _ = BeforeSuite(func(done Done) { Spec: corev1.PodSpec{ Containers: []corev1.Container{ { - Image: "k8s.gcr.io/pause:3.4.1", + Image: testPodImage, Name: "ctn1", VolumeMounts: []corev1.VolumeMount{ { @@ -209,6 +219,13 @@ var _ = AfterSuite(func() { Expect(testEnv.Stop()).To(BeNil()) }) +// setupEnvironment sets up environment-specific properties +func setupEnvironment() { + namespace = "chaos-engineering" + testPodImage = "k8s.gcr.io/pause:3.4.1" + nodeLabel = map[string]string{HostTopologyKey: "minikube"} +} + // podsAreRunning returns true when all the given pods have all their containers running func podsAreRunning(pods ...*corev1.Pod) (bool, error) { for _, pod := range pods { From cf528379054b3d617509f689bdbae689b392f875 Mon Sep 17 00:00:00 2001 From: Nikos Katirtzis Date: Thu, 17 Mar 2022 21:53:29 +0000 Subject: [PATCH 2/3] Fix constant naming. --- controllers/suite_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/controllers/suite_test.go b/controllers/suite_test.go index b94f83100..0aec62e53 100644 --- a/controllers/suite_test.go +++ b/controllers/suite_test.go @@ -45,8 +45,8 @@ import ( // http://onsi.github.io/ginkgo/ to learn more about Ginkgo. const ( - timeout = time.Second * 45 - HostTopologyKey = "kubernetes.io/hostname" + timeout = time.Second * 45 + hostTopologyKey = "kubernetes.io/hostname" ) var ( @@ -223,7 +223,7 @@ var _ = AfterSuite(func() { func setupEnvironment() { namespace = "chaos-engineering" testPodImage = "k8s.gcr.io/pause:3.4.1" - nodeLabel = map[string]string{HostTopologyKey: "minikube"} + nodeLabel = map[string]string{hostTopologyKey: "minikube"} } // podsAreRunning returns true when all the given pods have all their containers running From e6898ac44ac440c7e93174a43e8862869df522c8 Mon Sep 17 00:00:00 2001 From: Nikos Katirtzis Date: Mon, 21 Mar 2022 13:39:21 +0000 Subject: [PATCH 3/3] Replace sleep with call to WaitForCacheSync. --- controllers/suite_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/suite_test.go b/controllers/suite_test.go index 0aec62e53..75bf396d3 100644 --- a/controllers/suite_test.go +++ b/controllers/suite_test.go @@ -104,7 +104,7 @@ var _ = BeforeSuite(func(done Done) { }() // wait for the cache to sync - time.Sleep(10 * time.Second) + Expect(k8sManager.GetCache().WaitForCacheSync(context.Background())).To(BeTrue()) // set up enviroment-specific properties setupEnvironment()