diff options
author | Adrian Villin <avillin@cisco.com> | 2024-12-10 13:36:33 +0100 |
---|---|---|
committer | Florin Coras <florin.coras@gmail.com> | 2024-12-10 23:05:53 +0000 |
commit | 1c2f0f22d9500c2fe9ff7fbd469b0130c76684f0 (patch) | |
tree | b7d7d20cea474fbcc721d9cb79a60df7ea11e1b3 | |
parent | 499a9dd8756b4d95a511917c7248506baf6bb44f (diff) |
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>
-rw-r--r-- | extras/hs-test/infra/vppinstance.go | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/extras/hs-test/infra/vppinstance.go b/extras/hs-test/infra/vppinstance.go index d40fbffe63c..96e162cc395 100644 --- a/extras/hs-test/infra/vppinstance.go +++ b/extras/hs-test/infra/vppinstance.go @@ -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) } |