diff options
author | Maros Ondrejicka <maros.ondrejicka@pantheon.tech> | 2022-11-16 12:51:11 +0100 |
---|---|---|
committer | Maros Ondrejicka <maros.ondrejicka@pantheon.tech> | 2022-12-06 20:12:40 +0100 |
commit | 5b746319d84854f942a48f0fb48a0f02af57f420 (patch) | |
tree | 31af51b6a1333c62fe5053cdd6c85faa7477ad7c | |
parent | 55fbf55c17cc88884aa20e7070bc813000a3b193 (diff) |
hs-test: test tcp with loss
This adds basic, functional-only, test of TCP connection with delay and
packet loss introduced by Network Delay Simulator.
Type: test
Signed-off-by: Maros Ondrejicka <maros.ondrejicka@pantheon.tech>
Change-Id: Ibedf4c680c152921b733cf39d99b178412748d3c
-rwxr-xr-x | extras/hs-test/vcl_test.go | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/extras/hs-test/vcl_test.go b/extras/hs-test/vcl_test.go index e1d23bda020..b68385a884c 100755 --- a/extras/hs-test/vcl_test.go +++ b/extras/hs-test/vcl_test.go @@ -187,3 +187,50 @@ func (s *VethsSuite) testRetryAttach(proto string) { } fmt.Println("Done.") } + +func (s *VethsSuite) TestTcpWithLoss() { + serverContainer, err := s.NewContainer("server") + s.assertNil(err, "creating container failed") + err = serverContainer.run() + s.assertNil(err) + + serverVpp := NewVppInstance(serverContainer) + s.assertNotNil(serverVpp) + serverVpp.setCliSocket("/var/run/vpp/cli.sock") + serverVpp.set2VethsServer() + err = serverVpp.start() + s.assertNil(err, "starting VPP failed") + + _, err = serverVpp.vppctl("test echo server uri tcp://10.10.10.1/20022") + s.assertNil(err, "starting echo server failed") + + clientContainer, err := s.NewContainer("client") + s.assertNil(err, "creating container failed") + err = clientContainer.run() + s.assertNil(err, "starting container failed") + + clientVpp := NewVppInstance(clientContainer) + s.assertNotNil(clientVpp) + clientVpp.setCliSocket("/var/run/vpp/cli.sock") + clientVpp.set2VethsClient() + err = clientVpp.start() + s.assertNil(err, "starting VPP failed") + + // Ensure that VPP doesn't abort itself with NSIM enabled + // Warning: Removing this ping will make the test fail! + _, err = serverVpp.vppctl("ping 10.10.10.2") + s.assertNil(err, "ping failed") + + // Add loss of packets with Network Delay Simulator + _, err = clientVpp.vppctl("set nsim poll-main-thread delay 0.01 ms bandwidth 40 gbit packet-size 1400 packets-per-drop 1000") + s.assertNil(err, "configuring NSIM failed") + _, err = clientVpp.vppctl("nsim output-feature enable-disable host-vppcln") + s.assertNil(err, "enabling NSIM failed") + + // Do echo test from client-vpp container + output, err := clientVpp.vppctl("test echo client uri tcp://10.10.10.1/20022 mbytes 50") + s.assertNil(err) + s.assertEqual(true, len(output) != 0) + s.assertNotContains(output, "failed: timeout") + fmt.Println(output) +} |