From 1c2f0f22d9500c2fe9ff7fbd469b0130c76684f0 Mon Sep 17 00:00:00 2001 From: Adrian Villin Date: Tue, 10 Dec 2024 13:36:33 +0100 Subject: [PATCH] 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 --- extras/hs-test/infra/vppinstance.go | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) 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) }