summaryrefslogtreecommitdiffstats
path: root/extras
diff options
context:
space:
mode:
authorMaros Ondrejicka <maros.ondrejicka@pantheon.tech>2022-11-16 12:51:11 +0100
committerMaros Ondrejicka <maros.ondrejicka@pantheon.tech>2022-12-06 20:12:40 +0100
commit5b746319d84854f942a48f0fb48a0f02af57f420 (patch)
tree31af51b6a1333c62fe5053cdd6c85faa7477ad7c /extras
parent55fbf55c17cc88884aa20e7070bc813000a3b193 (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
Diffstat (limited to 'extras')
-rwxr-xr-xextras/hs-test/vcl_test.go47
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)
+}