优化
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user