From 791a10f37f018e720329a6b3752826b4daf6d5b9 Mon Sep 17 00:00:00 2001 From: Janet Kuo Date: Mon, 20 Mar 2017 17:17:42 -0700 Subject: [PATCH] Add e2e test for DaemonSet node selector updates --- test/e2e/daemon_set.go | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/test/e2e/daemon_set.go b/test/e2e/daemon_set.go index fd7f02ece80..f3dc5eb9d0e 100644 --- a/test/e2e/daemon_set.go +++ b/test/e2e/daemon_set.go @@ -143,7 +143,7 @@ var _ = framework.KubeDescribe("Daemon set [Serial]", func() { err = wait.Poll(dsRetryPeriod, dsRetryTimeout, checkRunningOnNoNodes(f, complexLabel)) Expect(err).NotTo(HaveOccurred(), "error waiting for daemon pods to be running on no nodes") - By("Change label of node, check that daemon pod is launched.") + By("Change node label to blue, check that daemon pod is launched.") nodeList := framework.GetReadySchedulableNodesOrDie(f.ClientSet) Expect(len(nodeList.Items)).To(BeNumerically(">", 0)) newNode, err := setDaemonSetNodeLabels(c, nodeList.Items[0].Name, nodeSelector) @@ -155,11 +155,24 @@ var _ = framework.KubeDescribe("Daemon set [Serial]", func() { err = checkDaemonStatus(f, dsName) Expect(err).NotTo(HaveOccurred()) - By("remove the node selector and wait for daemons to be unscheduled") - _, err = setDaemonSetNodeLabels(c, nodeList.Items[0].Name, map[string]string{}) + By("Update the node label to green, and wait for daemons to be unscheduled") + nodeSelector[daemonsetColorLabel] = "green" + greenNode, err := setDaemonSetNodeLabels(c, nodeList.Items[0].Name, nodeSelector) Expect(err).NotTo(HaveOccurred(), "error removing labels on node") Expect(wait.Poll(dsRetryPeriod, dsRetryTimeout, checkRunningOnNoNodes(f, complexLabel))). NotTo(HaveOccurred(), "error waiting for daemon pod to not be running on nodes") + + By("Update DaemonSet node selector to green, and change its update strategy to RollingUpdate") + patch := fmt.Sprintf(`{"spec":{"template":{"spec":{"nodeSelector":{"%s":"%s"}}},"updateStrategy":{"type":"RollingUpdate"}}}`, + daemonsetColorLabel, greenNode.Labels[daemonsetColorLabel]) + ds, err = c.Extensions().DaemonSets(ns).Patch(dsName, types.StrategicMergePatchType, []byte(patch)) + Expect(err).NotTo(HaveOccurred(), "error patching daemon set") + daemonSetLabels, _ = separateDaemonSetNodeLabels(greenNode.Labels) + Expect(len(daemonSetLabels)).To(Equal(1)) + err = wait.Poll(dsRetryPeriod, dsRetryTimeout, checkDaemonPodOnNodes(f, complexLabel, []string{greenNode.Name})) + Expect(err).NotTo(HaveOccurred(), "error waiting for daemon pods to be running on new nodes") + err = checkDaemonStatus(f, dsName) + Expect(err).NotTo(HaveOccurred()) }) It("should run and stop complex daemon with node affinity", func() { @@ -191,7 +204,7 @@ var _ = framework.KubeDescribe("Daemon set [Serial]", func() { err = wait.Poll(dsRetryPeriod, dsRetryTimeout, checkRunningOnNoNodes(f, complexLabel)) Expect(err).NotTo(HaveOccurred(), "error waiting for daemon pods to be running on no nodes") - By("Change label of node, check that daemon pod is launched.") + By("Change node label to blue, check that daemon pod is launched.") nodeList := framework.GetReadySchedulableNodesOrDie(f.ClientSet) Expect(len(nodeList.Items)).To(BeNumerically(">", 0)) newNode, err := setDaemonSetNodeLabels(c, nodeList.Items[0].Name, nodeSelector) @@ -203,7 +216,7 @@ var _ = framework.KubeDescribe("Daemon set [Serial]", func() { err = checkDaemonStatus(f, dsName) Expect(err).NotTo(HaveOccurred()) - By("remove the node selector and wait for daemons to be unscheduled") + By("Remove the node label and wait for daemons to be unscheduled") _, err = setDaemonSetNodeLabels(c, nodeList.Items[0].Name, map[string]string{}) Expect(err).NotTo(HaveOccurred(), "error removing labels on node") Expect(wait.Poll(dsRetryPeriod, dsRetryTimeout, checkRunningOnNoNodes(f, complexLabel))).