diff options
| -rw-r--r-- | cmd/hakurei/testsuite/sandbox/main.go | 2 | ||||
| -rw-r--r-- | internal/testsuite/testsuite.go | 33 |
2 files changed, 26 insertions, 9 deletions
diff --git a/cmd/hakurei/testsuite/sandbox/main.go b/cmd/hakurei/testsuite/sandbox/main.go index a85ec485..11c87857 100644 --- a/cmd/hakurei/testsuite/sandbox/main.go +++ b/cmd/hakurei/testsuite/sandbox/main.go @@ -293,7 +293,7 @@ func main() { if err != nil { log.Fatalf("test case %s: %v", name, err) } - }, true, false, &tc.Hakurei, + }, true, true, false, false, &tc.Hakurei, ) testsuite.MustCheckFilter( diff --git a/internal/testsuite/testsuite.go b/internal/testsuite/testsuite.go index fee4952c..09c9af0a 100644 --- a/internal/testsuite/testsuite.go +++ b/internal/testsuite/testsuite.go @@ -10,6 +10,7 @@ import ( "crypto/sha512" "encoding/json" "errors" + "fmt" "io" "log" "os" @@ -478,15 +479,23 @@ func StartHakurei( dbusEnv string, processCommand func(cmd *exec.Cmd), onDone func(err error, output string), - scan, wait, verbose bool, + scan, wait, verbose, insecure bool, c *hst.Config, ) (p hst.State, pid int, err error) { s := store.New(check.MustAbs("/tmp/hakurei.0/state")) - hakureiFlags := "" + var hakureiFlags string if verbose { hakureiFlags += " -v" } + if insecure { + hakureiFlags += " --insecure" + } + + var notifySuffix string + if wait { + notifySuffix += " 1>&3" + } cmd := exec.CommandContext(ctx, "script", "/dev/null", @@ -494,7 +503,7 @@ func StartHakurei( "-qec", "hakurei"+hakureiFlags+" run "+ "--identifier-fd=5"+ - " 4 1>&3", + " 4"+notifySuffix, ) cmd.SysProcAttr = &syscall.SysProcAttr{ Pdeathsig: syscall.SIGTERM, @@ -552,6 +561,9 @@ func StartHakurei( var id hst.ID if _, err = io.ReadFull(ident, id[:]); err != nil { _, _ = notify.Close(), ident.Close() + if !scan && errors.Is(err, io.EOF) { + err = nil + } return } else if err = ident.Close(); err != nil { _ = notify.Close() @@ -579,7 +591,7 @@ func StartHakurei( if entry.ID == id { ok = true if _, err = entry.Load(&p, nil); err != nil { - log.Fatal(err) + return } break } @@ -588,7 +600,8 @@ func StartHakurei( log.Fatal(err) } if !ok { - log.Fatalf("instance %s is not present in store", id) + err = fmt.Errorf("instance %s is not present in store", id.String()) + return } var stat syscall.Stat_t @@ -658,7 +671,7 @@ func MustStartHakurei( cred *syscall.Credential, dbusEnv string, onDone func(err error, output string), - wait, verbose bool, + scan, wait, verbose, insecure bool, c *hst.Config, ) (p hst.State, pid int) { _ctx, cancel := context.WithCancel(ctx) @@ -669,10 +682,14 @@ func MustStartHakurei( nil, func(err error, output string) { defer cancel() onDone(err, output) - }, true, wait, verbose, c, + }, scan, wait, verbose, insecure, c, ) if err != nil { - log.Printf("cannot start hakurei container: %v", err) + log.Printf( + "(%s) cannot start hakurei container: %v", + c.Container.Hostname, + err, + ) cancel() } return |
