@@ -2792,10 +2792,13 @@ var _ = Describe("Install Plan", func() {
2792
2792
_ , err := fetchCatalogSourceOnStatus (crc , mainCatalogSourceName , generatedNamespace .GetName (), catalogSourceRegistryPodSynced ())
2793
2793
require .NoError (GinkgoT (), err )
2794
2794
2795
+ By ("Creating a Subscription" )
2795
2796
subscriptionName := genName ("sub-nginx-" )
2796
- subscriptionCleanup := createSubscriptionForCatalog (crc , generatedNamespace .GetName (), subscriptionName , mainCatalogSourceName , packageName , stableChannel , "" , operatorsv1alpha1 .ApprovalAutomatic )
2797
- defer subscriptionCleanup ()
2797
+ // Subscription is explitly deleted as part of the test to avoid CSV being recreated,
2798
+ // so ignore cleanup function
2799
+ _ = createSubscriptionForCatalog (crc , generatedNamespace .GetName (), subscriptionName , mainCatalogSourceName , packageName , stableChannel , "" , operatorsv1alpha1 .ApprovalAutomatic )
2798
2800
2801
+ By ("Attempt to get Subscription" )
2799
2802
subscription , err := fetchSubscription (crc , generatedNamespace .GetName (), subscriptionName , subscriptionHasInstallPlanChecker ())
2800
2803
require .NoError (GinkgoT (), err )
2801
2804
require .NotNil (GinkgoT (), subscription )
@@ -2867,22 +2870,38 @@ var _ = Describe("Install Plan", func() {
2867
2870
By ("Should have removed every matching step" )
2868
2871
require .Equal (GinkgoT (), 0 , len (expectedSteps ), "Actual resource steps do not match expected: %#v" , expectedSteps )
2869
2872
2870
- GinkgoT ().Logf ("deleting csv %s/%s" , generatedNamespace .GetName (), stableCSVName )
2871
- By ("Explicitly delete the CSV" )
2872
- err = crc .OperatorsV1alpha1 ().ClusterServiceVersions (generatedNamespace .GetName ()).Delete (context .Background (), stableCSVName , metav1.DeleteOptions {})
2873
+ By (fmt .Sprintf ("Explicitly deleting subscription %s/%s" , generatedNamespace .GetName (), subscriptionName ))
2874
+ err = crc .OperatorsV1alpha1 ().Subscriptions (generatedNamespace .GetName ()).Delete (context .Background (), subscriptionName , metav1.DeleteOptions {})
2873
2875
By ("Looking for no error OR IsNotFound error" )
2874
- if err != nil && apierrors .IsNotFound (err ) {
2875
- err = nil
2876
- }
2877
- require .NoError (GinkgoT (), err )
2876
+ require .NoError (GinkgoT (), client .IgnoreNotFound (err ))
2877
+
2878
+ By ("Waiting for the Subscription to delete" )
2879
+ err = waitForSubscriptionToDelete (generatedNamespace .GetName (), subscriptionName , crc )
2880
+ require .NoError (GinkgoT (), client .IgnoreNotFound (err ))
2878
2881
2882
+ By (fmt .Sprintf ("Explicitly deleting csv %s/%s" , generatedNamespace .GetName (), stableCSVName ))
2883
+ err = crc .OperatorsV1alpha1 ().ClusterServiceVersions (generatedNamespace .GetName ()).Delete (context .Background (), stableCSVName , metav1.DeleteOptions {})
2884
+ By ("Looking for no error OR IsNotFound error" )
2885
+ require .NoError (GinkgoT (), client .IgnoreNotFound (err ))
2886
+ By ("Waiting for the CSV to delete" )
2887
+ err = waitForCsvToDelete (generatedNamespace .GetName (), stableCSVName , crc )
2888
+ require .NoError (GinkgoT (), client .IgnoreNotFound (err ))
2889
+
2890
+ nCrs := 0
2891
+ nCrbs := 0
2892
+ By ("Waiting for CRBs and CRs and SAs to delete" )
2879
2893
Eventually (func () bool {
2894
+
2880
2895
crbs , err := c .KubernetesInterface ().RbacV1 ().ClusterRoleBindings ().List (context .Background (), metav1.ListOptions {LabelSelector : fmt .Sprintf ("%v=%v" , ownerutil .OwnerKey , stableCSVName )})
2881
2896
if err != nil {
2882
2897
GinkgoT ().Logf ("error getting crbs: %v" , err )
2883
2898
return false
2884
2899
}
2885
- if len (crbs .Items ) != 0 {
2900
+ if n := len (crbs .Items ); n != 0 {
2901
+ if n != nCrbs {
2902
+ GinkgoT ().Logf ("CRBs remaining: %v" , n )
2903
+ nCrbs = n
2904
+ }
2886
2905
return false
2887
2906
}
2888
2907
@@ -2891,18 +2910,23 @@ var _ = Describe("Install Plan", func() {
2891
2910
GinkgoT ().Logf ("error getting crs: %v" , err )
2892
2911
return false
2893
2912
}
2894
- if len (crs .Items ) != 0 {
2913
+ if n := len (crs .Items ); n != 0 {
2914
+ if n != nCrs {
2915
+ GinkgoT ().Logf ("CRs remaining: %v" , n )
2916
+ nCrs = n
2917
+ }
2895
2918
return false
2896
2919
}
2897
2920
2898
2921
_ , err = c .KubernetesInterface ().CoreV1 ().ServiceAccounts (generatedNamespace .GetName ()).Get (context .Background (), serviceAccountName , metav1.GetOptions {})
2899
- if err != nil && ! apierrors . IsNotFound ( err ) {
2922
+ if client . IgnoreNotFound ( err ) != nil {
2900
2923
GinkgoT ().Logf ("error getting sa %s/%s: %v" , generatedNamespace .GetName (), serviceAccountName , err )
2901
2924
return false
2902
2925
}
2903
2926
2904
2927
return true
2905
2928
}, pollDuration * 2 , pollInterval ).Should (BeTrue ())
2929
+ By ("Cleaning up the test" )
2906
2930
})
2907
2931
2908
2932
It ("CRD validation" , func () {
0 commit comments