Skip to content

Commit dbc7868

Browse files
Sowmya viswamSowmya viswam
authored andcommitted
Adding tests for syncing service endpoint and endpointslice to host
1 parent b3ace5e commit dbc7868

File tree

1 file changed

+86
-5
lines changed

1 file changed

+86
-5
lines changed

test/e2e/servicesync/servicesync.go

Lines changed: 86 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,64 @@ import (
1111
corev1 "k8s.io/api/core/v1"
1212
kerrors "k8s.io/apimachinery/pkg/api/errors"
1313
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
14+
"k8s.io/apimachinery/pkg/util/intstr"
1415
"k8s.io/apimachinery/pkg/util/wait"
1516
"k8s.io/client-go/kubernetes"
1617
)
1718

18-
var _ = ginkgo.Describe("map services from host to virtual cluster and vice versa", func() {
19-
var f *framework.Framework
20-
21-
ginkgo.JustBeforeEach(func() {
22-
// use default framework
19+
var _ = ginkgo.Describe("Verify mapping and syncing of services and endpoints", func() {
20+
var (
21+
f *framework.Framework
22+
testService *corev1.Service
23+
testEndpoint *corev1.Endpoints
24+
serviceName = "test-service-sync"
25+
serviceNamespace = "default"
26+
endpointName = "test-service-sync"
27+
)
28+
ginkgo.BeforeAll(func() {
2329
f = framework.DefaultFramework
30+
testService = &corev1.Service{
31+
ObjectMeta: metav1.ObjectMeta{
32+
Name: serviceName,
33+
Namespace: serviceNamespace,
34+
},
35+
Spec: corev1.ServiceSpec{
36+
ClusterIP: "None",
37+
Ports: []corev1.ServicePort{
38+
{
39+
Name: "custom-port",
40+
Port: 8080,
41+
Protocol: corev1.ProtocolTCP,
42+
TargetPort: intstr.FromInt(5000),
43+
},
44+
},
45+
},
46+
}
47+
testEndpoint = &corev1.Endpoints{
48+
ObjectMeta: metav1.ObjectMeta{
49+
Name: endpointName,
50+
Namespace: serviceNamespace,
51+
},
52+
Subsets: []corev1.EndpointSubset{
53+
{
54+
Addresses: []corev1.EndpointAddress{
55+
{
56+
IP: "1.1.1.1",
57+
},
58+
},
59+
Ports: []corev1.EndpointPort{
60+
{
61+
Port: 5000,
62+
},
63+
},
64+
},
65+
},
66+
}
67+
})
68+
69+
ginkgo.AfterAll(func() {
70+
framework.ExpectNoError(f.VClusterClient.CoreV1().Endpoints(serviceNamespace).Delete(f.Context, endpointName, metav1.DeleteOptions{}))
71+
framework.ExpectNoError(f.VClusterClient.CoreV1().Services(serviceNamespace).Delete(f.Context, serviceName, metav1.DeleteOptions{}))
2472
})
2573

2674
ginkgo.It("Test service mapping", func() {
@@ -54,6 +102,39 @@ var _ = ginkgo.Describe("map services from host to virtual cluster and vice vers
54102
checkEndpointsSync(f.Context, f.VClusterClient, "test", "nginx", f.HostClient, f.VClusterNamespace, "nginx")
55103
})
56104
})
105+
106+
ginkgo.Context("Verify endpoint sync when endpoint is deployed before service", func() {
107+
ginkgo.It("Should sync Service, Endpoints, and EndpointSlice from vCluster to host cluster", func() {
108+
ctx := f.Context
109+
110+
ginkgo.By("Create Service Endpoint in vCluster")
111+
_, err := f.VClusterClient.CoreV1().Endpoints(serviceNamespace).Create(f.Context, testEndpoint, metav1.CreateOptions{})
112+
framework.ExpectNoError(err)
113+
114+
ginkgo.By("Create Service in vCluster")
115+
_, err = f.VClusterClient.CoreV1().Services(serviceNamespace).Create(f.Context, testService, metav1.CreateOptions{})
116+
framework.ExpectNoError(err)
117+
118+
ginkgo.By("Verify Endpoint exists in vCluster")
119+
_, err = f.VClusterClient.CoreV1().Endpoints(serviceNamespace).Get(ctx, endpointName, metav1.GetOptions{})
120+
framework.ExpectNoError(err)
121+
122+
ginkgo.By("Verify Service exists in vCluster")
123+
_, err = f.VClusterClient.CoreV1().Services(serviceNamespace).Get(ctx, serviceName, metav1.GetOptions{})
124+
framework.ExpectNoError(err)
125+
126+
translatedServiceName := translate.SingleNamespaceHostName(serviceName, serviceNamespace, translate.VClusterName)
127+
128+
ginkgo.By("Verify Service exists in Host Cluster")
129+
_, err = f.HostClient.CoreV1().Services(f.VClusterNamespace).Get(ctx, translatedServiceName, metav1.GetOptions{})
130+
framework.ExpectNoError(err)
131+
132+
ginkgo.By("Verify Endpoint exists in Host Cluster")
133+
_, err = f.HostClient.CoreV1().Endpoints(f.VClusterNamespace).Get(ctx, translatedServiceName, metav1.GetOptions{})
134+
framework.ExpectNoError(err)
135+
136+
})
137+
})
57138
})
58139

59140
func testMapping(ctx context.Context, fromClient kubernetes.Interface, fromNamespace, fromName string, toClient kubernetes.Interface, toNamespace, toName string, checkEndpoints bool) {

0 commit comments

Comments
 (0)