Commit 08f95aff authored by Kenneth Owens's avatar Kenneth Owens

Fixes e2e flake by ensuring that the StatefulSet observes mutations to

Pods prior mutating the StatefulSet object to trigger sclaing. Add ObervedVersion check
parent ff9296fc
...@@ -355,7 +355,8 @@ func (s *StatefulSetTester) SetHealthy(ss *apps.StatefulSet) { ...@@ -355,7 +355,8 @@ func (s *StatefulSetTester) SetHealthy(ss *apps.StatefulSet) {
} }
} }
func (s *StatefulSetTester) waitForStatus(ss *apps.StatefulSet, expectedReplicas int32) { // WaitForStatus waits for the ss.Status.Replicas to be equal to expectedReplicas
func (s *StatefulSetTester) WaitForStatus(ss *apps.StatefulSet, expectedReplicas int32) {
Logf("Waiting for statefulset status.replicas updated to %d", expectedReplicas) Logf("Waiting for statefulset status.replicas updated to %d", expectedReplicas)
ns, name := ss.Namespace, ss.Name ns, name := ss.Namespace, ss.Name
...@@ -365,6 +366,9 @@ func (s *StatefulSetTester) waitForStatus(ss *apps.StatefulSet, expectedReplicas ...@@ -365,6 +366,9 @@ func (s *StatefulSetTester) waitForStatus(ss *apps.StatefulSet, expectedReplicas
if err != nil { if err != nil {
return false, err return false, err
} }
if *ssGet.Status.ObservedGeneration < ss.Generation {
return false, nil
}
if ssGet.Status.Replicas != expectedReplicas { if ssGet.Status.Replicas != expectedReplicas {
Logf("Waiting for stateful set status to become %d, currently %d", expectedReplicas, ssGet.Status.Replicas) Logf("Waiting for stateful set status to become %d, currently %d", expectedReplicas, ssGet.Status.Replicas)
return false, nil return false, nil
...@@ -402,7 +406,7 @@ func DeleteAllStatefulSets(c clientset.Interface, ns string) { ...@@ -402,7 +406,7 @@ func DeleteAllStatefulSets(c clientset.Interface, ns string) {
if err := sst.Scale(&ss, 0); err != nil { if err := sst.Scale(&ss, 0); err != nil {
errList = append(errList, fmt.Sprintf("%v", err)) errList = append(errList, fmt.Sprintf("%v", err))
} }
sst.waitForStatus(&ss, 0) sst.WaitForStatus(&ss, 0)
Logf("Deleting statefulset %v", ss.Name) Logf("Deleting statefulset %v", ss.Name)
if err := c.Apps().StatefulSets(ss.Namespace).Delete(ss.Name, nil); err != nil { if err := c.Apps().StatefulSets(ss.Namespace).Delete(ss.Name, nil); err != nil {
errList = append(errList, fmt.Sprintf("%v", err)) errList = append(errList, fmt.Sprintf("%v", err))
......
...@@ -217,6 +217,7 @@ var _ = framework.KubeDescribe("StatefulSet", func() { ...@@ -217,6 +217,7 @@ var _ = framework.KubeDescribe("StatefulSet", func() {
By("Before scale up finished setting 2nd pod to be not ready by breaking readiness probe") By("Before scale up finished setting 2nd pod to be not ready by breaking readiness probe")
sst.BreakProbe(ss, testProbe) sst.BreakProbe(ss, testProbe)
sst.WaitForStatus(ss, 0)
sst.WaitForRunningAndNotReady(2, ss) sst.WaitForRunningAndNotReady(2, ss)
By("Continue scale operation after the 2nd pod, and scaling down to 1 replica") By("Continue scale operation after the 2nd pod, and scaling down to 1 replica")
...@@ -280,6 +281,7 @@ var _ = framework.KubeDescribe("StatefulSet", func() { ...@@ -280,6 +281,7 @@ var _ = framework.KubeDescribe("StatefulSet", func() {
By("Confirming that stateful set scale up will halt with unhealthy stateful pod") By("Confirming that stateful set scale up will halt with unhealthy stateful pod")
sst.BreakProbe(ss, testProbe) sst.BreakProbe(ss, testProbe)
sst.WaitForRunningAndNotReady(*ss.Spec.Replicas, ss) sst.WaitForRunningAndNotReady(*ss.Spec.Replicas, ss)
sst.WaitForStatus(ss, 0)
sst.UpdateReplicas(ss, 3) sst.UpdateReplicas(ss, 3)
sst.ConfirmStatefulPodCount(1, ss, 10*time.Second) sst.ConfirmStatefulPodCount(1, ss, 10*time.Second)
...@@ -309,6 +311,7 @@ var _ = framework.KubeDescribe("StatefulSet", func() { ...@@ -309,6 +311,7 @@ var _ = framework.KubeDescribe("StatefulSet", func() {
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
sst.BreakProbe(ss, testProbe) sst.BreakProbe(ss, testProbe)
sst.WaitForStatus(ss, 0)
sst.WaitForRunningAndNotReady(3, ss) sst.WaitForRunningAndNotReady(3, ss)
sst.UpdateReplicas(ss, 0) sst.UpdateReplicas(ss, 0)
sst.ConfirmStatefulPodCount(3, ss, 10*time.Second) sst.ConfirmStatefulPodCount(3, ss, 10*time.Second)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment