github.com/operator-framework/operator-lifecycle-manager@v0.30.0/pkg/controller/operators/openshift/suite_test.go (about) 1 package openshift 2 3 import ( 4 "context" 5 "path/filepath" 6 "testing" 7 "time" 8 9 . "github.com/onsi/ginkgo/v2" 10 . "github.com/onsi/gomega" 11 configv1 "github.com/openshift/api/config/v1" 12 "github.com/operator-framework/api/crds" 13 apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" 14 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 15 ctrl "sigs.k8s.io/controller-runtime" 16 "sigs.k8s.io/controller-runtime/pkg/client" 17 "sigs.k8s.io/controller-runtime/pkg/envtest" 18 logf "sigs.k8s.io/controller-runtime/pkg/log" 19 "sigs.k8s.io/controller-runtime/pkg/log/zap" 20 metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server" 21 ) 22 23 func TestControllers(t *testing.T) { 24 RegisterFailHandler(Fail) 25 26 RunSpecs(t, "OpenShift Suite") 27 } 28 29 var ( 30 testEnv *envtest.Environment 31 k8sClient client.Client 32 ctx context.Context 33 fixedNow NowFunc 34 35 syncCh chan error 36 ) 37 38 const ( 39 clusterOperator = "operator-lifecycle-manager" 40 controllerNamespace = "default" 41 timeout = time.Second * 20 42 clusterVersion = "1.0.0+cluster" 43 controllerVersion = "1.0.0+controller" 44 ) 45 46 var _ = BeforeSuite(func() { 47 logf.SetLogger(zap.New(zap.WriteTo(GinkgoWriter), zap.UseDevMode(true))) 48 49 base := filepath.Join("..", "..", "..", "..", "vendor", "github.com", "openshift", "api", "config", "v1") 50 testEnv = &envtest.Environment{ 51 ErrorIfCRDPathMissing: true, 52 CRDs: []*apiextensionsv1.CustomResourceDefinition{ 53 crds.ClusterServiceVersion(), 54 }, 55 CRDDirectoryPaths: []string{ 56 filepath.Join(base, "0000_00_cluster-version-operator_01_clusteroperator.crd.yaml"), 57 filepath.Join(base, "0000_00_cluster-version-operator_01_clusterversion.crd.yaml"), 58 }, 59 } 60 61 cfg, err := testEnv.Start() 62 Expect(err).ToNot(HaveOccurred()) 63 Expect(cfg).ToNot(BeNil()) 64 65 ctx = context.Background() 66 now := metav1.Date(2021, time.April, 13, 0, 0, 0, 0, time.Local) 67 fixedNow = func() metav1.Time { 68 return now 69 } 70 71 mgr, err := ctrl.NewManager(cfg, ctrl.Options{ 72 Metrics: metricsserver.Options{BindAddress: "0"}, 73 }) 74 Expect(err).ToNot(HaveOccurred()) 75 76 k8sClient = mgr.GetClient() 77 78 syncCh = make(chan error) 79 reconciler, err := NewClusterOperatorReconciler( 80 WithClient(k8sClient), 81 WithScheme(mgr.GetScheme()), 82 WithName(clusterOperator), 83 WithNamespace(controllerNamespace), 84 WithSyncChannel(syncCh), 85 WithOLMOperator(), 86 WithNow(fixedNow), 87 WithTargetVersions( 88 configv1.OperandVersion{ 89 Name: "operator", 90 Version: clusterVersion, 91 }, 92 configv1.OperandVersion{ 93 Name: clusterOperator, 94 Version: controllerVersion, 95 }, 96 ), 97 ) 98 Expect(err).ToNot(HaveOccurred()) 99 Expect(reconciler).ToNot(BeNil()) 100 101 Expect(reconciler.SetupWithManager(mgr)).To(Succeed()) 102 103 go func() { 104 defer GinkgoRecover() 105 Expect(mgr.Start(ctrl.SetupSignalHandler())).To(Succeed()) 106 }() 107 }) 108 109 var _ = AfterSuite(func() { 110 By("tearing down the test environment") 111 close(syncCh) 112 testEnv.Stop() 113 })