55 "fmt"
66 "strings"
77 "testing"
8+ "time"
89
910 "github.com/stretchr/testify/require"
1011 appsv1 "k8s.io/api/apps/v1"
@@ -17,6 +18,7 @@ import (
1718 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1819 "k8s.io/apimachinery/pkg/runtime"
1920 "k8s.io/apimachinery/pkg/util/wait"
21+ "k8s.io/apimachinery/pkg/watch"
2022
2123 "github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/operators/v1"
2224 "github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/operators/v1alpha1"
@@ -1217,9 +1219,31 @@ func TestCreateCSVWithOwnedAPIService(t *testing.T) {
12171219 csv .SetName (depName )
12181220
12191221 // Create the APIService CSV
1220- cleanupCSV , err := createCSV (t , c , crc , csv , testNamespace , false , true )
1222+ cleanupCSV , err := createCSV (t , c , crc , csv , testNamespace , false , false )
12211223 require .NoError (t , err )
1222- defer cleanupCSV ()
1224+ defer func () {
1225+ watcher , err := c .ApiregistrationV1Interface ().ApiregistrationV1 ().APIServices ().Watch (metav1.ListOptions {FieldSelector : "metadata.name=" + apiServiceName })
1226+ require .NoError (t , err )
1227+
1228+ deleted := make (chan struct {})
1229+ go func () {
1230+ events := watcher .ResultChan ()
1231+ for {
1232+ select {
1233+ case evt := <- events :
1234+ if evt .Type == watch .Deleted {
1235+ deleted <- struct {}{}
1236+ return
1237+ }
1238+ case <- time .After (pollDuration ):
1239+ require .FailNow (t , "apiservice not cleaned up after CSV deleted" )
1240+ }
1241+ }
1242+ }()
1243+
1244+ cleanupCSV ()
1245+ <- deleted
1246+ }()
12231247
12241248 fetchedCSV , err := fetchCSV (t , crc , csv .Name , testNamespace , csvSucceededChecker )
12251249 require .NoError (t , err )
0 commit comments