From 7b1dd0719a0f7e4dc2e4af2c61682b10f5b7e7da Mon Sep 17 00:00:00 2001 From: alecmerdler Date: Wed, 13 Mar 2019 14:10:59 -0400 Subject: [PATCH] end-to-end test for cleaning up apiservices after CSV delete --- test/e2e/csv_e2e_test.go | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/test/e2e/csv_e2e_test.go b/test/e2e/csv_e2e_test.go index 38a76da3023..f5cfa922359 100644 --- a/test/e2e/csv_e2e_test.go +++ b/test/e2e/csv_e2e_test.go @@ -5,6 +5,7 @@ import ( "fmt" "strings" "testing" + "time" "github.com/stretchr/testify/require" appsv1 "k8s.io/api/apps/v1" @@ -18,6 +19,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/util/wait" + "k8s.io/apimachinery/pkg/watch" "github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/operators/v1alpha1" "github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/operators/v1alpha2" @@ -1218,9 +1220,31 @@ func TestCreateCSVWithOwnedAPIService(t *testing.T) { csv.SetName(depName) // Create the APIService CSV - cleanupCSV, err := createCSV(t, c, crc, csv, testNamespace, false, true) + cleanupCSV, err := createCSV(t, c, crc, csv, testNamespace, false, false) require.NoError(t, err) - defer cleanupCSV() + defer func() { + watcher, err := c.ApiregistrationV1Interface().ApiregistrationV1().APIServices().Watch(metav1.ListOptions{FieldSelector: "metadata.name=" + apiServiceName}) + require.NoError(t, err) + + deleted := make(chan struct{}) + go func() { + events := watcher.ResultChan() + for { + select { + case evt := <-events: + if evt.Type == watch.Deleted { + deleted <- struct{}{} + return + } + case <-time.After(pollDuration): + require.FailNow(t, "apiservice not cleaned up after CSV deleted") + } + } + }() + + cleanupCSV() + <-deleted + }() fetchedCSV, err := fetchCSV(t, crc, csv.Name, testNamespace, csvSucceededChecker) require.NoError(t, err)