diff options
-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) +} |