github.com/kubeflow/training-operator@v1.7.0/pkg/controller.v1/paddlepaddle/paddlepaddle_controller_suite_test.go (about) 1 // Copyright 2022 The Kubeflow Authors 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package paddle 16 17 import ( 18 "context" 19 "path/filepath" 20 "testing" 21 22 kubeflowv1 "github.com/kubeflow/training-operator/pkg/apis/kubeflow.org/v1" 23 "github.com/kubeflow/training-operator/pkg/controller.v1/common" 24 25 . "github.com/onsi/ginkgo/v2" 26 "github.com/onsi/gomega" 27 . "github.com/onsi/gomega" 28 "k8s.io/client-go/kubernetes/scheme" 29 ctrl "sigs.k8s.io/controller-runtime" 30 "sigs.k8s.io/controller-runtime/pkg/client" 31 "sigs.k8s.io/controller-runtime/pkg/envtest" 32 logf "sigs.k8s.io/controller-runtime/pkg/log" 33 "sigs.k8s.io/controller-runtime/pkg/log/zap" 34 "volcano.sh/apis/pkg/apis/scheduling/v1beta1" 35 //+kubebuilder:scaffold:imports 36 ) 37 38 // These tests use Ginkgo (BDD-style Go testing framework). Refer to 39 // http://onsi.github.io/ginkgo/ to learn more about Ginkgo. 40 41 var ( 42 testK8sClient client.Client 43 testEnv *envtest.Environment 44 testCtx context.Context 45 testCancel context.CancelFunc 46 ) 47 48 func TestAPIs(t *testing.T) { 49 RegisterFailHandler(Fail) 50 51 RunSpecs(t, "Controller Suite") 52 } 53 54 var _ = BeforeSuite(func() { 55 logf.SetLogger(zap.New(zap.WriteTo(GinkgoWriter), zap.UseDevMode(true))) 56 57 testCtx, testCancel = context.WithCancel(context.TODO()) 58 59 By("bootstrapping test environment") 60 testEnv = &envtest.Environment{ 61 CRDDirectoryPaths: []string{filepath.Join("..", "..", "..", "manifests", "base", "crds")}, 62 ErrorIfCRDPathMissing: true, 63 } 64 65 cfg, err := testEnv.Start() 66 Expect(err).NotTo(HaveOccurred()) 67 Expect(cfg).NotTo(BeNil()) 68 69 err = v1beta1.AddToScheme(scheme.Scheme) 70 Expect(err).NotTo(HaveOccurred()) 71 err = kubeflowv1.AddToScheme(scheme.Scheme) 72 Expect(err).NotTo(HaveOccurred()) 73 74 //+kubebuilder:scaffold:scheme 75 76 testK8sClient, err = client.New(cfg, client.Options{Scheme: scheme.Scheme}) 77 Expect(err).NotTo(HaveOccurred()) 78 Expect(testK8sClient).NotTo(BeNil()) 79 80 mgr, err := ctrl.NewManager(cfg, ctrl.Options{ 81 MetricsBindAddress: "0", 82 }) 83 Expect(err).NotTo(gomega.HaveOccurred()) 84 85 gangSchedulingSetupFunc := common.GenNonGangSchedulerSetupFunc() 86 r := NewReconciler(mgr, gangSchedulingSetupFunc) 87 88 Expect(r.SetupWithManager(mgr, 1)).NotTo(gomega.HaveOccurred()) 89 90 go func() { 91 defer GinkgoRecover() 92 err = mgr.Start(testCtx) 93 Expect(err).ToNot(HaveOccurred(), "failed to run manager") 94 }() 95 }) 96 97 var _ = AfterSuite(func() { 98 By("tearing down the test environment") 99 testCancel() 100 err := testEnv.Stop() 101 Expect(err).NotTo(HaveOccurred()) 102 })