From 3e4c6491470e9a0a2fe1fcd87454c25c7601cd3b Mon Sep 17 00:00:00 2001 From: Keiichi Kii Date: Tue, 28 Nov 2023 21:48:25 -0500 Subject: [PATCH] Add e2e tests for OutOfServiceTaint remediation --- e2e/self_node_remediation_test.go | 51 +++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/e2e/self_node_remediation_test.go b/e2e/self_node_remediation_test.go index 878f3ae48..eee034277 100644 --- a/e2e/self_node_remediation_test.go +++ b/e2e/self_node_remediation_test.go @@ -123,6 +123,25 @@ var _ = Describe("Self Node Remediation E2E", func() { }) }) + Context("OutOfService Remediation Strategy", func() { + var oldPodCreationTime time.Time + + BeforeEach(func() { + remediationStrategy = v1alpha1.OutOfServiceTaintRemediationStrategy + oldPodCreationTime = findSnrPod(node).CreationTimestamp.Time + }) + + It("should delete pods", func() { + checkPodRecreated(node, oldPodCreationTime) + //Simulate NHC trying to delete SNR + deleteAndWait(snr) + snr = nil + + checkNoExecuteTaintRemoved(node) + checkOutOfServiceTaintRemoved(node) + }) + }) + }) }) @@ -342,6 +361,25 @@ var _ = Describe("Self Node Remediation E2E", func() { }) }) + Context("OutOfService Remediation Strategy", func() { + var oldPodCreationTime time.Time + + BeforeEach(func() { + remediationStrategy = v1alpha1.OutOfServiceTaintRemediationStrategy + oldPodCreationTime = findSnrPod(node).CreationTimestamp.Time + }) + + It("should delete pods", func() { + checkPodRecreated(node, oldPodCreationTime) + //Simulate NHC trying to delete SNR + deleteAndWait(snr) + snr = nil + + checkNoExecuteTaintRemoved(node) + checkOutOfServiceTaintRemoved(node) + }) + }) + }) }) @@ -392,6 +430,15 @@ func getBootTime(node *v1.Node) (*time.Time, error) { func checkNoExecuteTaintRemoved(node *v1.Node) { By("checking if NoExecute taint was removed") + checkTaintRemoved(node, controller.NodeNoExecuteTaint) +} + +func checkOutOfServiceTaintRemoved(node *v1.Node) { + By("checking if out-of-service taint was removed") + checkTaintRemoved(node, controller.OutOfServiceTaint) +} + +func checkTaintRemoved(node *v1.Node, taint *v1.Taint) { EventuallyWithOffset(1, func() error { key := client.ObjectKey{ Name: node.GetName(), @@ -403,8 +450,8 @@ func checkNoExecuteTaintRemoved(node *v1.Node) { } logger.Info("", "taints", newNode.Spec.Taints) for _, taint := range newNode.Spec.Taints { - if taint.MatchTaint(controllers.NodeNoExecuteTaint) { - return fmt.Errorf("NoExecute taint still exists") + if taint.MatchTaint(taint) { + return fmt.Errorf("Taint still exists", "taint key", taint.Key, "taint effect", taint.Effect) } } return nil