Commit b559cc32 authored by Kubernetes Submit Queue's avatar Kubernetes Submit Queue Committed by GitHub

Merge pull request #35158 from foxish/petset-redis-fix

Automatic merge from submit-queue Fixing flakes caused by petset tests. **What this PR does / why we need it**: We should wait till the key/value has been replicated to database slaves before trying to read from them. **Which issue this PR fixes** Fixes https://github.com/kubernetes/kubernetes/issues/33904, https://github.com/kubernetes/kubernetes/issues/33895 cc @kubernetes/sig-apps
parents 3e22b38f bbc282c5
...@@ -57,6 +57,9 @@ const ( ...@@ -57,6 +57,9 @@ const (
// Should the test restart petset clusters? // Should the test restart petset clusters?
// TODO: enable when we've productionzed bringup of pets in this e2e. // TODO: enable when we've productionzed bringup of pets in this e2e.
restartCluster = false restartCluster = false
// Timeout for reads from databases running on pets.
readTimeout = 60 * time.Second
) )
// Time: 25m, slow by design. // Time: 25m, slow by design.
...@@ -202,8 +205,8 @@ var _ = framework.KubeDescribe("PetSet [Slow] [Feature:PetSet]", func() { ...@@ -202,8 +205,8 @@ var _ = framework.KubeDescribe("PetSet [Slow] [Feature:PetSet]", func() {
} }
By("Reading value under foo from member with index 2") By("Reading value under foo from member with index 2")
if v := pet.read(2, "foo"); v != "bar" { if err := pollReadWithTimeout(pet, 2, "foo", "bar"); err != nil {
framework.Failf("Read unexpected value %v, expected bar under key foo", v) framework.Failf("%v", err)
} }
}) })
...@@ -223,8 +226,8 @@ var _ = framework.KubeDescribe("PetSet [Slow] [Feature:PetSet]", func() { ...@@ -223,8 +226,8 @@ var _ = framework.KubeDescribe("PetSet [Slow] [Feature:PetSet]", func() {
} }
By("Reading value under foo from member with index 2") By("Reading value under foo from member with index 2")
if v := pet.read(2, "foo"); v != "bar" { if err := pollReadWithTimeout(pet, 2, "foo", "bar"); err != nil {
framework.Failf("Read unexpected value %v, expected bar under key foo", v) framework.Failf("%v", err)
} }
}) })
...@@ -244,8 +247,8 @@ var _ = framework.KubeDescribe("PetSet [Slow] [Feature:PetSet]", func() { ...@@ -244,8 +247,8 @@ var _ = framework.KubeDescribe("PetSet [Slow] [Feature:PetSet]", func() {
} }
By("Reading value under foo from member with index 2") By("Reading value under foo from member with index 2")
if v := pet.read(2, "foo"); v != "bar" { if err := pollReadWithTimeout(pet, 2, "foo", "bar"); err != nil {
framework.Failf("Read unexpected value %v, expected bar under key foo", v) framework.Failf("%v", err)
} }
}) })
}) })
...@@ -804,6 +807,23 @@ func ExpectNoError(err error) { ...@@ -804,6 +807,23 @@ func ExpectNoError(err error) {
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
} }
func pollReadWithTimeout(pet petTester, petNumber int, key, expectedVal string) error {
err := wait.PollImmediate(time.Second, readTimeout, func() (bool, error) {
val := pet.read(petNumber, key)
if val == "" {
return false, nil
} else if val != expectedVal {
return false, fmt.Errorf("expected value %v, found %v", expectedVal, val)
}
return true, nil
})
if err == wait.ErrWaitTimeout {
return fmt.Errorf("timed out when trying to read value for key %v from pet %d", key, petNumber)
}
return err
}
func isInitialized(pod api.Pod) bool { func isInitialized(pod api.Pod) bool {
initialized, ok := pod.Annotations[petset.PetSetInitAnnotation] initialized, ok := pod.Annotations[petset.PetSetInitAnnotation]
if !ok { if !ok {
......
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