From 2e93214e94350a2633a7b80b753cdeabbb569558 Mon Sep 17 00:00:00 2001 From: Tiger Kaovilai Date: Thu, 12 May 2022 22:30:49 -0400 Subject: [PATCH] subscriptionsuitetest now just check for deployment env to reduce flakes --- tests/e2e/lib/registry_helpers.go | 26 +++++++++++++-------- tests/e2e/lib/restic_helpers.go | 17 ++++++++++++++ tests/e2e/lib/velero_helpers.go | 18 +++++++++++++++ tests/e2e/subscription_suite_test.go | 34 ++++++++++++++++------------ 4 files changed, 71 insertions(+), 24 deletions(-) diff --git a/tests/e2e/lib/registry_helpers.go b/tests/e2e/lib/registry_helpers.go index 0a2c673b2f..fd86e75191 100755 --- a/tests/e2e/lib/registry_helpers.go +++ b/tests/e2e/lib/registry_helpers.go @@ -14,18 +14,10 @@ import ( func AreRegistryDeploymentsAvailable(namespace string) wait.ConditionFunc { log.Printf("Checking for available registry deployments") return func() (bool, error) { - client, err := setUpClient() + deploymentList, err := GetRegistryDeploymentList(namespace) if err != nil { return false, err } - registryListOptions := metav1.ListOptions{ - LabelSelector: "app.kubernetes.io/component=Registry", - } - // get pods in the oadp-operator-e2e namespace with label selector - deploymentList, err := client.AppsV1().Deployments(namespace).List(context.TODO(), registryListOptions) - if err != nil { - return false, nil - } if len(deploymentList.Items) == 0 { return false, fmt.Errorf("registry deployment is not yet created") } @@ -40,3 +32,19 @@ func AreRegistryDeploymentsAvailable(namespace string) wait.ConditionFunc { return true, nil } } + +func GetRegistryDeploymentList(namespace string) (*appsv1.DeploymentList, error) { + client, err := setUpClient() + if err != nil { + return nil, err + } + registryListOptions := metav1.ListOptions{ + LabelSelector: "app.kubernetes.io/component=Registry", + } + // get pods in the oadp-operator-e2e namespace with label selector + deploymentList, err := client.AppsV1().Deployments(namespace).List(context.TODO(), registryListOptions) + if err != nil { + return nil, err + } + return deploymentList, nil +} diff --git a/tests/e2e/lib/restic_helpers.go b/tests/e2e/lib/restic_helpers.go index 1c5967f20d..42221bc1e2 100755 --- a/tests/e2e/lib/restic_helpers.go +++ b/tests/e2e/lib/restic_helpers.go @@ -6,6 +6,7 @@ import ( "time" oadpv1alpha1 "github.com/openshift/oadp-operator/api/v1alpha1" + appsv1 "k8s.io/api/apps/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/wait" @@ -177,3 +178,19 @@ func ResticDaemonSetHasNodeSelector(namespace, key, value string) wait.Condition return false, err } } + +func GetResticDaemonsetList(namespace string) (*appsv1.DaemonSetList, error) { + client, err := setUpClient() + if err != nil { + return nil, err + } + registryListOptions := metav1.ListOptions{ + LabelSelector: "component=velero", + } + // get pods in the oadp-operator-e2e namespace with label selector + deploymentList, err := client.AppsV1().DaemonSets(namespace).List(context.TODO(), registryListOptions) + if err != nil { + return nil, err + } + return deploymentList, nil +} diff --git a/tests/e2e/lib/velero_helpers.go b/tests/e2e/lib/velero_helpers.go index d5960c4014..eb95c1cd68 100644 --- a/tests/e2e/lib/velero_helpers.go +++ b/tests/e2e/lib/velero_helpers.go @@ -19,6 +19,8 @@ import ( veleroClientset "github.com/vmware-tanzu/velero/pkg/generated/clientset/versioned" "github.com/vmware-tanzu/velero/pkg/label" "github.com/vmware-tanzu/velero/pkg/restic" + appsv1 "k8s.io/api/apps/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/controller-runtime/pkg/client" ) @@ -155,3 +157,19 @@ func RestoreErrorLogs(ocClient client.Client, restore velero.Restore) []string { } return logLines } + +func GetVeleroDeploymentList(namespace string) (*appsv1.DeploymentList, error) { + client, err := setUpClient() + if err != nil { + return nil, err + } + registryListOptions := metav1.ListOptions{ + LabelSelector: "component=velero", + } + // get pods in the oadp-operator-e2e namespace with label selector + deploymentList, err := client.AppsV1().Deployments(namespace).List(context.TODO(), registryListOptions) + if err != nil { + return nil, err + } + return deploymentList, nil +} diff --git a/tests/e2e/subscription_suite_test.go b/tests/e2e/subscription_suite_test.go index cd9ac0360e..72c8e80a23 100644 --- a/tests/e2e/subscription_suite_test.go +++ b/tests/e2e/subscription_suite_test.go @@ -2,7 +2,6 @@ package e2e_test import ( "context" - "fmt" "log" "time" @@ -82,22 +81,27 @@ var _ = Describe("Subscription Config Suite Test", func() { } if s.Spec.Config != nil && s.Spec.Config.Env != nil { // get pod env vars - log.Printf("Getting velero pods") - podList, err := GetVeleroPods(namespace) + log.Printf("Getting deployments") + vd, err := GetVeleroDeploymentList(namespace) Expect(err).NotTo(HaveOccurred()) - log.Printf("Getting pods containers env vars") - bl := dpaCR.CustomResource.Spec.BackupLocations[0] - for _, podInfo := range podList.Items { - // we care about pods that have labels control-plane=controller-manager, component=velero, "component": "oadp-" + bsl.Name + "-" + bsl.Spec.Provider + "-registry", - if podInfo.Labels["control-plane"] == "controller-manager" || - podInfo.Labels["app.kubernetes.io/name"] == "velero" || - podInfo.Labels["component"] == "oadp-"+fmt.Sprintf("%s-%d", dpaCR.Name, 1)+"-"+bl.Velero.Provider+"-registry" { - log.Printf("Checking env vars are passed to each container in " + podInfo.Name) - for _, container := range podInfo.Spec.Containers { + rd, err := GetRegistryDeploymentList(namespace) + Expect(err).NotTo(HaveOccurred()) + log.Printf("Getting daemonsets") + rds, err := GetResticDaemonsetList(namespace) + Expect(err).NotTo(HaveOccurred()) + for _, env := range s.Spec.Config.Env { + for _, deployment := range append(vd.Items, rd.Items...) { + log.Printf("Checking env vars are passed to deployment " + deployment.Name) + for _, container := range deployment.Spec.Template.Spec.Containers { + log.Printf("Checking env vars are passed to container " + container.Name) + Expect(container.Env).To(ContainElement(env)) + } + } + for _, daemonset := range rds.Items { + log.Printf("Checking env vars are passed to daemonset " + daemonset.Name) + for _, container := range daemonset.Spec.Template.Spec.Containers { log.Printf("Checking env vars are passed to container " + container.Name) - for _, env := range s.Spec.Config.Env { - Expect(container.Env).To(ContainElement(env)) - } + Expect(container.Env).To(ContainElement(env)) } } }