11a03e972e
Test suite now supports assertions which on fail stop test case run, also it allows to create docker containers which are going to be stopped automatically after the test run is finished. Type: improvement Signed-off-by: Maros Ondrejicka <maros.ondrejicka@pantheon.tech> Change-Id: I2834709b1efd17b8182d36cc0404b986b4ed595d Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
115 lines
2.6 KiB
Go
Executable File
115 lines
2.6 KiB
Go
Executable File
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"time"
|
|
|
|
"github.com/edwarnicke/exechelper"
|
|
)
|
|
|
|
func (s *VethsSuite) TestLDPreloadIperfVpp() {
|
|
t := s.T()
|
|
var clnVclConf, srvVclConf Stanza
|
|
|
|
srvInstance := "vpp-ldp-srv"
|
|
clnInstance := "vpp-ldp-cln"
|
|
srvPath := "/tmp/" + srvInstance
|
|
clnPath := "/tmp/" + clnInstance
|
|
srvVcl := srvPath + "/vcl_srv.conf"
|
|
clnVcl := clnPath + "/vcl_cln.conf"
|
|
|
|
exechelper.Run("mkdir " + srvPath)
|
|
exechelper.Run("mkdir " + clnPath)
|
|
|
|
ldpreload := os.Getenv("HST_LDPRELOAD")
|
|
s.Assert().NotEqual("", ldpreload)
|
|
|
|
ldpreload = "LD_PRELOAD=" + ldpreload
|
|
|
|
stopServerCh := make(chan struct{}, 1)
|
|
srvCh := make(chan error, 1)
|
|
clnCh := make(chan error)
|
|
|
|
fmt.Println("starting VPPs")
|
|
|
|
err := dockerRun(srvInstance, fmt.Sprintf("-v /tmp/%s:/tmp", srvInstance))
|
|
if err != nil {
|
|
t.Errorf("%v", err)
|
|
return
|
|
}
|
|
defer func() { exechelper.Run("docker stop " + srvInstance) }()
|
|
|
|
err = dockerRun(clnInstance, fmt.Sprintf("-v /tmp/%s:/tmp", clnInstance))
|
|
if err != nil {
|
|
t.Errorf("%v", err)
|
|
return
|
|
}
|
|
defer func() { exechelper.Run("docker stop " + clnInstance) }()
|
|
|
|
_, err = hstExec("Configure2Veths srv", srvInstance)
|
|
if err != nil {
|
|
t.Errorf("%v", err)
|
|
return
|
|
}
|
|
|
|
_, err = hstExec("Configure2Veths cln", clnInstance)
|
|
if err != nil {
|
|
t.Errorf("%v", err)
|
|
return
|
|
}
|
|
|
|
err = clnVclConf.
|
|
NewStanza("vcl").
|
|
Append("rx-fifo-size 4000000").
|
|
Append("tx-fifo-size 4000000").
|
|
Append("app-scope-local").
|
|
Append("app-scope-global").
|
|
Append("use-mq-eventfd").
|
|
Append(fmt.Sprintf("app-socket-api /tmp/%s/Configure2Veths/var/run/app_ns_sockets/2", clnInstance)).Close().
|
|
SaveToFile(clnVcl)
|
|
if err != nil {
|
|
t.Errorf("%v", err)
|
|
t.FailNow()
|
|
}
|
|
|
|
err = srvVclConf.
|
|
NewStanza("vcl").
|
|
Append("rx-fifo-size 4000000").
|
|
Append("tx-fifo-size 4000000").
|
|
Append("app-scope-local").
|
|
Append("app-scope-global").
|
|
Append("use-mq-eventfd").
|
|
Append(fmt.Sprintf("app-socket-api /tmp/%s/Configure2Veths/var/run/app_ns_sockets/1", srvInstance)).Close().
|
|
SaveToFile(srvVcl)
|
|
if err != nil {
|
|
t.Errorf("%v", err)
|
|
t.FailNow()
|
|
}
|
|
fmt.Printf("attaching server to vpp")
|
|
|
|
// FIXME
|
|
time.Sleep(5 * time.Second)
|
|
|
|
srvEnv := append(os.Environ(), ldpreload, "VCL_CONFIG="+srvVcl)
|
|
go StartServerApp(srvCh, stopServerCh, srvEnv)
|
|
|
|
err = <-srvCh
|
|
if err != nil {
|
|
s.FailNow("vcl server", "%v", err)
|
|
}
|
|
|
|
fmt.Println("attaching client to vpp")
|
|
clnEnv := append(os.Environ(), ldpreload, "VCL_CONFIG="+clnVcl)
|
|
go StartClientApp(clnEnv, clnCh)
|
|
|
|
// wait for client's result
|
|
err = <-clnCh
|
|
if err != nil {
|
|
s.Failf("client", "%v", err)
|
|
}
|
|
|
|
// stop server
|
|
stopServerCh <- struct{}{}
|
|
}
|