mirror of
https://github.com/kubevela/kubevela.git
synced 2026-08-23 22:46:53 +00:00
solve failed test add compatibility test for old crd add app ns for cli modify compatibility test solve compatibility problem add testing for GetDefinition func with cluster scope CRD generate code for compatibility-test move testdata generate to makefile optimize ci pipeline for compatibility-test
119 lines
4.0 KiB
Go
119 lines
4.0 KiB
Go
package plugins
|
|
|
|
import (
|
|
"context"
|
|
"io/ioutil"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/oam-dev/kubevela/pkg/utils/system"
|
|
|
|
"github.com/ghodss/yaml"
|
|
. "github.com/onsi/ginkgo"
|
|
. "github.com/onsi/gomega"
|
|
corev1 "k8s.io/api/core/v1"
|
|
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/apimachinery/pkg/runtime"
|
|
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
|
|
"k8s.io/client-go/rest"
|
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
|
"sigs.k8s.io/controller-runtime/pkg/envtest"
|
|
"sigs.k8s.io/controller-runtime/pkg/envtest/printer"
|
|
logf "sigs.k8s.io/controller-runtime/pkg/log"
|
|
"sigs.k8s.io/controller-runtime/pkg/log/zap"
|
|
|
|
corev1alpha2 "github.com/oam-dev/kubevela/apis/core.oam.dev"
|
|
"github.com/oam-dev/kubevela/apis/core.oam.dev/v1alpha2"
|
|
|
|
"github.com/oam-dev/kubevela/pkg/oam/util"
|
|
// +kubebuilder:scaffold:imports
|
|
)
|
|
|
|
// These tests use Ginkgo (BDD-style Go testing framework). Refer to
|
|
// http://onsi.github.io/ginkgo/ to learn more about Ginkgo.
|
|
|
|
var cfg *rest.Config
|
|
var scheme *runtime.Scheme
|
|
var k8sClient client.Client
|
|
var testEnv *envtest.Environment
|
|
var definitionDir string
|
|
var td v1alpha2.TraitDefinition
|
|
var wd, websvcWD v1alpha2.WorkloadDefinition
|
|
|
|
func TestAPIs(t *testing.T) {
|
|
RegisterFailHandler(Fail)
|
|
|
|
RunSpecsWithDefaultAndCustomReporters(t,
|
|
"CLI Suite",
|
|
[]Reporter{printer.NewlineReporter{}})
|
|
}
|
|
|
|
var _ = BeforeSuite(func(done Done) {
|
|
logf.SetLogger(zap.New(zap.UseDevMode(true), zap.WriteTo(GinkgoWriter)))
|
|
ctx := context.Background()
|
|
By("bootstrapping test environment")
|
|
useExistCluster := false
|
|
testEnv = &envtest.Environment{
|
|
CRDDirectoryPaths: []string{filepath.Join("..", "..", "charts", "vela-core", "crds")},
|
|
UseExistingCluster: &useExistCluster,
|
|
}
|
|
|
|
var err error
|
|
cfg, err = testEnv.Start()
|
|
Expect(err).ToNot(HaveOccurred())
|
|
Expect(cfg).ToNot(BeNil())
|
|
scheme = runtime.NewScheme()
|
|
Expect(corev1alpha2.AddToScheme(scheme)).NotTo(HaveOccurred())
|
|
Expect(clientgoscheme.AddToScheme(scheme)).NotTo(HaveOccurred())
|
|
Expect(v1beta1.AddToScheme(scheme)).NotTo(HaveOccurred())
|
|
k8sClient, err = client.New(cfg, client.Options{Scheme: scheme})
|
|
Expect(err).ToNot(HaveOccurred())
|
|
Expect(k8sClient).ToNot(BeNil())
|
|
|
|
definitionDir, err = system.GetCapabilityDir()
|
|
Expect(err).Should(BeNil())
|
|
Expect(os.MkdirAll(definitionDir, 0755)).Should(BeNil())
|
|
|
|
Expect(k8sClient.Create(ctx, &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: DefinitionNamespace}})).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{}))
|
|
|
|
traitdata, err := ioutil.ReadFile("testdata/traitDef.yaml")
|
|
Expect(err).Should(BeNil())
|
|
Expect(yaml.Unmarshal(traitdata, &td)).Should(BeNil())
|
|
|
|
td.Namespace = DefinitionNamespace
|
|
logf.Log.Info("Creating trait definition", "data", td)
|
|
Expect(k8sClient.Create(ctx, &td)).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{}))
|
|
|
|
workloaddata, err := ioutil.ReadFile("testdata/workloadDef.yaml")
|
|
Expect(err).Should(BeNil())
|
|
|
|
Expect(yaml.Unmarshal(workloaddata, &wd)).Should(BeNil())
|
|
|
|
wd.Namespace = DefinitionNamespace
|
|
logf.Log.Info("Creating workload definition", "data", wd)
|
|
Expect(k8sClient.Create(ctx, &wd)).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{}))
|
|
|
|
websvcWorkloadData, err := ioutil.ReadFile("testdata/websvcWorkloadDef.yaml")
|
|
Expect(err).Should(BeNil())
|
|
|
|
Expect(yaml.Unmarshal(websvcWorkloadData, &websvcWD)).Should(BeNil())
|
|
websvcWD.Namespace = DefinitionNamespace
|
|
logf.Log.Info("Creating workload definition whose CUE template from remote", "data", &websvcWD)
|
|
Expect(k8sClient.Create(ctx, &websvcWD)).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{}))
|
|
|
|
close(done)
|
|
}, 60)
|
|
|
|
var DefinitionNamespace = "vela-system"
|
|
var _ = AfterSuite(func() {
|
|
By("tearing down the test environment")
|
|
_ = k8sClient.Delete(context.Background(), &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: DefinitionNamespace}})
|
|
_ = k8sClient.Delete(context.Background(), &td)
|
|
_ = k8sClient.Delete(context.Background(), &wd)
|
|
_ = k8sClient.Delete(context.Background(), &websvcWD)
|
|
err := testEnv.Stop()
|
|
Expect(err).ToNot(HaveOccurred())
|
|
})
|