hs-test: test tcp with loss 69/37669/12
authorMaros Ondrejicka <maros.ondrejicka@pantheon.tech>
Wed, 16 Nov 2022 11:51:11 +0000 (12:51 +0100)
committerMaros Ondrejicka <maros.ondrejicka@pantheon.tech>
Tue, 6 Dec 2022 19:12:40 +0000 (20:12 +0100)
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

extras/hs-test/vcl_test.go

index e1d23bd..b68385a 100755 (executable)
@@ -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)
+}