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)
 }