diff options
Diffstat (limited to 'runsc/boot/loader_test.go')
-rw-r--r-- | runsc/boot/loader_test.go | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/runsc/boot/loader_test.go b/runsc/boot/loader_test.go index 2fc16b241..c3d9887fa 100644 --- a/runsc/boot/loader_test.go +++ b/runsc/boot/loader_test.go @@ -16,6 +16,7 @@ package boot import ( "os" + "sync" "testing" "time" @@ -65,11 +66,27 @@ func TestRun(t *testing.T) { } defer s.Destroy() + // Start a goroutine to read the start chan result, otherwise Run will + // block forever. + var resultChanErr error + var wg sync.WaitGroup + wg.Add(1) + go func() { + resultChanErr = <-s.ctrl.app.startResultChan + wg.Done() + }() + // Run the application. if err := s.Run(); err != nil { t.Errorf("error running application: %v", err) } + // We should have not gotten an error on the startResultChan. + wg.Wait() + if resultChanErr != nil { + t.Errorf("error on startResultChan: %v", resultChanErr) + } + // Wait for the application to exit. It should succeed. if status := s.WaitExit(); status.Code != 0 || status.Signo != 0 { t.Errorf("application exited with status %+v, want 0", status) @@ -94,7 +111,7 @@ func TestStartSignal(t *testing.T) { waitFinished := make(chan struct{}) go func() { s.WaitForStartSignal() - // Pretent that Run() executed and returned no error. + // Pretend that Run() executed and returned no error. s.ctrl.app.startResultChan <- nil waitFinished <- struct{}{} }() |