hs-test: experimental support for multiple test instances

- appending PID to interface and container names
- added a check for used IP addresses
- TestEnvoyProxyHttpTcp and TestTcpWithLoss are broken when running multiple instances

Type: test

Change-Id: Ib917079ec7cf851dee59ff9c67e74f48c7c5e3c6
Signed-off-by: adrianvillin <avillin@cisco.com>
diff --git a/extras/hs-test/proxy_test.go b/extras/hs-test/proxy_test.go
index 748e48b..c2f9b6f 100644
--- a/extras/hs-test/proxy_test.go
+++ b/extras/hs-test/proxy_test.go
@@ -8,18 +8,19 @@
 )
 
 func testProxyHttpTcp(s *NsSuite, proto string) error {
-	const outputFile = "test.data"
-	const srcFile = "httpTestFile"
-	const fileSize = "10M"
+	var outputFile string = "test" + s.pid + ".data"
+	var srcFilePid string = "httpTestFile" + s.pid
+	const srcFileNoPid = "httpTestFile"
+	const fileSize string = "10M"
 	stopServer := make(chan struct{}, 1)
 	serverRunning := make(chan struct{}, 1)
-	serverNetns := "srv"
-	clientNetns := "cln"
+	serverNetns := s.getNetNamespaceByName("srv")
+	clientNetns := s.getNetNamespaceByName("cln")
 
 	// create test file
-	err := exechelper.Run(fmt.Sprintf("ip netns exec %s truncate -s %s %s", serverNetns, fileSize, srcFile))
+	err := exechelper.Run(fmt.Sprintf("ip netns exec %s truncate -s %s %s", serverNetns, fileSize, srcFilePid))
 	s.assertNil(err, "failed to run truncate command: " + fmt.Sprint(err))
-	defer func() { os.Remove(srcFile) }()
+	defer func() { os.Remove(srcFilePid) }()
 
 	s.log("test file created...")
 
@@ -33,13 +34,13 @@
 
 	s.log("http server started...")
 
-	clientVeth := s.netInterfaces[clientInterface]
+	clientVeth := s.getInterfaceByName(clientInterface)
 	c := fmt.Sprintf("ip netns exec %s wget --no-proxy --retry-connrefused"+
 		" --retry-on-http-error=503 --tries=10 -O %s ", clientNetns, outputFile)
 	if proto == "tls" {
 		c += " --secure-protocol=TLSv1_3 --no-check-certificate https://"
 	}
-	c += fmt.Sprintf("%s:555/%s", clientVeth.ip4AddressString(), srcFile)
+	c += fmt.Sprintf("%s:555/%s", clientVeth.ip4AddressString(), srcFileNoPid)
 	s.log(c)
 	_, err = exechelper.CombinedOutput(c)
 
@@ -48,13 +49,13 @@
 	s.assertNil(err, "failed to run wget: '%s', cmd: %s", err, c)
 	stopServer <- struct{}{}
 
-	s.assertNil(assertFileSize(outputFile, srcFile))
+	s.assertNil(assertFileSize(outputFile, srcFilePid))
 	return nil
 }
 
 func configureVppProxy(s *NsSuite, proto string) {
-	serverVeth := s.netInterfaces[serverInterface]
-	clientVeth := s.netInterfaces[clientInterface]
+	serverVeth := s.getInterfaceByName(serverInterface)
+	clientVeth := s.getInterfaceByName(clientInterface)
 
 	testVppProxy := s.getContainerByName("vpp").vppInstance
 	output := testVppProxy.vppctl(
@@ -85,7 +86,7 @@
 	err := envoyContainer.create()
 	s.assertNil(err, "Error creating envoy container: %s", err)
 
-	serverVeth := s.netInterfaces[serverInterface]
+	serverVeth := s.getInterfaceByName(serverInterface)
 	address := struct {
 		Server string
 	}{