hs-test: add http client connect test

Type: test

Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
Change-Id: If705d311065e128b4b6df7d8d80910e4be72d3e6
diff --git a/extras/hs-test/actions.go b/extras/hs-test/actions.go
index 7525085..1f35ee7 100755
--- a/extras/hs-test/actions.go
+++ b/extras/hs-test/actions.go
@@ -31,6 +31,8 @@
 	reg("2veths", Configure2Veths)
 	reg("vcl-test-server", RunVclEchoServer)
 	reg("vcl-test-client", RunVclEchoClient)
+	reg("http-cli-srv", RunHttpCliSrv)
+	reg("http-cli-cln", RunHttpCliCln)
 }
 
 func configureProxyTcp(ifName0, ipAddr0, ifName1, ipAddr1 string) ConfFn {
@@ -51,6 +53,17 @@
 	}
 }
 
+func RunHttpCliSrv(args []string) *ActionResult {
+	cmd := fmt.Sprintf("http cli server")
+	return ApiCliInband("/tmp/2veths", cmd)
+}
+
+func RunHttpCliCln(args []string) *ActionResult {
+	cmd := fmt.Sprintf("http cli client uri http://10.10.10.1/80 query %s", getArgs())
+	fmt.Println(cmd)
+	return ApiCliInband("/tmp/2veths", cmd)
+}
+
 func ConfigureVppProxy(args []string) *ActionResult {
 	ctx, cancel := newVppContext()
 	defer cancel()
diff --git a/extras/hs-test/http_test.go b/extras/hs-test/http_test.go
new file mode 100755
index 0000000..fbbd64a
--- /dev/null
+++ b/extras/hs-test/http_test.go
@@ -0,0 +1,90 @@
+package main
+
+import (
+	"strings"
+
+	"github.com/edwarnicke/exechelper"
+)
+
+func (s *NsSuite) TestHttpTps() {
+	t := s.T()
+	finished := make(chan error, 1)
+	server_ip := "10.0.0.2"
+	port := "8080"
+	dockerInstance := "http-tps"
+
+	t.Log("starting vpp..")
+
+	err := dockerRun(dockerInstance, "")
+	if err != nil {
+		t.Errorf("%v", err)
+		return
+	}
+	defer func() { exechelper.Run("docker stop " + dockerInstance) }()
+
+	// start & configure vpp in the container
+	_, err = hstExec(dockerInstance, dockerInstance)
+	if err != nil {
+		t.Errorf("%v", err)
+		return
+	}
+
+	go startWget(finished, server_ip, port, "client")
+	// wait for client
+	err = <-finished
+	if err != nil {
+		t.Errorf("%v", err)
+	}
+}
+
+func (s *Veths2Suite) TestHttpCli() {
+	t := s.T()
+
+	srvInstance := "http-cli-srv"
+	clnInstance := "http-cli-cln"
+	err := dockerRun(srvInstance, "")
+	if err != nil {
+		t.Errorf("%v", err)
+		return
+	}
+	defer func() { exechelper.Run("docker stop " + srvInstance) }()
+
+	err = dockerRun(clnInstance, "")
+	if err != nil {
+		t.Errorf("%v", err)
+		return
+	}
+	defer func() { exechelper.Run("docker stop " + clnInstance) }()
+
+	_, err = hstExec("2veths srv", srvInstance)
+	if err != nil {
+		t.Errorf("%v", err)
+		return
+	}
+
+	_, err = hstExec("2veths cln", clnInstance)
+	if err != nil {
+		t.Errorf("%v", err)
+		return
+	}
+
+	t.Log("configured IPs...")
+
+	_, err = hstExec("http-cli-srv", srvInstance)
+	if err != nil {
+		t.Errorf("%v", err)
+		return
+	}
+
+	t.Log("configured http server")
+
+	o, err := hstExec("http-cli-cln /show/version", clnInstance)
+	if err != nil {
+		t.Errorf("%v", err)
+		return
+	}
+
+	if strings.Index(o, "<html>") < 0 {
+		t.Error("<html> not found in the result!")
+	}
+}
diff --git a/extras/hs-test/tps_test.go b/extras/hs-test/tps_test.go
deleted file mode 100755
index dd87da1..0000000
--- a/extras/hs-test/tps_test.go
+++ /dev/null
@@ -1,36 +0,0 @@
-package main
-
-import (
-	"github.com/edwarnicke/exechelper"
-)
-
-func (s *NsSuite) TestHttpTps() {
-	t := s.T()
-	finished := make(chan error, 1)
-	server_ip := "10.0.0.2"
-	port := "8080"
-	dockerInstance := "http-tps"
-
-	t.Log("starting vpp..")
-
-	err := dockerRun(dockerInstance, "")
-	if err != nil {
-		t.Errorf("%v", err)
-		return
-	}
-	defer func() { exechelper.Run("docker stop " + dockerInstance) }()
-
-	// start & configure vpp in the container
-	_, err = hstExec(dockerInstance, dockerInstance)
-	if err != nil {
-		t.Errorf("%v", err)
-		return
-	}
-
-	go startWget(finished, server_ip, port, "client")
-	// wait for client
-	err = <-finished
-	if err != nil {
-		t.Errorf("%v", err)
-	}
-}
diff --git a/extras/hs-test/utils.go b/extras/hs-test/utils.go
index 4674baf..3dc511e 100755
--- a/extras/hs-test/utils.go
+++ b/extras/hs-test/utils.go
@@ -46,6 +46,7 @@
     plugin dpdk_plugin.so { disable }
     plugin crypto_aesni_plugin.so { enable }
     plugin quic_plugin.so { enable }
+    plugin crypto_ipsecmb_plugin.so { disable }
 }
 
 `