Skip to content

Commit 55ce34e

Browse files
test: fix external connectivity (#2313)
Signed-off-by: Yaroslav Borbat <yaroslav.borbat@flant.com>
1 parent 8c5c45c commit 55ce34e

5 files changed

Lines changed: 31 additions & 16 deletions

File tree

test/e2e/internal/network/external_connectivity.go

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,23 +19,38 @@ package network
1919
import (
2020
"fmt"
2121
"strings"
22+
"time"
2223

2324
. "github.com/onsi/ginkgo/v2"
2425
. "github.com/onsi/gomega"
2526

2627
"github.com/deckhouse/virtualization/test/e2e/internal/framework"
2728
)
2829

29-
const (
30-
HTTPStatusOk = "200"
31-
ExternalHost = "https://flant.ru"
32-
)
30+
var ExternalConnectivityHosts = []string{
31+
"https://flant.ru",
32+
"https://google.com",
33+
"https://ya.ru",
34+
}
3335

34-
func CheckExternalConnectivity(f *framework.Framework, vmName, host, expectedHTTPCode string) {
36+
func CheckExternalConnectivity(f *framework.Framework, vmName string, hosts []string) {
3537
GinkgoHelper()
3638

37-
cmd := fmt.Sprintf("curl -o /dev/null -k -s -w \"%%{http_code}\\n\" %s", host)
38-
httpCode, err := f.SSHCommand(vmName, f.Namespace().Name, cmd)
39-
Expect(err).NotTo(HaveOccurred(), "failed external connectivity check for VM %s", vmName)
40-
Expect(strings.TrimSpace(httpCode)).To(Equal(expectedHTTPCode), "HTTP response code from %s should be %s, got %s", host, expectedHTTPCode, httpCode)
39+
cmd := fmt.Sprintf(`set -e
40+
for host in %s; do
41+
if curl --head -k -sS -o /dev/null --connect-timeout 5 --max-time 15 "$host"; then
42+
echo "$host"
43+
exit 0
44+
fi
45+
done
46+
exit 1`, strings.Join(hosts, " "))
47+
48+
reachableHost, err := f.SSHCommand(
49+
vmName,
50+
f.Namespace().Name,
51+
cmd,
52+
framework.WithSSHTimeout(time.Minute),
53+
)
54+
Expect(err).NotTo(HaveOccurred(), "VM %s should have outbound connectivity via at least one host from %v", vmName, hosts)
55+
Expect(strings.TrimSpace(reachableHost)).NotTo(BeEmpty(), "VM %s should report a reachable external host from %v", vmName, hosts)
4156
}

test/e2e/vm/additional_network_interfaces.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,10 +149,10 @@ var _ = Describe("VirtualMachineAdditionalNetworkInterfaces", Label(precheck.NoP
149149
})
150150

151151
By("Check VM can reach external network after migration", func() {
152-
network.CheckExternalConnectivity(f, vmFoo.Name, network.ExternalHost, network.HTTPStatusOk)
152+
network.CheckExternalConnectivity(f, vmFoo.Name, network.ExternalConnectivityHosts)
153153

154154
if tc.vmBarHasMainNetwork {
155-
network.CheckExternalConnectivity(f, vmBar.Name, network.ExternalHost, network.HTTPStatusOk)
155+
network.CheckExternalConnectivity(f, vmBar.Name, network.ExternalConnectivityHosts)
156156
}
157157
})
158158

test/e2e/vm/connectivity.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,8 @@ var _ = Describe("VirtualMachineConnectivity", Label(precheck.NoPrecheck), func(
7777
})
7878

7979
By("Check VMs can reach external network", func() {
80-
network.CheckExternalConnectivity(f, t.VMa.Name, network.ExternalHost, network.HTTPStatusOk)
81-
network.CheckExternalConnectivity(f, t.VMb.Name, network.ExternalHost, network.HTTPStatusOk)
80+
network.CheckExternalConnectivity(f, t.VMa.Name, network.ExternalConnectivityHosts)
81+
network.CheckExternalConnectivity(f, t.VMb.Name, network.ExternalConnectivityHosts)
8282
})
8383

8484
By("Check nginx status on VMs", func() {

test/e2e/vm/migration.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,8 +303,8 @@ var _ = Describe("VirtualMachineMigration", Label(precheck.NoPrecheck), func() {
303303
By("Check VM can reach external network", func() {
304304
util.UntilSSHReady(f, vmBIOS, framework.MiddleTimeout)
305305
util.UntilSSHReady(f, vmUEFI, framework.MiddleTimeout)
306-
network.CheckExternalConnectivity(f, vmBIOS.Name, network.ExternalHost, network.HTTPStatusOk)
307-
network.CheckExternalConnectivity(f, vmUEFI.Name, network.ExternalHost, network.HTTPStatusOk)
306+
network.CheckExternalConnectivity(f, vmBIOS.Name, network.ExternalConnectivityHosts)
307+
network.CheckExternalConnectivity(f, vmUEFI.Name, network.ExternalConnectivityHosts)
308308
})
309309
})
310310
})

test/e2e/vm/power_state.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ var _ = Describe("PowerState", Label(precheck.NoPrecheck), func() {
174174
By("Check VM can reach external network", func() {
175175
err := network.CheckCiliumAgents(context.Background(), f.Kubectl(), t.VM.Name, f.Namespace().Name)
176176
Expect(err).NotTo(HaveOccurred(), "Cilium agents check should succeed for VM %s", t.VM.Name)
177-
network.CheckExternalConnectivity(f, t.VM.Name, network.ExternalHost, network.HTTPStatusOk)
177+
network.CheckExternalConnectivity(f, t.VM.Name, network.ExternalConnectivityHosts)
178178
})
179179
},
180180
Entry(

0 commit comments

Comments
 (0)