From 72aef2b5dc10796c6364e454b8e4bfb031a23106 Mon Sep 17 00:00:00 2001 From: Stephen Greene Date: Fri, 15 Jan 2021 11:31:24 -0500 Subject: [PATCH] test/e2e: Re-enable TestCoreDNSImageUprade test/e2e/operator_test.go: Re-enable TestCoreDNSImageUpgrade by adding a cluster version override for the DNS operator deployment. This override allows TestCoreDNSImageUpgrade to safely modify the DNS deployment (specifically the operator's container image field) without contention from the CVO. The cluster version override is removed at the end of the test via a `defer` block. --- test/e2e/operator_test.go | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/test/e2e/operator_test.go b/test/e2e/operator_test.go index 86e2958a8..e53a615e4 100644 --- a/test/e2e/operator_test.go +++ b/test/e2e/operator_test.go @@ -177,13 +177,44 @@ func TestDefaultDNSSteadyConditions(t *testing.T) { } func TestCoreDNSImageUpgrade(t *testing.T) { - // TODO: Revise this test and remove skip. - // See https://bugzilla.redhat.com/show_bug.cgi?id=1912522 - t.Skip("skipping TestCoreDNSImageUpgrade as this test is fundamentally broken") cl, err := getClient() if err != nil { t.Fatal(err) } + // Override the cluster version to temporarily disable CVO updates to the DNS operator deployment. + deplOverride := configv1.ComponentOverride{ + Kind: "Deployment", + Group: "apps/v1", + Namespace: "openshift-dns-operator", + Name: "dns-operator", + Unmanaged: true, + } + + clusterVersion := &configv1.ClusterVersion{} + cvName := types.NamespacedName{Namespace: "default", Name: "version"} + + if err := cl.Get(context.TODO(), cvName, clusterVersion); err != nil { + t.Fatalf("failed to get cluster version %s/%s: %v", cvName.Namespace, cvName.Name, err) + } + + clusterVersion.Spec.Overrides = []configv1.ComponentOverride{deplOverride} + + if err := cl.Update(context.TODO(), clusterVersion); err != nil { + t.Fatalf("failed to update cluster version %s/%s: %v", cvName.Namespace, cvName.Name, err) + } + + // Remove cluster version override once the test finishes. + defer func() { + if err := cl.Get(context.TODO(), cvName, clusterVersion); err != nil { + t.Fatalf("failed to get cluster version %s/%s: %v", cvName.Namespace, cvName.Name, err) + } + + clusterVersion.Spec.Overrides = []configv1.ComponentOverride{} + + if err := cl.Update(context.TODO(), clusterVersion); err != nil { + t.Fatalf("failed to update cluster version %s/%s: %v", cvName.Namespace, cvName.Name, err) + } + }() deployment := &appsv1.Deployment{} namespacedName := types.NamespacedName{Namespace: "openshift-dns-operator", Name: "dns-operator"}