summaryrefslogtreecommitdiffstats
path: root/extras/hs-test/vcl_test.go
diff options
context:
space:
mode:
authorMaros Ondrejicka <maros.ondrejicka@pantheon.tech>2023-01-26 10:07:29 +0100
committerFlorin Coras <florin.coras@gmail.com>2023-02-09 17:02:43 +0000
commitffa3f60290499bdacc37a97c49f2e794b5e1f18c (patch)
treec23820e0d91d2a1a0eef2596b0de60c06f1ea303 /extras/hs-test/vcl_test.go
parent7a6532bb9f3b9c429f92d11a6ccbf55638906d0a (diff)
hs-test: configure VPP from test context
Instead of configuring VPP instances running inside of a container, now the configuration is going to be done from within the test context by using binary API and shared volume that exposes api socket. This converts just some of the test cases, rest is to follow. Type: test Signed-off-by: Maros Ondrejicka <maros.ondrejicka@pantheon.tech> Change-Id: I87e4ab15de488f0eebb01ff514596265fc2a787f
Diffstat (limited to 'extras/hs-test/vcl_test.go')
-rw-r--r--extras/hs-test/vcl_test.go73
1 files changed, 40 insertions, 33 deletions
diff --git a/extras/hs-test/vcl_test.go b/extras/hs-test/vcl_test.go
index f4273c87b14..6c809f4caec 100644
--- a/extras/hs-test/vcl_test.go
+++ b/extras/hs-test/vcl_test.go
@@ -1,6 +1,7 @@
package main
import (
+ "fmt"
"time"
)
@@ -19,73 +20,78 @@ func (s *VethsSuite) TestVclEchoTcp() {
}
func (s *VethsSuite) testVclEcho(proto string) {
- srvVppContainer := s.getContainerByName("server-vpp")
-
- _, err := srvVppContainer.execAction("Configure2Veths srv")
- s.assertNil(err)
-
- clnVppContainer := s.getContainerByName("client-vpp")
-
- _, err = clnVppContainer.execAction("Configure2Veths cln")
- s.assertNil(err)
+ serverVethAddress := s.veths["vppsrv"].Address()
+ uri := proto + "://" + serverVethAddress + "/12344"
echoSrvContainer := s.getContainerByName("server-application")
-
- // run server app
- _, err = echoSrvContainer.execAction("RunEchoServer " + proto)
+ serverCommand := "vpp_echo server TX=RX" +
+ " socket-name " + echoSrvContainer.GetContainerWorkDir() + "/var/run/app_ns_sockets/1" +
+ " use-app-socket-api" +
+ " uri " + uri
+ s.log(serverCommand)
+ err := echoSrvContainer.execServer(serverCommand)
s.assertNil(err)
echoClnContainer := s.getContainerByName("client-application")
- o, err := echoClnContainer.execAction("RunEchoClient " + proto)
+ clientCommand := "vpp_echo client" +
+ " socket-name " + echoClnContainer.GetContainerWorkDir() + "/var/run/app_ns_sockets/2" +
+ " use-app-socket-api uri " + uri
+ s.log(clientCommand)
+ o, err := echoClnContainer.exec(clientCommand)
s.assertNil(err)
s.log(o)
}
func (s *VethsSuite) TestVclRetryAttach() {
- s.skip()
+ s.skip("this test takes too long, for now it's being skipped")
s.testRetryAttach("tcp")
}
func (s *VethsSuite) testRetryAttach(proto string) {
- srvVppContainer := s.getContainerByName("server-vpp")
+ srvVppContainer := s.getContainerCopyByName("server-vpp")
- _, err := srvVppContainer.execAction("Configure2Veths srv-with-preset-hw-addr")
- s.assertNil(err)
+ echoSrvContainer := s.getContainerByName("server-application")
- clnVppContainer := s.getContainerByName("client-vpp")
+ serverVclConfContent := fmt.Sprintf(vclTemplate, echoSrvContainer.GetContainerWorkDir(), "1")
+ echoSrvContainer.createFile("/vcl.conf", serverVclConfContent)
- _, err = clnVppContainer.execAction("Configure2Veths cln")
- s.assertNil(err)
-
- echoSrvContainer := s.getContainerByName("server-application")
- _, err = echoSrvContainer.execAction("RunVclEchoServer " + proto)
+ echoSrvContainer.addEnvVar("VCL_CONFIG", "/vcl.conf")
+ err := echoSrvContainer.execServer("vcl_test_server -p " + proto + " 12346")
s.assertNil(err)
s.log("This whole test case can take around 3 minutes to run. Please be patient.")
s.log("... Running first echo client test, before disconnect.")
- echoClnContainer := s.getContainerByName("client-application")
- _, err = echoClnContainer.execAction("RunVclEchoClient " + proto)
+
+ serverVeth := s.veths[serverInterfaceName]
+ serverVethAddress := serverVeth.Address()
+
+ echoClnContainer := s.getContainerCopyByName("client-application")
+ clientVclConfContent := fmt.Sprintf(vclTemplate, echoClnContainer.GetContainerWorkDir(), "2")
+ echoClnContainer.createFile("/vcl.conf", clientVclConfContent)
+
+ testClientCommand := "vcl_test_client -U -p " + proto + " " + serverVethAddress + " 12346"
+ echoClnContainer.addEnvVar("VCL_CONFIG", "/vcl.conf")
+ o, err := echoClnContainer.exec(testClientCommand)
+ s.log(o)
s.assertNil(err)
s.log("... First test ended. Stopping VPP server now.")
// Stop server-vpp-instance, start it again and then run vcl-test-client once more
+ srvVppContainer.vppInstance.disconnect()
stopVppCommand := "/bin/bash -c 'ps -C vpp_main -o pid= | xargs kill -9'"
_, err = srvVppContainer.exec(stopVppCommand)
s.assertNil(err)
- time.Sleep(5 * time.Second) // Give parent process time to reap the killed child process
- stopVppCommand = "/bin/bash -c 'ps -C hs-test -o pid= | xargs kill -9'"
- _, err = srvVppContainer.exec(stopVppCommand)
- s.assertNil(err)
- _, err = srvVppContainer.execAction("Configure2Veths srv-with-preset-hw-addr")
- s.assertNil(err)
+
+ s.setupServerVpp()
s.log("... VPP server is starting again, so waiting for a bit.")
time.Sleep(30 * time.Second) // Wait a moment for the re-attachment to happen
s.log("... Running second echo client test, after disconnect and re-attachment.")
- _, err = echoClnContainer.execAction("RunVclEchoClient " + proto)
+ o, err = echoClnContainer.exec(testClientCommand)
+ s.log(o)
s.assertNil(err)
s.log("Done.")
}
@@ -99,7 +105,8 @@ func (s *VethsSuite) TestTcpWithLoss() {
err := serverVpp.start()
s.assertNil(err, "starting VPP failed")
- _, err = serverVpp.vppctl("test echo server uri tcp://10.10.10.1/20022")
+ serverVeth := s.veths[serverInterfaceName]
+ _, err = serverVpp.vppctl("test echo server uri tcp://%s/20022", serverVeth.Address())
s.assertNil(err, "starting echo server failed")
clientContainer := s.getContainerByName("client-vpp")