kra-oa/internal/worker/task_scheduler_test.go

26 lines
746 B
Go

package worker
import "testing"
func TestCloseSubscribersClosesEveryAlertStream(t *testing.T) {
scheduler := &TaskScheduler{subscribers: map[uint]map[chan []byte]struct{}{}}
first := scheduler.Subscribe(1)
second := scheduler.Subscribe(1)
third := scheduler.Subscribe(2)
scheduler.closeSubscribers()
for _, ch := range []chan []byte{first, second, third} {
if _, open := <-ch; open {
t.Fatal("subscriber channel remains open after scheduler shutdown")
}
}
if len(scheduler.subscribers) != 0 {
t.Fatalf("subscriber registry was not cleared: %#v", scheduler.subscribers)
}
// Handlers defer Unsubscribe. It must remain safe after shutdown has already
// closed and removed every channel.
scheduler.Unsubscribe(1, first)
}