From 5e66372e311454552a0f3c477a0c6201f4b00b22 Mon Sep 17 00:00:00 2001 From: Niels de Vos Date: Mon, 11 Apr 2022 17:54:53 +0200 Subject: [PATCH] e2e: allow RWOP tests to fail Signed-off-by: Niels de Vos --- e2e/cephfs.go | 5 +++++ e2e/rbd.go | 10 ++++++++++ e2e/utils.go | 19 +++++++++++++++++++ 3 files changed, 34 insertions(+) diff --git a/e2e/cephfs.go b/e2e/cephfs.go index c55fead11..1c9671243 100644 --- a/e2e/cephfs.go +++ b/e2e/cephfs.go @@ -339,6 +339,11 @@ var _ = Describe("cephfs", func() { err = createPVCAndvalidatePV(f.ClientSet, pvc, deployTimeout) if err != nil { + if rwopMayFail(err) { + e2elog.Logf("RWOP is not supported: %v", err) + + return + } e2elog.Failf("failed to create PVC: %v", err) } err = createApp(f.ClientSet, app, deployTimeout) diff --git a/e2e/rbd.go b/e2e/rbd.go index 9d6187525..eddb7b9b2 100644 --- a/e2e/rbd.go +++ b/e2e/rbd.go @@ -794,6 +794,11 @@ var _ = Describe("RBD", func() { baseAppName := app.Name err = createPVCAndvalidatePV(f.ClientSet, pvc, deployTimeout) if err != nil { + if rwopMayFail(err) { + e2elog.Logf("RWOP is not supported: %v", err) + + return + } e2elog.Failf("failed to create PVC: %v", err) } // validate created backend rbd images @@ -828,6 +833,11 @@ var _ = Describe("RBD", func() { baseAppName := app.Name err = createPVCAndvalidatePV(f.ClientSet, pvc, deployTimeout) if err != nil { + if rwopMayFail(err) { + e2elog.Logf("RWOP is not supported: %v", err) + + return + } e2elog.Failf("failed to create PVC: %v", err) } // validate created backend rbd images diff --git a/e2e/utils.go b/e2e/utils.go index beab0c655..8f87acbc5 100644 --- a/e2e/utils.go +++ b/e2e/utils.go @@ -1492,3 +1492,22 @@ func retryKubectlArgs(namespace string, action kubectlAction, t int, args ...str return true, nil }) } + +// rwopSupported indicates that a test using RWOP is expected to succeed. If +// the accessMode is reported as invalid, rwopSupported will be set to false. +var rwopSupported = true + +// rwopMayFail returns true if the accessMode is not valid. k8s v1.22 requires +// a feature gate, which might not be set. In case the accessMode is invalid, +// the featuregate is not set, and testing RWOP is not possible. +func rwopMayFail(err error) bool { + if !rwopSupported { + return true + } + + if strings.Contains(err.Error(), `invalid: spec.accessModes: Unsupported value: "ReadWriteOncePod"`) { + rwopSupported = false + } + + return !rwopSupported +}