diff options
Diffstat (limited to 'extras/hs-test/infra')
-rw-r--r-- | extras/hs-test/infra/container.go | 5 | ||||
-rw-r--r-- | extras/hs-test/infra/suite_ldp.go | 5 | ||||
-rw-r--r-- | extras/hs-test/infra/suite_vpp_proxy.go | 1 | ||||
-rw-r--r-- | extras/hs-test/infra/utils.go | 32 | ||||
-rw-r--r-- | extras/hs-test/infra/vppinstance.go | 6 |
5 files changed, 44 insertions, 5 deletions
diff --git a/extras/hs-test/infra/container.go b/extras/hs-test/infra/container.go index 918c19e669e..efc317fa96d 100644 --- a/extras/hs-test/infra/container.go +++ b/extras/hs-test/infra/container.go @@ -460,7 +460,7 @@ func (c *Container) ExecServer(useEnvVars bool, command string, arguments ...any c.Suite.AssertNil(exechelper.Run(containerExecCommand)) } -func (c *Container) Exec(useEnvVars bool, command string, arguments ...any) string { +func (c *Container) Exec(useEnvVars bool, command string, arguments ...any) (string, error) { var envVars string serverCommand := fmt.Sprintf(command, arguments...) if useEnvVars { @@ -472,8 +472,7 @@ func (c *Container) Exec(useEnvVars bool, command string, arguments ...any) stri GinkgoHelper() c.Suite.Log(containerExecCommand) byteOutput, err := exechelper.CombinedOutput(containerExecCommand) - c.Suite.AssertNil(err, fmt.Sprint(err)) - return string(byteOutput) + return string(byteOutput), err } func (c *Container) saveLogs() { diff --git a/extras/hs-test/infra/suite_ldp.go b/extras/hs-test/infra/suite_ldp.go index 408fea31325..53fe10086d0 100644 --- a/extras/hs-test/infra/suite_ldp.go +++ b/extras/hs-test/infra/suite_ldp.go @@ -97,6 +97,11 @@ func (s *LdpSuite) SetupTest() { } func (s *LdpSuite) TearDownTest() { + if CurrentSpecReport().Failed() { + s.CollectIperfLogs(s.Containers.ServerVpp) + s.CollectRedisServerLogs(s.Containers.ServerVpp) + } + for _, container := range s.StartedContainers { delete(container.EnvVars, "LD_PRELOAD") delete(container.EnvVars, "VCL_CONFIG") diff --git a/extras/hs-test/infra/suite_vpp_proxy.go b/extras/hs-test/infra/suite_vpp_proxy.go index 252d01eac9a..137bbb679d8 100644 --- a/extras/hs-test/infra/suite_vpp_proxy.go +++ b/extras/hs-test/infra/suite_vpp_proxy.go @@ -93,6 +93,7 @@ func (s *VppProxySuite) TearDownTest() { s.Log(vpp.Vppctl("show session verbose 2")) s.Log(vpp.Vppctl("show error")) s.CollectNginxLogs(s.Containers.NginxServerTransient) + s.CollectIperfLogs(s.Containers.IperfS) } s.HstSuite.TearDownTest() } diff --git a/extras/hs-test/infra/utils.go b/extras/hs-test/infra/utils.go index bd603f863fc..2f4328b4a74 100644 --- a/extras/hs-test/infra/utils.go +++ b/extras/hs-test/infra/utils.go @@ -18,6 +18,8 @@ import ( const networkTopologyDir string = "topo-network/" const containerTopologyDir string = "topo-containers/" const HttpCapsuleTypeDatagram = uint64(0) +const iperfLogFileName = "iperf.log" +const redisLogFileName = "redis-server.log" type Stanza struct { content string @@ -223,6 +225,36 @@ func (s *HstSuite) CollectEnvoyLogs(envoyContainer *Container) { } } +func (s *HstSuite) IperfLogFileName(serverContainer *Container) string { + return serverContainer.GetContainerWorkDir() + "/" + serverContainer.Name + "-" + iperfLogFileName +} + +func (s *HstSuite) CollectIperfLogs(serverContainer *Container) { + targetDir := serverContainer.Suite.getLogDirPath() + source := serverContainer.GetHostWorkDir() + "/" + serverContainer.Name + "-" + iperfLogFileName + cmd := exec.Command("cp", "-t", targetDir, source) + s.Log(cmd.String()) + err := cmd.Run() + if err != nil { + s.Log(fmt.Sprint(err)) + } +} + +func (s *HstSuite) RedisServerLogFileName(serverContainer *Container) string { + return serverContainer.GetContainerWorkDir() + "/" + serverContainer.Name + "-" + redisLogFileName +} + +func (s *HstSuite) CollectRedisServerLogs(serverContainer *Container) { + targetDir := serverContainer.Suite.getLogDirPath() + source := serverContainer.GetHostWorkDir() + "/" + serverContainer.Name + "-" + redisLogFileName + cmd := exec.Command("cp", "-t", targetDir, source) + s.Log(cmd.String()) + err := cmd.Run() + if err != nil { + s.Log(fmt.Sprint(err)) + } +} + func (s *HstSuite) StartIperfServerApp(running chan error, done chan struct{}, env []string) { cmd := exec.Command("iperf3", "-4", "-s", "-p", s.GetPortFromPpid()) if env != nil { diff --git a/extras/hs-test/infra/vppinstance.go b/extras/hs-test/infra/vppinstance.go index 370d2be38d1..59d17de4d20 100644 --- a/extras/hs-test/infra/vppinstance.go +++ b/extras/hs-test/infra/vppinstance.go @@ -243,9 +243,11 @@ func (vpp *VppInstance) Start() error { } func (vpp *VppInstance) Stop() { - pid := strings.TrimSpace(vpp.Container.Exec(false, "pidof vpp")) + pid, err := vpp.Container.Exec(false, "pidof vpp") + pid = strings.TrimSpace(pid) // Stop VPP only if it's still running - if len(pid) > 0 { + if err == nil { + vpp.getSuite().Log("Stopping VPP") vpp.Container.Exec(false, "bash -c \"kill -15 "+pid+"\"") } } |