github.com/oam-dev/kubevela@v1.9.11/pkg/rollout/suit_test.go (about) 1 /* 2 Copyright 2021 The KubeVela Authors. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package rollout 18 19 import ( 20 "context" 21 "path/filepath" 22 "testing" 23 "time" 24 25 "k8s.io/client-go/discovery" 26 ocmclusterv1 "open-cluster-management.io/api/cluster/v1" 27 ocmclusterv1alpha1 "open-cluster-management.io/api/cluster/v1alpha1" 28 ocmworkv1 "open-cluster-management.io/api/work/v1" 29 30 v12 "k8s.io/api/core/v1" 31 crdv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" 32 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 33 34 . "github.com/onsi/ginkgo/v2" 35 . "github.com/onsi/gomega" 36 "k8s.io/apimachinery/pkg/runtime" 37 clientgoscheme "k8s.io/client-go/kubernetes/scheme" 38 "k8s.io/client-go/rest" 39 "sigs.k8s.io/controller-runtime/pkg/client" 40 "sigs.k8s.io/controller-runtime/pkg/envtest" 41 logf "sigs.k8s.io/controller-runtime/pkg/log" 42 "sigs.k8s.io/controller-runtime/pkg/log/zap" 43 44 kruisev1alpha1 "github.com/openkruise/rollouts/api/v1alpha1" 45 46 "github.com/kubevela/workflow/pkg/cue/packages" 47 48 coreoam "github.com/oam-dev/kubevela/apis/core.oam.dev" 49 // +kubebuilder:scaffold:imports 50 ) 51 52 var cfg *rest.Config 53 var scheme *runtime.Scheme 54 var k8sClient client.Client 55 var testEnv *envtest.Environment 56 var pd *packages.PackageDiscover 57 var testns string 58 var dc *discovery.DiscoveryClient 59 60 func TestAddon(t *testing.T) { 61 RegisterFailHandler(Fail) 62 RunSpecs(t, "Kruise rollout Suite test") 63 } 64 65 var _ = BeforeSuite(func() { 66 logf.SetLogger(zap.New(zap.UseDevMode(true), zap.WriteTo(GinkgoWriter))) 67 By("bootstrapping test environment") 68 useExistCluster := false 69 testEnv = &envtest.Environment{ 70 ControlPlaneStartTimeout: time.Minute, 71 ControlPlaneStopTimeout: time.Minute, 72 CRDDirectoryPaths: []string{filepath.Join("..", "..", "charts", "vela-core", "crds"), filepath.Join("", "testdata")}, 73 UseExistingCluster: &useExistCluster, 74 } 75 76 var err error 77 cfg, err = testEnv.Start() 78 Expect(err).ToNot(HaveOccurred()) 79 Expect(cfg).ToNot(BeNil()) 80 scheme = runtime.NewScheme() 81 Expect(coreoam.AddToScheme(scheme)).NotTo(HaveOccurred()) 82 Expect(clientgoscheme.AddToScheme(scheme)).NotTo(HaveOccurred()) 83 Expect(crdv1.AddToScheme(scheme)).NotTo(HaveOccurred()) 84 _ = ocmclusterv1alpha1.Install(scheme) 85 _ = ocmclusterv1.Install(scheme) 86 _ = ocmworkv1.Install(scheme) 87 _ = kruisev1alpha1.AddToScheme(scheme) 88 k8sClient, err = client.New(cfg, client.Options{Scheme: scheme}) 89 Expect(err).ToNot(HaveOccurred()) 90 Expect(k8sClient).ToNot(BeNil()) 91 92 dc, err = discovery.NewDiscoveryClientForConfig(cfg) 93 Expect(err).ToNot(HaveOccurred()) 94 Expect(dc).ShouldNot(BeNil()) 95 96 pd, err = packages.NewPackageDiscover(cfg) 97 Expect(err).ToNot(HaveOccurred()) 98 Expect(pd).ToNot(BeNil()) 99 testns = "vela-system" 100 Expect(k8sClient.Create(context.Background(), 101 &v12.Namespace{TypeMeta: metav1.TypeMeta{APIVersion: "v1", Kind: "Namespace"}, ObjectMeta: metav1.ObjectMeta{ 102 Name: testns, 103 }})) 104 }) 105 106 var _ = AfterSuite(func() { 107 By("tearing down the test environment") 108 err := testEnv.Stop() 109 Expect(err).ToNot(HaveOccurred()) 110 })