Skip to content

Commit

Permalink
Merge pull request #380 from FabEdge/improve-e2e
Browse files Browse the repository at this point in the history
Improve e2e test
  • Loading branch information
yanjianbo1983 authored Apr 3, 2023
2 parents 9491bd4 + 4a0989e commit b1451bf
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 44 deletions.
16 changes: 6 additions & 10 deletions test/e2e/pod.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,9 +91,8 @@ var _ = Describe("FabEdge", func() {
)
framework.ExpectNoError(err)

// 必须让edgePod在前面,因为云端pod不能主动打通边缘Pod的隧道
for _, p1 := range edgePods {
for _, p2 := range cloudPods {
for _, p1 := range cloudPods {
for _, p2 := range edgePods {
cluster.expectPodsCanCommunicate(p1, p2, bothIPv4AndIPv6)
}
}
Expand All @@ -114,7 +113,6 @@ var _ = Describe("FabEdge", func() {
framework.ExpectNoError(err)

By("pods communicate with each other")
// 必须让edgePod在前面,因为云端pod不能主动打通边缘Pod的隧道
for _, p1 := range edgePods {
for _, p2 := range hostEdgePods {
// for now, not all edge framework support dual stack, so only IPv4 is tested
Expand All @@ -137,9 +135,8 @@ var _ = Describe("FabEdge", func() {
)
framework.ExpectNoError(err)

// 必须让edgePod在前面,因为云端pod不能主动打通边缘Pod的隧道
for _, p1 := range edgePods {
for _, p2 := range hostCloudPods {
for _, p1 := range hostCloudPods {
for _, p2 := range edgePods {
// for now, not all edge framework support dual stack, so only IPv4 is tested
cluster.expectPodsCanCommunicate(p1, p2, onlyIPv4)
}
Expand All @@ -161,9 +158,8 @@ var _ = Describe("FabEdge", func() {
framework.ExpectNoError(err)

By("pods communicate with each other")
// 必须让edgePod在前面,因为云端pod不能主动打通边缘Pod的隧道
for _, p1 := range hostEdgePods {
for _, p2 := range cloudPods {
for _, p1 := range cloudPods {
for _, p2 := range hostEdgePods {
// for now, not all edge framework support dual stack, so only IPv4 is tested
cluster.expectPodsCanCommunicate(p1, p2, onlyIPv4)
}
Expand Down
83 changes: 49 additions & 34 deletions test/e2e/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,15 @@ import (
"fmt"

. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"sigs.k8s.io/controller-runtime/pkg/client"

netutil "github.com/fabedge/fabedge/pkg/util/net"
"github.com/fabedge/fabedge/test/e2e/framework"
)

var _ = Describe("FabEdge", func() {
// 集群间通信测试
// testcases for multi-clusters communication
if framework.TestContext.IsMultiClusterTest() {
// 测试集群内pod访问集群间云端服务端点的情况
It("let cluster cloud pods can access another cluster cloud services [multi-cluster]", func() {
for _, c1 := range clusters {
clientPods, _, err := framework.ListCloudAndEdgePods(c1.client,
Expand Down Expand Up @@ -70,64 +68,54 @@ var _ = Describe("FabEdge", func() {
})

} else {
// 单集群测试
// testcases for single cluster internal communication
var cluster Cluster
BeforeEach(func() {
cluster = clusters[0]
})

// 测试边缘pod访问本地服务端点的情况
It("let edge pods can access local service endpoint when it exists [p2p]", func() {
_, clientPods, err := framework.ListCloudAndEdgePods(cluster.client,
It("let edge pods can access edge services [p2p][e2e]", func() {
_, edgePods, err := framework.ListCloudAndEdgePods(cluster.client,
client.InNamespace(namespaceSingle),
client.MatchingLabels{labelKeyInstance: instanceNetTool},
)
framework.ExpectNoError(err)

_, servicePods, err := framework.ListCloudAndEdgePods(cluster.client,
client.InNamespace(namespaceSingle),
client.MatchingLabels{labelKeyLocation: LocationEdge, labelKeyUseHostNetwork: "false"},
)
framework.ExpectNoError(err)

hostToPod := make(map[string]string)
for _, pod := range servicePods {
hostToPod[pod.Spec.NodeName] = pod.Name
}
for _, serviceName := range cluster.edgeNginxServiceNames() {
for _, pod := range clientPods {
expectedPodName, ok := hostToPod[pod.Spec.NodeName]
Expect(ok).To(BeTrue())
servicePods, _, err := framework.ListCloudAndEdgePods(cluster.client,
client.InNamespace(namespaceSingle),
client.MatchingLabels{labelKeyLocation: LocationEdge, labelKeyUseHostNetwork: "false"},
)
framework.ExpectNoError(err)

for _, pod := range edgePods {
framework.Logf("pod %s visit service %s", pod.Name, serviceName)
cluster.expectCurlResultContains(pod, serviceName, expectedPodName)
cluster.checkServiceAvailability(pod, serviceName, servicePods)
}
}
})

// 测试边缘pod访问本地服务端点的情况
It("let edge pods can access local host service endpoint when it exists [p2n]", func() {
It("let edge pods can access local host service [p2n][e2e]", func() {
_, edgePods, err := framework.ListCloudAndEdgePods(cluster.client,
client.InNamespace(namespaceSingle),
client.MatchingLabels{labelKeyInstance: instanceNetTool},
)
framework.ExpectNoError(err)

_, hostEdgePods, err := framework.ListCloudAndEdgePods(cluster.client,
servicePods, _, err := framework.ListCloudAndEdgePods(cluster.client,
client.InNamespace(namespaceSingle),
client.MatchingLabels{labelKeyInstance: instanceHostNetTool},
client.MatchingLabels{labelKeyLocation: LocationEdge, labelKeyUseHostNetwork: "true"},
)
framework.ExpectNoError(err)

// for now, only test IPv4 service
serviceName := cluster.serviceHostEdgeNginx
edgePods = append(edgePods, hostEdgePods...)
for _, pod := range edgePods {
framework.Logf("pod %s visit service %s", pod.Name, serviceName)
cluster.expectCurlResultContains(pod, serviceName, pod.Spec.NodeName)
cluster.checkServiceAvailability(pod, serviceName, servicePods)
}
})

// 测试边缘pod访问云端服务端点的情况
It("let edge pods can access cloud services [p2p][c2e]", func() {
_, edgePods, err := framework.ListCloudAndEdgePods(cluster.client,
client.InNamespace(namespaceSingle),
Expand All @@ -149,7 +137,6 @@ var _ = Describe("FabEdge", func() {
}
})

// 测试边缘主机网络pod访问云端服务端点的情况
It("let edge pods using hostNetwork can access cloud services [n2p][e2c]", func() {
_, edgePods, err := framework.ListCloudAndEdgePods(cluster.client,
client.InNamespace(namespaceSingle),
Expand All @@ -171,10 +158,7 @@ var _ = Describe("FabEdge", func() {
}
})

// 测试边缘pod访问云端服务端点的情况
It("let edge pods can access cloud services with host network endpoints [p2n][e2c][host-service]", func() {
// todo: use more flexible control flags
Skip("feature not supported now, because higher linux kernel is needed")

_, edgePods, err := framework.ListCloudAndEdgePods(cluster.client,
client.InNamespace(namespaceSingle),
Expand All @@ -190,11 +174,42 @@ var _ = Describe("FabEdge", func() {

serviceName := cluster.serviceHostCloudNginx
edgePods = append(edgePods, hostEdgePods...)
servicePods, _, err := framework.ListCloudAndEdgePods(cluster.client,
client.InNamespace(namespaceSingle),
client.MatchingLabels{labelKeyLocation: LocationCloud, labelKeyUseHostNetwork: "true"},
)

for _, pod := range edgePods {
framework.Logf("pod %s visit service %s", pod.Name, serviceName)

_, stderr, err := cluster.execCurl(pod, serviceName)
Expect(err).ShouldNot(HaveOccurred(), stderr)
cluster.checkServiceAvailability(pod, serviceName, servicePods)
}
})

It("let cloud pods can access edge services [p2n][c22]", func() {
cloudPods, _, err := framework.ListCloudAndEdgePods(cluster.client,
client.InNamespace(namespaceSingle),
client.MatchingLabels{labelKeyInstance: instanceNetTool},
)
framework.ExpectNoError(err)

_, hostCloudPods, err := framework.ListCloudAndEdgePods(cluster.client,
client.InNamespace(namespaceSingle),
client.MatchingLabels{labelKeyInstance: instanceHostNetTool},
)
framework.ExpectNoError(err)

serviceName := cluster.serviceCloudNginx
servicePods, _, err := framework.ListCloudAndEdgePods(cluster.client,
client.InNamespace(namespaceSingle),
client.MatchingLabels{labelKeyLocation: LocationCloud, labelKeyUseHostNetwork: "true"},
)

cloudPods = append(cloudPods, hostCloudPods...)
for _, pod := range cloudPods {
framework.Logf("pod %s visit service %s", pod.Name, serviceName)

cluster.checkServiceAvailability(pod, serviceName, servicePods)
}
})
}
Expand Down

0 comments on commit b1451bf

Please sign in to comment.