Merge pull request #88520 from bertinatto/fix-csi-mock-test-for-conformance

Don't rely on contents of optional Condition fields in CSI mock test
This commit is contained in:
Kubernetes Prow Robot 2020-02-27 20:20:38 -08:00 committed by GitHub
commit d6a5fa3bec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -21,7 +21,6 @@ import (
"crypto/sha256" "crypto/sha256"
"encoding/json" "encoding/json"
"fmt" "fmt"
"regexp"
"strconv" "strconv"
"strings" "strings"
"time" "time"
@ -356,7 +355,6 @@ var _ = utils.SIGDescribe("CSI mock volume", func() {
ginkgo.Context("CSI volume limit information using mock driver", func() { ginkgo.Context("CSI volume limit information using mock driver", func() {
ginkgo.It("should report attach limit when limit is bigger than 0 [Slow]", func() { ginkgo.It("should report attach limit when limit is bigger than 0 [Slow]", func() {
// define volume limit to be 2 for this test // define volume limit to be 2 for this test
var err error var err error
init(testParameters{attachLimit: 2}) init(testParameters{attachLimit: 2})
defer cleanup() defer cleanup()
@ -563,19 +561,15 @@ var _ = utils.SIGDescribe("CSI mock volume", func() {
}) })
func waitForMaxVolumeCondition(pod *v1.Pod, cs clientset.Interface) error { func waitForMaxVolumeCondition(pod *v1.Pod, cs clientset.Interface) error {
reg, err := regexp.Compile(`max.+volume.+count`)
if err != nil {
return err
}
waitErr := wait.PollImmediate(10*time.Second, csiPodUnschedulableTimeout, func() (bool, error) { waitErr := wait.PollImmediate(10*time.Second, csiPodUnschedulableTimeout, func() (bool, error) {
pod, err = cs.CoreV1().Pods(pod.Namespace).Get(context.TODO(), pod.Name, metav1.GetOptions{}) pod, err := cs.CoreV1().Pods(pod.Namespace).Get(context.TODO(), pod.Name, metav1.GetOptions{})
if err != nil { if err != nil {
return false, err return false, err
} }
conditions := pod.Status.Conditions for _, c := range pod.Status.Conditions {
for _, condition := range conditions { // Conformance tests cannot rely on specific output of optional fields (e.g., Reason
matched := reg.MatchString(condition.Message) // and Message) because these fields are not suject to the deprecation policy.
if condition.Reason == v1.PodReasonUnschedulable && matched { if c.Type == v1.PodScheduled && c.Status == v1.ConditionFalse && c.Reason != "" && c.Message != "" {
return true, nil return true, nil
} }
} }