aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-10-18 19:46:15 +0900
committerOphestra <cat@gensokyo.uk>2026-10-18 19:46:15 +0900
commit6dca6818a254dd826a18138924faa1f72ab70d56 (patch)
tree5033831a2c8ffed86bf8e17e3979e25843f4a185
parent6d42183fc8ef6d7c300130c5491d7f4c7a9a8ef5 (diff)
cmd/hakurei/testsuite: improve sandbox reporting
This avoids swallowing error messages from failed container startups. Signed-off-by: Ophestra <cat@gensokyo.uk>
-rw-r--r--cmd/hakurei/testsuite/sandbox/main.go25
-rw-r--r--internal/testsuite/testsuite.go11
2 files changed, 25 insertions, 11 deletions
diff --git a/cmd/hakurei/testsuite/sandbox/main.go b/cmd/hakurei/testsuite/sandbox/main.go
index bd36d1b8..2b2cbed2 100644
--- a/cmd/hakurei/testsuite/sandbox/main.go
+++ b/cmd/hakurei/testsuite/sandbox/main.go
@@ -273,7 +273,7 @@ func main() {
defer cancel()
pid, done := mustStart(c, testsuite.NewSerial(), 0, &cred)
- testsuite.MustCheckFilter(pid, testdata.SumPD)
+ testsuite.MustCheckFilter("pd", pid, testdata.SumPD)
if err := testsuite.FilterTerminated(<-done); err != nil {
log.Fatal(err)
}
@@ -340,9 +340,13 @@ func main() {
for name, tc := range testdata.All() {
wg.Go(func() {
- _, pid := testsuite.MustStartHakurei(
- ctx, &wg, &cred, dbusEnv,
+ c, cancel := context.WithCancel(ctx)
+
+ _, pid, err := testsuite.StartHakurei(
+ c, &wg, &cred, dbusEnv, nil,
func(err error, output string) {
+ defer cancel()
+
log.Printf("completed test case %s", name)
if err != nil {
log.Fatalf("test case %s: %v\n%s", name, err, output)
@@ -350,10 +354,17 @@ func main() {
}, true, true, false, false, &tc.Hakurei,
)
- testsuite.MustCheckFilter(
- pid,
- tc.Sum,
- )
+ if err != nil {
+ log.Printf(
+ "cannot start test case %s: %v",
+ name,
+ err,
+ )
+ cancel()
+ // onDone eventually terminates the test suite
+ } else {
+ testsuite.MustCheckFilter(name, pid, tc.Sum)
+ }
})
}
diff --git a/internal/testsuite/testsuite.go b/internal/testsuite/testsuite.go
index dd261afd..395bf8f2 100644
--- a/internal/testsuite/testsuite.go
+++ b/internal/testsuite/testsuite.go
@@ -238,10 +238,13 @@ func AssertOutput(action, stdout, stderr string) (
// MustCheckFilter is like [CheckFilter], but terminates the test suite if a
// non-nil error is returned. Otherwise, the tracee is terminated after it
// resumes.
-func MustCheckFilter(pid int, sum [sha512.Size]byte) {
- // podman installs its own filter
- if err := CheckFilter(pid, 1, sum); err != nil {
- log.Fatal(err)
+func MustCheckFilter(name string, pid int, sum [sha512.Size]byte) {
+ if err := CheckFilter(
+ pid,
+ 1, /* podman installs its own filter */
+ sum,
+ ); err != nil {
+ log.Fatalln(name, err)
} else if err = syscall.Kill(pid, syscall.SIGTERM); err != nil {
log.Fatalf("cannot terminate tracee: %v", err)
}