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/proxy_test.go | 68 ++++++++++++++++++++++++-------------------- 1 file changed, 37 insertions(+), 31 deletions(-) (limited to 'extras/hs-test/proxy_test.go') 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() } -- cgit 1.2.3-korg