From 98a91e82608e6e30d4516b52556cdaaa9837ee24 Mon Sep 17 00:00:00 2001 From: Maros Ondrejicka Date: Tue, 6 Dec 2022 15:38:05 +0100 Subject: hs-test: use assert-like approach in test cases Type: test Signed-off-by: Maros Ondrejicka Change-Id: I1653001461d4dfc52f1fb3a9e0cf458a506b8324 --- extras/hs-test/framework_test.go | 12 +++++++ extras/hs-test/http_test.go | 59 ++++++++------------------------- extras/hs-test/ldp_test.go | 46 ++++++-------------------- extras/hs-test/linux_iperf_test.go | 9 ++--- extras/hs-test/proxy_test.go | 68 +++++++++++++++++++++----------------- extras/hs-test/utils.go | 27 --------------- extras/hs-test/vcl_test.go | 17 +++++----- 7 files changed, 84 insertions(+), 154 deletions(-) diff --git a/extras/hs-test/framework_test.go b/extras/hs-test/framework_test.go index cfc38011ed5..3df509f30c1 100755 --- a/extras/hs-test/framework_test.go +++ b/extras/hs-test/framework_test.go @@ -45,6 +45,18 @@ func (s *HstSuite) assertEqual(expected, actual interface{}, msgAndArgs ...inter } } +func (s *HstSuite) assertNotEqual(expected, actual interface{}, msgAndArgs ...interface{}) { + if !assert.NotEqual(s.T(), expected, actual, msgAndArgs...) { + s.hstFail() + } +} + +func (s *HstSuite) assertContains(testString, contains interface{}, msgAndArgs ...interface{}) { + if !assert.Contains(s.T(), testString, contains, msgAndArgs...) { + s.hstFail() + } +} + func (s *HstSuite) assertNotContains(testString, contains interface{}, msgAndArgs ...interface{}) { if !assert.NotContains(s.T(), testString, contains, msgAndArgs...) { s.hstFail() diff --git a/extras/hs-test/http_test.go b/extras/hs-test/http_test.go index 99b509fdcff..d2fb5a3c85a 100755 --- a/extras/hs-test/http_test.go +++ b/extras/hs-test/http_test.go @@ -1,8 +1,6 @@ package main import ( - "strings" - "github.com/edwarnicke/exechelper" ) @@ -15,26 +13,17 @@ func (s *NsSuite) TestHttpTps() { t.Log("starting vpp..") - err := dockerRun(dockerInstance, "") - if err != nil { - t.Errorf("%v", err) - return - } + s.assertNil(dockerRun(dockerInstance, ""), "failed to start docker") defer func() { exechelper.Run("docker stop " + dockerInstance) }() // start & configure vpp in the container - _, err = hstExec("ConfigureHttpTps", dockerInstance) - if err != nil { - t.Errorf("%v", err) - return - } + _, err := hstExec("ConfigureHttpTps", dockerInstance) + s.assertNil(err) go startWget(finished, server_ip, port, "client") // wait for client err = <-finished - if err != nil { - t.Errorf("%v", err) - } + s.assertNil(err) } func (s *VethsSuite) TestHttpCli() { @@ -42,49 +31,27 @@ func (s *VethsSuite) TestHttpCli() { srvInstance := "http-cli-srv" clnInstance := "http-cli-cln" - err := dockerRun(srvInstance, "") - if err != nil { - t.Errorf("%v", err) - return - } + s.assertNil(dockerRun(srvInstance, ""), "failed to start docker (srv)") defer func() { exechelper.Run("docker stop " + srvInstance) }() - err = dockerRun(clnInstance, "") - if err != nil { - t.Errorf("%v", err) - return - } + s.assertNil(dockerRun(clnInstance, ""), "failed to start docker (cln)") defer func() { exechelper.Run("docker stop " + clnInstance) }() - _, err = hstExec("Configure2Veths srv", srvInstance) - if err != nil { - t.Errorf("%v", err) - return - } + _, err := hstExec("Configure2Veths srv", srvInstance) + s.assertNil(err) _, err = hstExec("Configure2Veths cln", clnInstance) - if err != nil { - t.Errorf("%v", err) - return - } + s.assertNil(err) t.Log("configured IPs...") _, err = hstExec("RunHttpCliSrv", srvInstance) - if err != nil { - t.Errorf("%v", err) - return - } + s.assertNil(err) t.Log("configured http server") o, err := hstExec("RunHttpCliCln /show/version", clnInstance) - if err != nil { - t.Errorf("%v", err) - return - } - - if strings.Index(o, "") < 0 { - t.Error(" not found in the result!") - } + s.assertNil(err) + + s.assertContains(o, "", " not found in the result!") } diff --git a/extras/hs-test/ldp_test.go b/extras/hs-test/ldp_test.go index c219c82ea50..683c6a37525 100755 --- a/extras/hs-test/ldp_test.go +++ b/extras/hs-test/ldp_test.go @@ -9,7 +9,6 @@ import ( ) func (s *VethsSuite) TestLDPreloadIperfVpp() { - t := s.T() var clnVclConf, srvVclConf Stanza srvInstance := "vpp-ldp-srv" @@ -23,7 +22,7 @@ func (s *VethsSuite) TestLDPreloadIperfVpp() { exechelper.Run("mkdir " + clnPath) ldpreload := os.Getenv("HST_LDPRELOAD") - s.Assert().NotEqual("", ldpreload) + s.assertNotEqual("", ldpreload) ldpreload = "LD_PRELOAD=" + ldpreload @@ -33,31 +32,17 @@ func (s *VethsSuite) TestLDPreloadIperfVpp() { fmt.Println("starting VPPs") - err := dockerRun(srvInstance, fmt.Sprintf("-v /tmp/%s:/tmp", srvInstance)) - if err != nil { - t.Errorf("%v", err) - return - } + s.assertNil(dockerRun(srvInstance, fmt.Sprintf("-v /tmp/%s:/tmp", srvInstance)), "failed to start docker (srv)") 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 - } + s.assertNil(dockerRun(clnInstance, fmt.Sprintf("-v /tmp/%s:/tmp", clnInstance)), "failed to start docker (cln)") defer func() { exechelper.Run("docker stop " + clnInstance) }() - _, err = hstExec("Configure2Veths srv", srvInstance) - if err != nil { - t.Errorf("%v", err) - return - } + _, err := hstExec("Configure2Veths srv", srvInstance) + s.assertNil(err) _, err = hstExec("Configure2Veths cln", clnInstance) - if err != nil { - t.Errorf("%v", err) - return - } + s.assertNil(err) err = clnVclConf. NewStanza("vcl"). @@ -68,10 +53,7 @@ func (s *VethsSuite) TestLDPreloadIperfVpp() { 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() - } + s.assertNil(err) err = srvVclConf. NewStanza("vcl"). @@ -82,10 +64,8 @@ func (s *VethsSuite) TestLDPreloadIperfVpp() { 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() - } + s.assertNil(err) + fmt.Printf("attaching server to vpp") // FIXME @@ -95,9 +75,7 @@ func (s *VethsSuite) TestLDPreloadIperfVpp() { go StartServerApp(srvCh, stopServerCh, srvEnv) err = <-srvCh - if err != nil { - s.FailNow("vcl server", "%v", err) - } + s.assertNil(err) fmt.Println("attaching client to vpp") clnEnv := append(os.Environ(), ldpreload, "VCL_CONFIG="+clnVcl) @@ -105,9 +83,7 @@ func (s *VethsSuite) TestLDPreloadIperfVpp() { // wait for client's result err = <-clnCh - if err != nil { - s.Failf("client", "%v", err) - } + s.assertNil(err) // stop server stopServerCh <- struct{}{} diff --git a/extras/hs-test/linux_iperf_test.go b/extras/hs-test/linux_iperf_test.go index 92a85cf6bbe..bef07fb7d65 100755 --- a/extras/hs-test/linux_iperf_test.go +++ b/extras/hs-test/linux_iperf_test.go @@ -11,16 +11,11 @@ func (s *TapSuite) TestLinuxIperf() { go StartServerApp(srvCh, stopServerCh, nil) err := <-srvCh - if err != nil { - t.Errorf("%v", err) - t.FailNow() - } + s.assertNil(err) t.Log("server running") go StartClientApp(nil, clnCh) t.Log("client running") err = <-clnCh - if err != nil { - s.Failf("client", "%v", err) - } + s.assertNil(err) t.Log("Test completed") } diff --git a/extras/hs-test/proxy_test.go b/extras/hs-test/proxy_test.go index d426b61a33f..0ada6fad0f7 100755 --- a/extras/hs-test/proxy_test.go +++ b/extras/hs-test/proxy_test.go @@ -4,42 +4,32 @@ import ( "context" "fmt" "os" - "testing" "github.com/edwarnicke/exechelper" ) -func testProxyHttpTcp(t *testing.T, dockerInstance, action string, proxySetup func() error) error { +func testProxyHttpTcp(s *NsSuite, dockerInstance, action string, proxySetup func() error) error { const outputFile = "test.data" const srcFile = "10M" stopServer := make(chan struct{}, 1) serverRunning := make(chan struct{}, 1) volumeArgs := fmt.Sprintf("-v shared-vol:/tmp/%s", dockerInstance) - err := dockerRun(dockerInstance, volumeArgs) - if err != nil { - return fmt.Errorf("failed to start container: %v", err) - } + s.assertNil(dockerRun(dockerInstance, volumeArgs), "failed to start container") defer func() { exechelper.Run("docker stop " + dockerInstance) }() // start & configure vpp in the container - _, err = hstExec(action, dockerInstance) - if err != nil { - return fmt.Errorf("error starting vpp in container: %v", err) - } + _, err := hstExec(action, dockerInstance) + s.assertNil(err) fmt.Println("VPP running and configured...") - if err := proxySetup(); err != nil { - return fmt.Errorf("failed to setup proxy: %v", err) - } + s.assertNil(proxySetup(), "failed to setup proxy") fmt.Println("Proxy configured...") // create test file err = exechelper.Run(fmt.Sprintf("ip netns exec server truncate -s %s %s", srcFile, srcFile)) - if err != nil { - return fmt.Errorf("failed to run truncate command") - } + s.assertNil(err, "failed to run truncate command") defer func() { os.Remove(srcFile) }() fmt.Println("Test file created...") @@ -56,30 +46,48 @@ func testProxyHttpTcp(t *testing.T, dockerInstance, action string, proxySetup fu c := fmt.Sprintf("ip netns exec client wget --retry-connrefused --retry-on-http-error=503 --tries=10 -O %s 10.0.0.2:555/%s", outputFile, srcFile) _, err = exechelper.CombinedOutput(c) - if err != nil { - return fmt.Errorf("failed to run wget: %v", err) - } + s.assertNil(err, "failed to run wget") stopServer <- struct{}{} defer func() { os.Remove(outputFile) }() - if err = assertFileSize(outputFile, srcFile); err != nil { + s.assertNil(assertFileSize(outputFile, srcFile)) + return nil +} + +func setupEnvoy(ctx context.Context, dockerInstance string) error { + errCh := startEnvoy(ctx, dockerInstance) + select { + case err := <-errCh: return err + default: } + + go func(ctx context.Context, errCh <-chan error) { + for { + select { + // handle cancel() call from outside to gracefully stop the routine + case <-ctx.Done(): + return + default: + select { + case err := <-errCh: + fmt.Printf("error while running envoy: %v", err) + default: + } + } + } + }(ctx, errCh) return nil } func (s *NsSuite) TestVppProxyHttpTcp() { - t := s.T() dockerInstance := "vpp-proxy" - err := testProxyHttpTcp(t, dockerInstance, "ConfigureVppProxy", configureVppProxy) - if err != nil { - t.Errorf("%v", err) - } + err := testProxyHttpTcp(s, dockerInstance, "ConfigureVppProxy", configureVppProxy) + s.assertNil(err) } func (s *NsSuite) TestEnvoyProxyHttpTcp() { - t := s.T() exechelper.Run("docker volume create --name=shared-vol") defer func() { exechelper.Run("docker stop envoy") @@ -88,11 +96,9 @@ func (s *NsSuite) TestEnvoyProxyHttpTcp() { ctx, cancel := context.WithCancel(context.Background()) dockerInstance := "vpp-envoy" - err := testProxyHttpTcp(t, dockerInstance, "ConfigureEnvoyProxy", func() error { - return setupEnvoy(t, ctx, dockerInstance) + err := testProxyHttpTcp(s, dockerInstance, "ConfigureEnvoyProxy", func() error { + return setupEnvoy(ctx, dockerInstance) }) - if err != nil { - t.Errorf("%v", err) - } + s.assertNil(err) cancel() } diff --git a/extras/hs-test/utils.go b/extras/hs-test/utils.go index 4dda4e462b0..581b8461082 100755 --- a/extras/hs-test/utils.go +++ b/extras/hs-test/utils.go @@ -10,7 +10,6 @@ import ( "os" "os/exec" "strings" - "testing" "time" "github.com/edwarnicke/exechelper" @@ -249,32 +248,6 @@ func startEnvoy(ctx context.Context, dockerInstance string) <-chan error { return errCh } -func setupEnvoy(t *testing.T, ctx context.Context, dockerInstance string) error { - errCh := startEnvoy(ctx, dockerInstance) - select { - case err := <-errCh: - return err - default: - } - - go func(ctx context.Context, errCh <-chan error) { - for { - select { - // handle cancel() call from outside to gracefully stop the routine - case <-ctx.Done(): - return - default: - select { - case err := <-errCh: - fmt.Printf("error while running envoy: %v", err) - default: - } - } - } - }(ctx, errCh) - return nil -} - func configureVppProxy() error { _, err := dockerExec("vppctl test proxy server server-uri tcp://10.0.0.2/555 client-uri tcp://10.0.1.1/666", "vpp-proxy") diff --git a/extras/hs-test/vcl_test.go b/extras/hs-test/vcl_test.go index 9febe8bc4d9..8fd64f1dcd6 100755 --- a/extras/hs-test/vcl_test.go +++ b/extras/hs-test/vcl_test.go @@ -31,25 +31,25 @@ func (s *VethsSuite) testVclEcho(proto string) { serverVppContainer, err := s.NewContainer(srvInstance) s.assertNil(err) serverVppContainer.addVolume(serverVolume, "/tmp/Configure2Veths") - serverVppContainer.run() + s.assertNil(serverVppContainer.run()) clnInstance := "vpp-vcl-test-cln" clientVppContainer, err := s.NewContainer(clnInstance) s.assertNil(err) clientVppContainer.addVolume(clientVolume, "/tmp/Configure2Veths") - clientVppContainer.run(); + s.assertNil(clientVppContainer.run()) echoSrv := "echo-srv" serverEchoContainer, err := s.NewContainer(echoSrv) s.assertNil(err) serverEchoContainer.addVolume(serverVolume, "/tmp/" + echoSrv) - serverEchoContainer.run() + s.assertNil(serverEchoContainer.run()) echoCln := "echo-cln" clientEchoContainer, err := s.NewContainer(echoCln) s.assertNil(err) clientEchoContainer.addVolume(clientVolume, "/tmp/" + echoCln) - clientEchoContainer.run() + s.assertNil(clientEchoContainer.run()) _, err = hstExec("Configure2Veths srv", srvInstance) s.assertNil(err) @@ -63,6 +63,7 @@ func (s *VethsSuite) testVclEcho(proto string) { o, err := hstExec("RunEchoClient "+proto, echoCln) s.assertNil(err) + fmt.Println(o) } @@ -82,25 +83,25 @@ func (s *VethsSuite) testRetryAttach(proto string) { serverVppContainer, err := s.NewContainer(srvInstance) s.assertNil(err) serverVppContainer.addVolume(serverVolume, "/tmp/Configure2Veths") - serverVppContainer.run() + s.assertNil(serverVppContainer.run()) clnInstance := "vpp-vcl-test-cln" clientVppContainer, err := s.NewContainer(clnInstance) s.assertNil(err) clientVppContainer.addVolume(clientVolume, "/tmp/Configure2Veths") - clientVppContainer.run(); + s.assertNil(clientVppContainer.run()) echoSrv := "echo-srv" serverEchoContainer, err := s.NewContainer(echoSrv) s.assertNil(err) serverEchoContainer.addVolume(serverVolume, "/tmp/" + echoSrv) - serverEchoContainer.run() + s.assertNil(serverEchoContainer.run()) echoCln := "echo-cln" clientEchoContainer, err := s.NewContainer(echoCln) s.assertNil(err) clientEchoContainer.addVolume(clientVolume, "/tmp/" + echoCln) - clientEchoContainer.run() + s.assertNil(clientEchoContainer.run()) _, err = hstExec("Configure2Veths srv-with-preset-hw-addr", srvInstance) s.assertNil(err) -- cgit 1.2.3-korg