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>
|
||||
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
|
||||
I: misc
|
||||
M: vpp-dev Mailing List <vpp-dev@fd.io>
|
||||
|
@ -31,6 +31,8 @@ func RegisterActions() {
|
||||
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 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 {
|
||||
ctx, cancel := newVppContext()
|
||||
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 crypto_aesni_plugin.so { enable }
|
||||
plugin quic_plugin.so { enable }
|
||||
plugin crypto_ipsecmb_plugin.so { disable }
|
||||
}
|
||||
|
||||
`
|
||||
|
Reference in New Issue
Block a user