github.com/operator-framework/operator-lifecycle-manager@v0.30.0/test/e2e/util/e2e_determined_client.go (about) 1 package util 2 3 import ( 4 "context" 5 6 k8scontrollerclient "sigs.k8s.io/controller-runtime/pkg/client" 7 8 . "github.com/onsi/gomega" 9 ) 10 11 // DeterminedE2EClient wraps E2eClient calls in an Eventually assertion to keep trying 12 // or bail after some time if unsuccessful 13 type DeterminedE2EClient struct { 14 *E2EKubeClient 15 } 16 17 func NewDeterminedClient(e2eKubeClient *E2EKubeClient) *DeterminedE2EClient { 18 return &DeterminedE2EClient{ 19 e2eKubeClient, 20 } 21 } 22 23 func (m *DeterminedE2EClient) Create(context context.Context, obj k8scontrollerclient.Object, options ...k8scontrollerclient.CreateOption) error { 24 m.keepTrying(func() error { 25 err := m.E2EKubeClient.Create(context, obj, options...) 26 return err 27 }) 28 return nil 29 } 30 31 func (m *DeterminedE2EClient) Update(context context.Context, obj k8scontrollerclient.Object, options ...k8scontrollerclient.UpdateOption) error { 32 m.keepTrying(func() error { 33 return m.E2EKubeClient.Update(context, obj, options...) 34 }) 35 return nil 36 } 37 38 func (m *DeterminedE2EClient) Delete(context context.Context, obj k8scontrollerclient.Object, options ...k8scontrollerclient.DeleteOption) error { 39 m.keepTrying(func() error { 40 return m.E2EKubeClient.Delete(context, obj, options...) 41 }) 42 return nil 43 } 44 45 func (m *DeterminedE2EClient) Patch(context context.Context, obj k8scontrollerclient.Object, patch k8scontrollerclient.Patch, options ...k8scontrollerclient.PatchOption) error { 46 m.keepTrying(func() error { 47 return m.E2EKubeClient.Patch(context, obj, patch, options...) 48 }) 49 return nil 50 } 51 52 func (m *DeterminedE2EClient) keepTrying(fn func() error) { 53 Eventually(fn).Should(Succeed()) 54 }