hs-test: skip vppctl assert on teardown
- 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 <avillin@cisco.com>
diff --git a/extras/hs-test/infra/vppinstance.go b/extras/hs-test/infra/vppinstance.go
index d40fbff..96e162c 100644
--- a/extras/hs-test/infra/vppinstance.go
+++ b/extras/hs-test/infra/vppinstance.go
@@ -9,6 +9,7 @@
"os"
"os/exec"
"os/signal"
+ "runtime"
"strconv"
"strings"
"syscall"
@@ -244,7 +245,23 @@
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)
}