github.com/percona/percona-xtradb-cluster-operator@v1.14.0/pkg/controller/pxc/suite_test.go (about) 1 package pxc 2 3 import ( 4 "os" 5 "path/filepath" 6 "testing" 7 8 cmscheme "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned/scheme" 9 . "github.com/onsi/ginkgo/v2" 10 . "github.com/onsi/gomega" 11 "k8s.io/apimachinery/pkg/util/yaml" 12 "k8s.io/client-go/kubernetes/scheme" 13 "k8s.io/client-go/rest" 14 "sigs.k8s.io/controller-runtime/pkg/client" 15 "sigs.k8s.io/controller-runtime/pkg/envtest" 16 logf "sigs.k8s.io/controller-runtime/pkg/log" 17 "sigs.k8s.io/controller-runtime/pkg/log/zap" 18 19 "github.com/percona/percona-xtradb-cluster-operator/clientcmd" 20 "github.com/percona/percona-xtradb-cluster-operator/pkg/apis" 21 api "github.com/percona/percona-xtradb-cluster-operator/pkg/apis/pxc/v1" 22 "github.com/percona/percona-xtradb-cluster-operator/version" 23 //+kubebuilder:scaffold:imports 24 ) 25 26 // These tests use Ginkgo (BDD-style Go testing framework). Refer to 27 // http://onsi.github.io/ginkgo/ to learn more about Ginkgo. 28 29 var ( 30 cfg *rest.Config 31 k8sClient client.Client 32 testEnv *envtest.Environment 33 ) 34 35 func TestAPIs(t *testing.T) { 36 RegisterFailHandler(Fail) 37 38 RunSpecs(t, "PXC Suite") 39 } 40 41 var _ = BeforeSuite(func() { 42 logf.SetLogger(zap.New(zap.WriteTo(GinkgoWriter), zap.UseDevMode(true))) 43 44 By("bootstrapping test environment") 45 testEnv = &envtest.Environment{ 46 CRDDirectoryPaths: []string{filepath.Join("..", "..", "..", "config", "crd", "bases")}, 47 ErrorIfCRDPathMissing: true, 48 } 49 50 var err error 51 cfg, err = testEnv.Start() 52 Expect(err).NotTo(HaveOccurred()) 53 Expect(cfg).NotTo(BeNil()) 54 55 err = apis.AddToScheme(scheme.Scheme) 56 Expect(err).NotTo(HaveOccurred()) 57 58 k8sClient, err = client.New(cfg, client.Options{Scheme: scheme.Scheme}) 59 Expect(err).NotTo(HaveOccurred()) 60 Expect(k8sClient).NotTo(BeNil()) 61 62 err = cmscheme.AddToScheme(k8sClient.Scheme()) 63 Expect(err).ToNot(HaveOccurred()) 64 }) 65 66 var _ = AfterSuite(func() { 67 By("tearing down the test environment") 68 err := testEnv.Stop() 69 Expect(err).NotTo(HaveOccurred()) 70 }) 71 72 // nolint:all 73 func reconciler() *ReconcilePerconaXtraDBCluster { 74 cli, _ := clientcmd.NewClient() 75 76 return (&ReconcilePerconaXtraDBCluster{ 77 client: k8sClient, 78 scheme: k8sClient.Scheme(), 79 crons: NewCronRegistry(), 80 lockers: newLockStore(), 81 clientcmd: cli, 82 serverVersion: &version.ServerVersion{ 83 Platform: version.PlatformKubernetes, 84 }, 85 }) 86 } 87 88 func readDefaultCR(name, namespace string) (*api.PerconaXtraDBCluster, error) { 89 data, err := os.ReadFile(filepath.Join("..", "..", "..", "deploy", "cr.yaml")) 90 if err != nil { 91 return nil, err 92 } 93 94 cr := &api.PerconaXtraDBCluster{} 95 96 if err := yaml.Unmarshal(data, cr); err != nil { 97 return nil, err 98 } 99 100 cr.Name = name 101 cr.Namespace = namespace 102 cr.Spec.InitImage = "perconalab/percona-xtradb-cluster-operator:main" 103 b := false 104 cr.Spec.PXC.AutoRecovery = &b 105 return cr, nil 106 }