package host import ( "testing" "time" ) func TestAgentNoCensusShutdownBudget(t *testing.T) { startup, duties := make(chan struct{}), make(chan struct{}) cancelled := make(chan struct{}) go func() { <-cancelled; time.Sleep(200 * time.Millisecond); close(startup); close(duties) }() began := time.Now() ctx, cancel, err := joinAgentShutdown(nil, nil, nil, func() { close(cancelled) }, startup, duties) defer cancel() if err != nil { t.Fatal(err) } if time.Since(began) < 200*time.Millisecond { t.Fatal("did not join delayed duties") } deadline, ok := ctx.Deadline() if !ok || time.Until(deadline) < 59950*time.Millisecond || ctx.Err() != nil { t.Fatal("no-census shutdown lost its fresh 60 seconds", deadline, ctx.Err()) } }