|
|
|
@@ -142,30 +142,47 @@ func TestShimEntrypoint(t *testing.T) {
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
|
|
|
|
call("getppid", stub.ExpectArgs{}, 0xbad, nil),
|
|
|
|
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", outcomeState{}, nil}, nil, syscall.EBADF),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", outcomeState{}, nil}, nil, syscall.EBADF),
|
|
|
|
call("fatal", stub.ExpectArgs{[]any{"invalid config descriptor"}}, nil, nil),
|
|
|
|
call("fatal", stub.ExpectArgs{[]any{"invalid config descriptor"}}, nil, nil),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// deferred
|
|
|
|
|
|
|
|
call("wKeepAlive", stub.ExpectArgs{}, nil, nil),
|
|
|
|
}}, nil},
|
|
|
|
}}, nil},
|
|
|
|
|
|
|
|
|
|
|
|
{"receive env", func(k *kstub) error { shimEntrypoint(k); return nil }, stub.Expect{Calls: []stub.Call{
|
|
|
|
{"receive env", func(k *kstub) error { shimEntrypoint(k); return nil }, stub.Expect{Calls: []stub.Call{
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
|
|
|
|
call("getppid", stub.ExpectArgs{}, 0xbad, nil),
|
|
|
|
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", outcomeState{}, nil}, nil, container.ErrReceiveEnv),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", outcomeState{}, nil}, nil, container.ErrReceiveEnv),
|
|
|
|
call("fatal", stub.ExpectArgs{[]any{"HAKUREI_SHIM not set"}}, nil, nil),
|
|
|
|
call("fatal", stub.ExpectArgs{[]any{"HAKUREI_SHIM not set"}}, nil, nil),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// deferred
|
|
|
|
|
|
|
|
call("wKeepAlive", stub.ExpectArgs{}, nil, nil),
|
|
|
|
}}, nil},
|
|
|
|
}}, nil},
|
|
|
|
|
|
|
|
|
|
|
|
{"receive strange", func(k *kstub) error { shimEntrypoint(k); return nil }, stub.Expect{Calls: []stub.Call{
|
|
|
|
{"receive strange", func(k *kstub) error { shimEntrypoint(k); return nil }, stub.Expect{Calls: []stub.Call{
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
|
|
|
|
call("getppid", stub.ExpectArgs{}, 0xbad, nil),
|
|
|
|
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", outcomeState{}, nil}, nil, stub.UniqueError(10)),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", outcomeState{}, nil}, nil, stub.UniqueError(10)),
|
|
|
|
call("fatalf", stub.ExpectArgs{"cannot receive shim setup params: %v", []any{stub.UniqueError(10)}}, nil, nil),
|
|
|
|
call("fatalf", stub.ExpectArgs{"cannot receive shim setup params: %v", []any{stub.UniqueError(10)}}, nil, nil),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// deferred
|
|
|
|
|
|
|
|
call("wKeepAlive", stub.ExpectArgs{}, nil, nil),
|
|
|
|
}}, nil},
|
|
|
|
}}, nil},
|
|
|
|
|
|
|
|
|
|
|
|
{"invalid state", func(k *kstub) error { shimEntrypoint(k); return nil }, stub.Expect{Calls: []stub.Call{
|
|
|
|
{"invalid state", func(k *kstub) error { shimEntrypoint(k); return nil }, stub.Expect{Calls: []stub.Call{
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
|
|
|
|
call("getppid", stub.ExpectArgs{}, 0xbad, nil),
|
|
|
|
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", func() outcomeState {
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", func() outcomeState {
|
|
|
|
state := templateState
|
|
|
|
state := templateState
|
|
|
|
state.Shim = newShimParams()
|
|
|
|
state.Shim = newShimParams()
|
|
|
|
@@ -174,15 +191,16 @@ func TestShimEntrypoint(t *testing.T) {
|
|
|
|
}(), nil}, nil, nil),
|
|
|
|
}(), nil}, nil, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("fatal", stub.ExpectArgs{[]any{"impossible outcome state reached\n"}}, nil, nil),
|
|
|
|
call("fatal", stub.ExpectArgs{[]any{"impossible outcome state reached\n"}}, nil, nil),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// deferred
|
|
|
|
|
|
|
|
call("wKeepAlive", stub.ExpectArgs{}, nil, nil),
|
|
|
|
}}, nil},
|
|
|
|
}}, nil},
|
|
|
|
|
|
|
|
|
|
|
|
{"sigaction pipe", func(k *kstub) error { shimEntrypoint(k); return nil }, stub.Expect{Calls: []stub.Call{
|
|
|
|
{"sigaction pipe", func(k *kstub) error { shimEntrypoint(k); return nil }, stub.Expect{Calls: []stub.Call{
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", templateState, nil}, nil, nil),
|
|
|
|
call("getppid", stub.ExpectArgs{}, 0xbad, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, &os.SyscallError{Syscall: "pipe2", Err: stub.UniqueError(9)}),
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, &os.SyscallError{Syscall: "pipe2", Err: stub.UniqueError(9)}),
|
|
|
|
call("fatal", stub.ExpectArgs{[]any{"pipe2: unique error 9 injected by the test suite"}}, nil, nil),
|
|
|
|
call("fatal", stub.ExpectArgs{[]any{"pipe2: unique error 9 injected by the test suite"}}, nil, nil),
|
|
|
|
}}, nil},
|
|
|
|
}}, nil},
|
|
|
|
@@ -191,9 +209,7 @@ func TestShimEntrypoint(t *testing.T) {
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", templateState, nil}, nil, nil),
|
|
|
|
call("getppid", stub.ExpectArgs{}, 0xbad, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, syscall.ENOTRECOVERABLE),
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, syscall.ENOTRECOVERABLE),
|
|
|
|
call("fatalf", stub.ExpectArgs{"cannot install SIGCONT handler: %v", []any{syscall.ENOTRECOVERABLE}}, nil, nil),
|
|
|
|
call("fatalf", stub.ExpectArgs{"cannot install SIGCONT handler: %v", []any{syscall.ENOTRECOVERABLE}}, nil, nil),
|
|
|
|
}}, nil},
|
|
|
|
}}, nil},
|
|
|
|
@@ -202,9 +218,7 @@ func TestShimEntrypoint(t *testing.T) {
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", templateState, nil}, nil, nil),
|
|
|
|
call("getppid", stub.ExpectArgs{}, 0xbad, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, stub.UniqueError(8)),
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, stub.UniqueError(8)),
|
|
|
|
call("fatalf", stub.ExpectArgs{"cannot set up exit request: %v", []any{stub.UniqueError(8)}}, nil, nil),
|
|
|
|
call("fatalf", stub.ExpectArgs{"cannot set up exit request: %v", []any{stub.UniqueError(8)}}, nil, nil),
|
|
|
|
}}, nil},
|
|
|
|
}}, nil},
|
|
|
|
@@ -213,10 +227,11 @@ func TestShimEntrypoint(t *testing.T) {
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
|
|
|
|
call("getppid", stub.ExpectArgs{}, 0xbad, nil),
|
|
|
|
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", templateState, nil}, nil, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", templateState, nil}, nil, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
|
|
|
|
call("prctl", stub.ExpectArgs{uintptr(syscall.PR_SET_PDEATHSIG), uintptr(syscall.SIGCONT), uintptr(0)}, nil, stub.UniqueError(7)),
|
|
|
|
call("prctl", stub.ExpectArgs{uintptr(syscall.PR_SET_PDEATHSIG), uintptr(syscall.SIGCONT), uintptr(0)}, nil, stub.UniqueError(7)),
|
|
|
|
call("fatalf", stub.ExpectArgs{"cannot set parent-death signal: %v", []any{stub.UniqueError(7)}}, nil, nil),
|
|
|
|
call("fatalf", stub.ExpectArgs{"cannot set parent-death signal: %v", []any{stub.UniqueError(7)}}, nil, nil),
|
|
|
|
|
|
|
|
|
|
|
|
@@ -228,6 +243,8 @@ func TestShimEntrypoint(t *testing.T) {
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
|
|
|
|
call("getppid", stub.ExpectArgs{}, 0xbad, nil),
|
|
|
|
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", func() outcomeState {
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", func() outcomeState {
|
|
|
|
state := templateState
|
|
|
|
state := templateState
|
|
|
|
state.Shim = newShimParams()
|
|
|
|
state.Shim = newShimParams()
|
|
|
|
@@ -236,7 +253,6 @@ func TestShimEntrypoint(t *testing.T) {
|
|
|
|
}(), nil}, nil, nil),
|
|
|
|
}(), nil}, nil, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
|
|
|
|
call("prctl", stub.ExpectArgs{uintptr(syscall.PR_SET_PDEATHSIG), uintptr(syscall.SIGCONT), uintptr(0)}, nil, nil),
|
|
|
|
call("prctl", stub.ExpectArgs{uintptr(syscall.PR_SET_PDEATHSIG), uintptr(syscall.SIGCONT), uintptr(0)}, nil, nil),
|
|
|
|
call("fatal", stub.ExpectArgs{[]any{"cannot create container state: unique error 6 injected by the test suite\n"}}, nil, nil),
|
|
|
|
call("fatal", stub.ExpectArgs{[]any{"cannot create container state: unique error 6 injected by the test suite\n"}}, nil, nil),
|
|
|
|
|
|
|
|
|
|
|
|
@@ -248,6 +264,8 @@ func TestShimEntrypoint(t *testing.T) {
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
|
|
|
|
call("getppid", stub.ExpectArgs{}, 0xbad, nil),
|
|
|
|
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", func() outcomeState {
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", func() outcomeState {
|
|
|
|
state := templateState
|
|
|
|
state := templateState
|
|
|
|
state.Shim = newShimParams()
|
|
|
|
state.Shim = newShimParams()
|
|
|
|
@@ -256,7 +274,6 @@ func TestShimEntrypoint(t *testing.T) {
|
|
|
|
}(), nil}, nil, nil),
|
|
|
|
}(), nil}, nil, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
|
|
|
|
call("prctl", stub.ExpectArgs{uintptr(syscall.PR_SET_PDEATHSIG), uintptr(syscall.SIGCONT), uintptr(0)}, nil, nil),
|
|
|
|
call("prctl", stub.ExpectArgs{uintptr(syscall.PR_SET_PDEATHSIG), uintptr(syscall.SIGCONT), uintptr(0)}, nil, nil),
|
|
|
|
call("fatal", stub.ExpectArgs{[]any{"invalid container state"}}, nil, nil),
|
|
|
|
call("fatal", stub.ExpectArgs{[]any{"invalid container state"}}, nil, nil),
|
|
|
|
|
|
|
|
|
|
|
|
@@ -268,10 +285,11 @@ func TestShimEntrypoint(t *testing.T) {
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
|
|
|
|
call("getppid", stub.ExpectArgs{}, 0xbad, nil),
|
|
|
|
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", templateState, nil}, nil, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", templateState, nil}, nil, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
|
|
|
|
call("prctl", stub.ExpectArgs{uintptr(syscall.PR_SET_PDEATHSIG), uintptr(syscall.SIGCONT), uintptr(0)}, nil, nil),
|
|
|
|
call("prctl", stub.ExpectArgs{uintptr(syscall.PR_SET_PDEATHSIG), uintptr(syscall.SIGCONT), uintptr(0)}, nil, nil),
|
|
|
|
call("New", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("New", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("closeReceive", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("closeReceive", stub.ExpectArgs{}, nil, nil),
|
|
|
|
@@ -291,10 +309,11 @@ func TestShimEntrypoint(t *testing.T) {
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
|
|
|
|
call("getppid", stub.ExpectArgs{}, 0xbad, nil),
|
|
|
|
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", templateState, nil}, nil, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", templateState, nil}, nil, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
|
|
|
|
call("prctl", stub.ExpectArgs{uintptr(syscall.PR_SET_PDEATHSIG), uintptr(syscall.SIGCONT), uintptr(0)}, nil, nil),
|
|
|
|
call("prctl", stub.ExpectArgs{uintptr(syscall.PR_SET_PDEATHSIG), uintptr(syscall.SIGCONT), uintptr(0)}, nil, nil),
|
|
|
|
call("New", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("New", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("closeReceive", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("closeReceive", stub.ExpectArgs{}, nil, nil),
|
|
|
|
@@ -314,10 +333,11 @@ func TestShimEntrypoint(t *testing.T) {
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
|
|
|
|
call("getppid", stub.ExpectArgs{}, 0xbad, nil),
|
|
|
|
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", templateState, nil}, nil, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", templateState, nil}, nil, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
|
|
|
|
call("prctl", stub.ExpectArgs{uintptr(syscall.PR_SET_PDEATHSIG), uintptr(syscall.SIGCONT), uintptr(0)}, nil, nil),
|
|
|
|
call("prctl", stub.ExpectArgs{uintptr(syscall.PR_SET_PDEATHSIG), uintptr(syscall.SIGCONT), uintptr(0)}, nil, nil),
|
|
|
|
call("New", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("New", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("closeReceive", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("closeReceive", stub.ExpectArgs{}, nil, nil),
|
|
|
|
@@ -336,10 +356,11 @@ func TestShimEntrypoint(t *testing.T) {
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
|
|
|
|
call("getppid", stub.ExpectArgs{}, 0xbad, nil),
|
|
|
|
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", templateState, nil}, nil, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", templateState, nil}, nil, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
|
|
|
|
call("prctl", stub.ExpectArgs{uintptr(syscall.PR_SET_PDEATHSIG), uintptr(syscall.SIGCONT), uintptr(0)}, nil, nil),
|
|
|
|
call("prctl", stub.ExpectArgs{uintptr(syscall.PR_SET_PDEATHSIG), uintptr(syscall.SIGCONT), uintptr(0)}, nil, nil),
|
|
|
|
call("New", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("New", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("closeReceive", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("closeReceive", stub.ExpectArgs{}, nil, nil),
|
|
|
|
@@ -359,10 +380,11 @@ func TestShimEntrypoint(t *testing.T) {
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
|
|
|
|
call("getppid", stub.ExpectArgs{}, 0xbad, nil),
|
|
|
|
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", templateState, nil}, nil, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", templateState, nil}, nil, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
|
|
|
|
call("prctl", stub.ExpectArgs{uintptr(syscall.PR_SET_PDEATHSIG), uintptr(syscall.SIGCONT), uintptr(0)}, nil, nil),
|
|
|
|
call("prctl", stub.ExpectArgs{uintptr(syscall.PR_SET_PDEATHSIG), uintptr(syscall.SIGCONT), uintptr(0)}, nil, nil),
|
|
|
|
call("New", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("New", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("closeReceive", stub.ExpectArgs{}, nil, stub.UniqueError(1)),
|
|
|
|
call("closeReceive", stub.ExpectArgs{}, nil, stub.UniqueError(1)),
|
|
|
|
@@ -385,10 +407,11 @@ func TestShimEntrypoint(t *testing.T) {
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
|
|
|
|
call("getppid", stub.ExpectArgs{}, 0xbad, nil),
|
|
|
|
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", templateState, nil}, nil, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", templateState, nil}, nil, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
|
|
|
|
call("prctl", stub.ExpectArgs{uintptr(syscall.PR_SET_PDEATHSIG), uintptr(syscall.SIGCONT), uintptr(0)}, nil, nil),
|
|
|
|
call("prctl", stub.ExpectArgs{uintptr(syscall.PR_SET_PDEATHSIG), uintptr(syscall.SIGCONT), uintptr(0)}, nil, nil),
|
|
|
|
call("New", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("New", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("closeReceive", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("closeReceive", stub.ExpectArgs{}, nil, nil),
|
|
|
|
@@ -411,10 +434,11 @@ func TestShimEntrypoint(t *testing.T) {
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
|
|
|
|
call("getppid", stub.ExpectArgs{}, 0xbad, nil),
|
|
|
|
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", templateState, nil}, nil, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", templateState, nil}, nil, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
|
|
|
|
call("prctl", stub.ExpectArgs{uintptr(syscall.PR_SET_PDEATHSIG), uintptr(syscall.SIGCONT), uintptr(0)}, nil, nil),
|
|
|
|
call("prctl", stub.ExpectArgs{uintptr(syscall.PR_SET_PDEATHSIG), uintptr(syscall.SIGCONT), uintptr(0)}, nil, nil),
|
|
|
|
call("New", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("New", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("closeReceive", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("closeReceive", stub.ExpectArgs{}, nil, nil),
|
|
|
|
@@ -436,10 +460,11 @@ func TestShimEntrypoint(t *testing.T) {
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
|
|
|
|
call("getppid", stub.ExpectArgs{}, 0xbad, nil),
|
|
|
|
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", templateState, nil}, nil, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", templateState, nil}, nil, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
|
|
|
|
call("prctl", stub.ExpectArgs{uintptr(syscall.PR_SET_PDEATHSIG), uintptr(syscall.SIGCONT), uintptr(0)}, nil, nil),
|
|
|
|
call("prctl", stub.ExpectArgs{uintptr(syscall.PR_SET_PDEATHSIG), uintptr(syscall.SIGCONT), uintptr(0)}, nil, nil),
|
|
|
|
call("New", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("New", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("closeReceive", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("closeReceive", stub.ExpectArgs{}, nil, nil),
|
|
|
|
@@ -462,10 +487,11 @@ func TestShimEntrypoint(t *testing.T) {
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getMsg", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("getLogger", stub.ExpectArgs{}, (*log.Logger)(nil), nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
call("setDumpable", stub.ExpectArgs{uintptr(container.SUID_DUMP_DISABLE)}, nil, nil),
|
|
|
|
|
|
|
|
call("getppid", stub.ExpectArgs{}, 0xbad, nil),
|
|
|
|
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", templateState, nil}, nil, nil),
|
|
|
|
call("receive", stub.ExpectArgs{"HAKUREI_SHIM", templateState, nil}, nil, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("swapVerbose", stub.ExpectArgs{true}, false, nil),
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
call("verbosef", stub.ExpectArgs{"process share directory at %q, runtime directory at %q", []any{m("/tmp/hakurei.10"), m("/run/user/1000/hakurei")}}, nil, nil),
|
|
|
|
call("setupContSignal", stub.ExpectArgs{0xbad}, 0, nil),
|
|
|
|
|
|
|
|
call("prctl", stub.ExpectArgs{uintptr(syscall.PR_SET_PDEATHSIG), uintptr(syscall.SIGCONT), uintptr(0)}, nil, nil),
|
|
|
|
call("prctl", stub.ExpectArgs{uintptr(syscall.PR_SET_PDEATHSIG), uintptr(syscall.SIGCONT), uintptr(0)}, nil, nil),
|
|
|
|
call("New", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("New", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("closeReceive", stub.ExpectArgs{}, nil, nil),
|
|
|
|
call("closeReceive", stub.ExpectArgs{}, nil, nil),
|
|
|
|
|