// stm: #unit package node import ( "context" "sync" "testing" "time" "github.com/stretchr/testify/require" ) func TestMonitorShutdown(t *testing.T) { //stm: @NODE_COMMON_SHUTDOWN_001 signalCh := make(chan struct{}) // Three shutdown handlers. var wg sync.WaitGroup wg.Add(3) h := ShutdownHandler{ Component: "handler", StopFunc: func(_ context.Context) error { wg.Done() return nil }, } finishCh := MonitorShutdown(signalCh, h, h, h) // Nothing here after 10ms. time.Sleep(10 * time.Millisecond) require.Len(t, finishCh, 0) // Now trigger the shutdown. close(signalCh) wg.Wait() <-finishCh }