internal/outcome/shim: cover reparent and exit request paths
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				Test / Create distribution (push) Successful in 26s
				
			
		
			
				
	
				Test / Hakurei (push) Successful in 42s
				
			
		
			
				
	
				Test / Sandbox (push) Successful in 39s
				
			
		
			
				
	
				Test / Sandbox (race detector) (push) Successful in 39s
				
			
		
			
				
	
				Test / Hakurei (race detector) (push) Successful in 43s
				
			
		
			
				
	
				Test / Hpkg (push) Successful in 41s
				
			
		
			
				
	
				Test / Flake checks (push) Successful in 1m31s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	Test / Create distribution (push) Successful in 26s
				
			Test / Hakurei (push) Successful in 42s
				
			Test / Sandbox (push) Successful in 39s
				
			Test / Sandbox (race detector) (push) Successful in 39s
				
			Test / Hakurei (race detector) (push) Successful in 43s
				
			Test / Hpkg (push) Successful in 41s
				
			Test / Flake checks (push) Successful in 1m31s
				
			These test cases were missed when making the changes. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
		
							parent
							
								
									f5274067f6
								
							
						
					
					
						commit
						e7fc311d0b
					
				@ -3,6 +3,7 @@ package outcome
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"bytes"
 | 
						"bytes"
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
 | 
						"io"
 | 
				
			||||||
	"log"
 | 
						"log"
 | 
				
			||||||
	"os"
 | 
						"os"
 | 
				
			||||||
	"syscall"
 | 
						"syscall"
 | 
				
			||||||
@ -138,6 +139,19 @@ func TestShimEntrypoint(t *testing.T) {
 | 
				
			|||||||
			call("fatalf", stub.ExpectArgs{"cannot set SUID_DUMP_DISABLE: %v", []any{stub.UniqueError(11)}}, nil, nil),
 | 
								call("fatalf", stub.ExpectArgs{"cannot set SUID_DUMP_DISABLE: %v", []any{stub.UniqueError(11)}}, nil, nil),
 | 
				
			||||||
		}}, nil},
 | 
							}}, nil},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							{"receive exit request", func(k *kstub) error { shimEntrypoint(k); return nil }, stub.Expect{Calls: []stub.Call{
 | 
				
			||||||
 | 
								call("getMsg", stub.ExpectArgs{}, nil, nil),
 | 
				
			||||||
 | 
								call("getLogger", stub.ExpectArgs{}, (*log.Logger)(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, io.EOF),
 | 
				
			||||||
 | 
								call("exit", stub.ExpectArgs{hst.ExitRequest}, stub.PanicExit, nil),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// deferred
 | 
				
			||||||
 | 
								call("wKeepAlive", stub.ExpectArgs{}, nil, nil),
 | 
				
			||||||
 | 
							}}, nil},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		{"receive fd", func(k *kstub) error { shimEntrypoint(k); return nil }, stub.Expect{Calls: []stub.Call{
 | 
							{"receive fd", 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),
 | 
				
			||||||
@ -177,6 +191,26 @@ func TestShimEntrypoint(t *testing.T) {
 | 
				
			|||||||
			call("wKeepAlive", stub.ExpectArgs{}, nil, nil),
 | 
								call("wKeepAlive", stub.ExpectArgs{}, nil, nil),
 | 
				
			||||||
		}}, nil},
 | 
							}}, nil},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							{"reparent", func(k *kstub) error { shimEntrypoint(k); return nil }, stub.Expect{Calls: []stub.Call{
 | 
				
			||||||
 | 
								call("getMsg", stub.ExpectArgs{}, nil, nil),
 | 
				
			||||||
 | 
								call("getLogger", stub.ExpectArgs{}, (*log.Logger)(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 {
 | 
				
			||||||
 | 
									state := templateState
 | 
				
			||||||
 | 
									state.Shim = newShimParams()
 | 
				
			||||||
 | 
									state.Shim.PrivPID = 0xfff
 | 
				
			||||||
 | 
									return state
 | 
				
			||||||
 | 
								}(), nil}, nil, 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("fatalf", stub.ExpectArgs{"unexpectedly reparented from %d to %d", []any{0xfff, 0xbad}}, nil, nil),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// deferred
 | 
				
			||||||
 | 
								call("wKeepAlive", stub.ExpectArgs{}, 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),
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user