aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--cmd/hakurei/testsuite/sandbox/main.go2
-rw-r--r--internal/testsuite/testsuite.go33
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