hs-test: add http client connect test
Type: test Signed-off-by: Filip Tehlar <ftehlar@cisco.com> Change-Id: If705d311065e128b4b6df7d8d80910e4be72d3e6
This commit is contained in:

committed by
Florin Coras

parent
ee4172ef0a
commit
b15a0000ff
@@ -823,6 +823,13 @@ M: Fan Zhang <roy.fan.zhang@intel.com>
|
|||||||
M: Gabriel Oginski <gabrielx.oginski@intel.com>
|
M: Gabriel Oginski <gabrielx.oginski@intel.com>
|
||||||
F: extras/strongswan/vpp_sswan
|
F: extras/strongswan/vpp_sswan
|
||||||
|
|
||||||
|
Host stack test framework
|
||||||
|
I: hs-test
|
||||||
|
M: Florin Coras <fcoras@cisco.com>
|
||||||
|
M: Filip Tehlar <ftehlar@cisco.com>
|
||||||
|
M: Maros Ondrejicka <maros.ondrejicka@pantheon.tech>
|
||||||
|
F: extras/hs-test
|
||||||
|
|
||||||
THE REST
|
THE REST
|
||||||
I: misc
|
I: misc
|
||||||
M: vpp-dev Mailing List <vpp-dev@fd.io>
|
M: vpp-dev Mailing List <vpp-dev@fd.io>
|
||||||
|
@@ -31,6 +31,8 @@ func RegisterActions() {
|
|||||||
reg("2veths", Configure2Veths)
|
reg("2veths", Configure2Veths)
|
||||||
reg("vcl-test-server", RunVclEchoServer)
|
reg("vcl-test-server", RunVclEchoServer)
|
||||||
reg("vcl-test-client", RunVclEchoClient)
|
reg("vcl-test-client", RunVclEchoClient)
|
||||||
|
reg("http-cli-srv", RunHttpCliSrv)
|
||||||
|
reg("http-cli-cln", RunHttpCliCln)
|
||||||
}
|
}
|
||||||
|
|
||||||
func configureProxyTcp(ifName0, ipAddr0, ifName1, ipAddr1 string) ConfFn {
|
func configureProxyTcp(ifName0, ipAddr0, ifName1, ipAddr1 string) ConfFn {
|
||||||
@@ -51,6 +53,17 @@ func configureProxyTcp(ifName0, ipAddr0, ifName1, ipAddr1 string) ConfFn {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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 {
|
func ConfigureVppProxy(args []string) *ActionResult {
|
||||||
ctx, cancel := newVppContext()
|
ctx, cancel := newVppContext()
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
90
extras/hs-test/http_test.go
Executable file
90
extras/hs-test/http_test.go
Executable file
@@ -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!")
|
||||||
|
}
|
||||||
|
}
|
@@ -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)
|
|
||||||
}
|
|
||||||
}
|
|
@@ -46,6 +46,7 @@ plugins {
|
|||||||
plugin dpdk_plugin.so { disable }
|
plugin dpdk_plugin.so { disable }
|
||||||
plugin crypto_aesni_plugin.so { enable }
|
plugin crypto_aesni_plugin.so { enable }
|
||||||
plugin quic_plugin.so { enable }
|
plugin quic_plugin.so { enable }
|
||||||
|
plugin crypto_ipsecmb_plugin.so { disable }
|
||||||
}
|
}
|
||||||
|
|
||||||
`
|
`
|
||||||
|
Reference in New Issue
Block a user