hs-test: skip vppctl assert on teardown 05/41905/2
authorAdrian Villin <[email protected]>
Tue, 10 Dec 2024 12:36:33 +0000 (13:36 +0100)
committerFlorin Coras <[email protected]>
Tue, 10 Dec 2024 23:05:53 +0000 (23:05 +0000)
- core dump check would get skipped if vpp crashed and vppctl
  was called on teardown

Type: test

Change-Id: I9dda7036042158332c8ec815f6eb4bb3c2f7000f
Signed-off-by: Adrian Villin <[email protected]>
extras/hs-test/infra/vppinstance.go

index d40fbff..96e162c 100644 (file)
@@ -9,6 +9,7 @@ import (
        "os"
        "os/exec"
        "os/signal"
+       "runtime"
        "strconv"
        "strings"
        "syscall"
@@ -244,7 +245,23 @@ func (vpp *VppInstance) Vppctl(command string, arguments ...any) string {
                vpp.Container.Name, vpp.getCliSocket(), vppCliCommand)
        vpp.getSuite().Log(containerExecCommand)
        output, err := exechelper.CombinedOutput(containerExecCommand)
-       vpp.getSuite().AssertNil(err)
+
+       // If an error occurs, retrieve the caller function's name.
+       // If retrieving the caller name fails, perform a regular assert.
+       // If the caller is 'teardown', only log the error instead of asserting.
+       if err != nil {
+               pc, _, _, ok := runtime.Caller(1)
+               if !ok {
+                       vpp.getSuite().AssertNil(err)
+               } else {
+                       fn := runtime.FuncForPC(pc)
+                       if fn != nil && strings.Contains(fn.Name(), "TearDownTest") {
+                               vpp.getSuite().Log("vppctl failed in test teardown (skipping assert): %v", err)
+                       } else {
+                               vpp.getSuite().AssertNil(err)
+                       }
+               }
+       }
 
        return string(output)
 }