diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-10-16 23:15:54 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-10-16 23:15:54 +0900 |
| commit | abb58e9a2f0e3b98e218bdc2d04fea5ceb58c3a5 (patch) | |
| tree | c3e875a942d0c1140e6b88b352089088dec6b813 /internal | |
| parent | 933f97e380fafe589ea66e4f396b50e0d5a0ac80 (diff) | |
internal/testsuite: optional insecure argument
This allows testing insecure configurations. This change also improves
error reporting and fixes non-startup-notification behaviour.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/testsuite/testsuite.go | 33 |
1 files changed, 25 insertions, 8 deletions
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 |
