mirror of
https://github.com/rancher/k3k.git
synced 2026-02-14 18:10:01 +00:00
146 lines
4.1 KiB
Go
146 lines
4.1 KiB
Go
package k3k_test
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
corev1 "k8s.io/api/core/v1"
|
|
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
|
|
"github.com/rancher/k3k/k3k-kubelet/translate"
|
|
|
|
. "github.com/onsi/ginkgo/v2"
|
|
. "github.com/onsi/gomega"
|
|
)
|
|
|
|
var _ = When("a shared mode cluster is created", Ordered, Label(e2eTestLabel), func() {
|
|
var (
|
|
virtualCluster *VirtualCluster
|
|
virtualConfigMap *corev1.ConfigMap
|
|
virtualService *corev1.Service
|
|
)
|
|
|
|
BeforeAll(func() {
|
|
virtualCluster = NewVirtualCluster()
|
|
|
|
DeferCleanup(func() {
|
|
DeleteNamespaces(virtualCluster.Cluster.Namespace)
|
|
})
|
|
})
|
|
|
|
When("a ConfigMap is created in the virtual cluster", func() {
|
|
BeforeAll(func() {
|
|
ctx := context.Background()
|
|
|
|
virtualConfigMap = &corev1.ConfigMap{
|
|
ObjectMeta: metav1.ObjectMeta{
|
|
Name: "test-cm",
|
|
Namespace: "default",
|
|
},
|
|
}
|
|
|
|
var err error
|
|
|
|
virtualConfigMap, err = virtualCluster.Client.CoreV1().ConfigMaps("default").Create(ctx, virtualConfigMap, metav1.CreateOptions{})
|
|
Expect(err).To(Not(HaveOccurred()))
|
|
})
|
|
|
|
It("is replicated in the host cluster", func() {
|
|
ctx := context.Background()
|
|
|
|
hostTranslator := translate.NewHostTranslator(virtualCluster.Cluster)
|
|
namespacedName := hostTranslator.NamespacedName(virtualConfigMap)
|
|
|
|
// check that the ConfigMap is synced in the host cluster
|
|
Eventually(func(g Gomega) {
|
|
_, err := k8s.CoreV1().ConfigMaps(namespacedName.Namespace).Get(ctx, namespacedName.Name, metav1.GetOptions{})
|
|
g.Expect(err).To(Not(HaveOccurred()))
|
|
}).
|
|
WithTimeout(time.Minute).
|
|
WithPolling(time.Second).
|
|
Should(Succeed())
|
|
})
|
|
})
|
|
|
|
When("a Service is created in the virtual cluster", func() {
|
|
BeforeAll(func() {
|
|
ctx := context.Background()
|
|
|
|
virtualService = &corev1.Service{
|
|
ObjectMeta: metav1.ObjectMeta{
|
|
Name: "test-svc",
|
|
Namespace: "default",
|
|
},
|
|
Spec: corev1.ServiceSpec{
|
|
Type: corev1.ServiceTypeClusterIP,
|
|
Ports: []corev1.ServicePort{{Port: 8888}},
|
|
},
|
|
}
|
|
|
|
var err error
|
|
virtualService, err = virtualCluster.Client.CoreV1().Services("default").Create(ctx, virtualService, metav1.CreateOptions{})
|
|
Expect(err).To(Not(HaveOccurred()))
|
|
})
|
|
|
|
It("is replicated in the host cluster", func() {
|
|
ctx := context.Background()
|
|
|
|
hostTranslator := translate.NewHostTranslator(virtualCluster.Cluster)
|
|
namespacedName := hostTranslator.NamespacedName(virtualService)
|
|
|
|
// check that the ConfigMap is synced in the host cluster
|
|
Eventually(func(g Gomega) {
|
|
_, err := k8s.CoreV1().Services(namespacedName.Namespace).Get(ctx, namespacedName.Name, metav1.GetOptions{})
|
|
g.Expect(err).To(Not(HaveOccurred()))
|
|
}).
|
|
WithTimeout(time.Minute).
|
|
WithPolling(time.Second).
|
|
Should(Succeed())
|
|
})
|
|
})
|
|
|
|
When("the cluster is deleted", func() {
|
|
BeforeAll(func() {
|
|
ctx := context.Background()
|
|
|
|
By("Deleting cluster")
|
|
|
|
err := k8sClient.Delete(ctx, virtualCluster.Cluster)
|
|
Expect(err).To(Not(HaveOccurred()))
|
|
})
|
|
|
|
It("will delete the ConfigMap from the host cluster", func() {
|
|
ctx := context.Background()
|
|
|
|
hostTranslator := translate.NewHostTranslator(virtualCluster.Cluster)
|
|
namespacedName := hostTranslator.NamespacedName(virtualConfigMap)
|
|
|
|
// check that the ConfigMap is deleted from the host cluster
|
|
Eventually(func(g Gomega) {
|
|
_, err := k8s.CoreV1().ConfigMaps(namespacedName.Namespace).Get(ctx, namespacedName.Name, metav1.GetOptions{})
|
|
g.Expect(apierrors.IsNotFound(err)).To(BeTrue())
|
|
}).
|
|
WithTimeout(time.Minute).
|
|
WithPolling(time.Second).
|
|
Should(Succeed())
|
|
})
|
|
|
|
It("will delete the Service from the host cluster", func() {
|
|
ctx := context.Background()
|
|
|
|
hostTranslator := translate.NewHostTranslator(virtualCluster.Cluster)
|
|
namespacedName := hostTranslator.NamespacedName(virtualService)
|
|
|
|
// check that the Service is deleted from the host cluster
|
|
Eventually(func(g Gomega) {
|
|
_, err := k8s.CoreV1().Services(namespacedName.Namespace).Get(ctx, namespacedName.Name, metav1.GetOptions{})
|
|
g.Expect(apierrors.IsNotFound(err)).To(BeTrue())
|
|
}).
|
|
WithTimeout(time.Minute).
|
|
WithPolling(time.Second).
|
|
Should(Succeed())
|
|
})
|
|
})
|
|
})
|