kubernetes-operator/test/e2e/test_utility.go

62 lines
1.3 KiB
Go

package e2e
import (
"context"
"fmt"
"time"
"github.com/onsi/ginkgo"
"github.com/onsi/gomega"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/rest"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/envtest"
)
var (
Cfg *rest.Config
K8sClient client.Client
testEnv *envtest.Environment
hostname *string
port *int
useNodePort *bool
)
func CreateNamespace() *corev1.Namespace {
ginkgo.By("creating temporary namespace")
namespace := &corev1.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: fmt.Sprintf("ns%d", time.Now().Unix()),
},
}
gomega.Expect(K8sClient.Create(context.TODO(), namespace)).Should(gomega.Succeed())
return namespace
}
func DestroyNamespace(namespace *corev1.Namespace) {
ginkgo.By("deleting temporary namespace")
gomega.Expect(K8sClient.Delete(context.TODO(), namespace)).Should(gomega.Succeed())
gomega.Eventually(func() (bool, error) {
namespaces := &corev1.NamespaceList{}
err := K8sClient.List(context.TODO(), namespaces)
if err != nil {
return false, err
}
exists := false
for _, namespaceItem := range namespaces.Items {
if namespaceItem.Name == namespace.Name {
exists = true
break
}
}
return !exists, nil
}, time.Second*120, time.Second).Should(gomega.BeTrue())
}