Let unit tests run in different namespaces to avoid resource conflict

This commit is contained in:
Ta-Ching Chen
2020-01-24 01:33:12 +08:00
parent 4923708836
commit 49ec161c5e
3 changed files with 59 additions and 30 deletions
+22 -9
View File
@@ -22,13 +22,17 @@ import (
"testing"
"time"
uuid "github.com/satori/go.uuid"
"go.uber.org/zap"
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
fv1 "github.com/fission/fission/pkg/apis/core/v1"
genInformerCoreV1 "github.com/fission/fission/pkg/apis/genclient/clientset/versioned/typed/core/v1"
)
var testNS = metav1.NamespaceDefault
func panicIf(err error) {
if err != nil {
log.Panicf("err: %v", err)
@@ -44,7 +48,7 @@ func functionTests(crdClient genInformerCoreV1.CoreV1Interface) {
},
ObjectMeta: metav1.ObjectMeta{
Name: "hello",
Namespace: metav1.NamespaceDefault,
Namespace: testNS,
},
Spec: fv1.FunctionSpec{
Package: fv1.FunctionPackageRef{
@@ -61,7 +65,7 @@ func functionTests(crdClient genInformerCoreV1.CoreV1Interface) {
}
// Test function CRUD
fi := crdClient.Functions(metav1.NamespaceDefault)
fi := crdClient.Functions(testNS)
// cleanup from old crashed tests, ignore errors
fi.Delete(function.ObjectMeta.Name, nil)
@@ -144,7 +148,7 @@ func environmentTests(crdClient genInformerCoreV1.CoreV1Interface) {
},
ObjectMeta: metav1.ObjectMeta{
Name: "hello",
Namespace: metav1.NamespaceDefault,
Namespace: testNS,
},
Spec: fv1.EnvironmentSpec{
Version: 1,
@@ -159,7 +163,7 @@ func environmentTests(crdClient genInformerCoreV1.CoreV1Interface) {
}
// Test environment CRUD
ei := crdClient.Environments(metav1.NamespaceDefault)
ei := crdClient.Environments(testNS)
// cleanup from old crashed tests, ignore errors
ei.Delete(environment.ObjectMeta.Name, nil)
@@ -238,7 +242,7 @@ func httpTriggerTests(crdClient genInformerCoreV1.CoreV1Interface) {
},
ObjectMeta: metav1.ObjectMeta{
Name: "hello",
Namespace: metav1.NamespaceDefault,
Namespace: testNS,
},
Spec: fv1.HTTPTriggerSpec{
RelativeURL: "/hi",
@@ -251,7 +255,7 @@ func httpTriggerTests(crdClient genInformerCoreV1.CoreV1Interface) {
}
// Test httpTrigger CRUD
ei := crdClient.HTTPTriggers(metav1.NamespaceDefault)
ei := crdClient.HTTPTriggers(testNS)
// cleanup from old crashed tests, ignore errors
ei.Delete(httpTrigger.ObjectMeta.Name, nil)
@@ -330,7 +334,7 @@ func kubernetesWatchTriggerTests(crdClient genInformerCoreV1.CoreV1Interface) {
},
ObjectMeta: metav1.ObjectMeta{
Name: "hello",
Namespace: metav1.NamespaceDefault,
Namespace: testNS,
},
Spec: fv1.KubernetesWatchTriggerSpec{
Namespace: "foo",
@@ -346,7 +350,7 @@ func kubernetesWatchTriggerTests(crdClient genInformerCoreV1.CoreV1Interface) {
}
// Test kubernetesWatchTrigger CRUD
ei := crdClient.KubernetesWatchTriggers(metav1.NamespaceDefault)
ei := crdClient.KubernetesWatchTriggers(testNS)
// cleanup from old crashed tests, ignore errors
ei.Delete(kubernetesWatchTrigger.ObjectMeta.Name, nil)
@@ -427,11 +431,20 @@ func TestCrd(t *testing.T) {
logger, err := zap.NewDevelopment()
panicIf(err)
fc, _, apiExtClient, err := MakeFissionClient()
fc, kubeClient, apiExtClient, err := MakeFissionClient()
if err != nil {
panicIf(err)
}
// testNS isolation for running multiple CI builds concurrently.
testNS = uuid.NewV4().String()
kubeClient.CoreV1().Namespaces().Create(&v1.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: testNS,
},
})
defer kubeClient.CoreV1().Namespaces().Delete(testNS, nil)
// init our types
err = EnsureFissionCRDs(logger, apiExtClient)
panicIf(err)