hs-test: container logging improvements 59/40959/1
authorAdrian Villin <[email protected]>
Fri, 31 May 2024 10:46:52 +0000 (06:46 -0400)
committerAdrian Villin <[email protected]>
Fri, 31 May 2024 10:46:52 +0000 (06:46 -0400)
- Reduced the amount of error messages while obtaining container logs
  when a test fails by keeping track of started containers. NginxPerf
  tests still have those error messages, because wrk/ab containers shut
  themselves down before the test ends.

Type: test

Change-Id: I40a193345e5b46aec1834774f23aebc822eee885
Signed-off-by: Adrian Villin <[email protected]>
extras/hs-test/container.go
extras/hs-test/hst_suite.go
extras/hs-test/http_test.go

index 83693f4..44d84d5 100644 (file)
@@ -162,7 +162,7 @@ func (c *Container) create() error {
 }
 
 func (c *Container) allocateCpus() {
-       c.suite.containerCount += 1
+       c.suite.startedContainers = append(c.suite.startedContainers, c)
        c.allocatedCpus = c.suite.AllocateCpus()
        c.suite.log("Allocated CPUs " + fmt.Sprint(c.allocatedCpus) + " to container " + c.name)
 }
index b8c0a42..26dcf4e 100644 (file)
@@ -30,19 +30,19 @@ var nConfiguredCpus = flag.Int("cpus", 1, "number of CPUs assigned to vpp")
 var vppSourceFileDir = flag.String("vppsrc", "", "vpp source file directory")
 
 type HstSuite struct {
-       containers       map[string]*Container
-       containerCount   int
-       volumes          []string
-       netConfigs       []NetConfig
-       netInterfaces    map[string]*NetInterface
-       ip4AddrAllocator *Ip4AddressAllocator
-       testIds          map[string]string
-       cpuAllocator     *CpuAllocatorT
-       cpuContexts      []*CpuContext
-       cpuPerVpp        int
-       pid              string
-       logger           *log.Logger
-       logFile          *os.File
+       containers        map[string]*Container
+       startedContainers []*Container
+       volumes           []string
+       netConfigs        []NetConfig
+       netInterfaces     map[string]*NetInterface
+       ip4AddrAllocator  *Ip4AddressAllocator
+       testIds           map[string]string
+       cpuAllocator      *CpuAllocatorT
+       cpuContexts       []*CpuContext
+       cpuPerVpp         int
+       pid               string
+       logger            *log.Logger
+       logFile           *os.File
 }
 
 func (s *HstSuite) SetupSuite() {
@@ -62,7 +62,7 @@ func (s *HstSuite) SetupSuite() {
 }
 
 func (s *HstSuite) AllocateCpus() []int {
-       cpuCtx, err := s.cpuAllocator.Allocate(s.containerCount, s.cpuPerVpp)
+       cpuCtx, err := s.cpuAllocator.Allocate(len(s.startedContainers), s.cpuPerVpp)
        s.assertNil(err)
        s.AddCpuContext(cpuCtx)
        return cpuCtx.cpus
@@ -96,7 +96,7 @@ func (s *HstSuite) skipIfUnconfiguring() {
 
 func (s *HstSuite) SetupTest() {
        s.log("Test Setup")
-       s.containerCount = 0
+       s.startedContainers = s.startedContainers[:0]
        s.skipIfUnconfiguring()
        s.setupVolumes()
        s.setupContainers()
@@ -152,11 +152,11 @@ func (s *HstSuite) logVppInstance(container *Container, maxLines int) {
 }
 
 func (s *HstSuite) hstFail() {
-       s.log("Containers: " + fmt.Sprint(s.containers))
-       for _, container := range s.containers {
+       for _, container := range s.startedContainers {
                out, err := container.log(20)
                if err != nil {
                        s.log("An error occured while obtaining '" + container.name + "' container logs: " + fmt.Sprint(err))
+                       s.log("The container might not be running - check logs in " + container.getLogDirPath())
                        continue
                }
                s.log("\nvvvvvvvvvvvvvvv " +
index ba0fdb3..4f7ed93 100644 (file)
@@ -257,7 +257,6 @@ func runNginxPerf(s *NoTopoSuite, mode, ab_or_wrk string) error {
                args += " -r"
                args += " http://" + serverAddress + ":80/64B.json"
                abCont.extraRunningArgs = args
-               time.Sleep(time.Second * 10)
                o, err := abCont.combinedOutput()
                rps := parseString(o, "Requests per second:")
                s.log(rps)