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  }