MCPcopy
hub / github.com/nats-io/nats.go / TestDrainUnSubs

Function TestDrainUnSubs

test/drain_test.go:144–194  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

142}
143
144func TestDrainUnSubs(t *testing.T) {
145 s := RunDefaultServer()
146 defer s.Shutdown()
147 nc := NewDefaultConnection(t)
148 defer nc.Close()
149
150 num := 100
151 subs := make([]*nats.Subscription, num)
152
153 // Normal Unsubscribe
154 for i := 0; i < num; i++ {
155 sub, err := nc.Subscribe("foo", func(_ *nats.Msg) {})
156 if err != nil {
157 t.Fatalf("Error creating subscription; %v", err)
158 }
159 subs[i] = sub
160 }
161
162 if numSubs := nc.NumSubscriptions(); numSubs != num {
163 t.Fatalf("Expected %d subscriptions, got %d", num, numSubs)
164 }
165 for i := 0; i < num; i++ {
166 subs[i].Unsubscribe()
167 }
168 if numSubs := nc.NumSubscriptions(); numSubs != 0 {
169 t.Fatalf("Expected no subscriptions, got %d", numSubs)
170 }
171
172 // Drain version
173 for i := 0; i < num; i++ {
174 sub, err := nc.Subscribe("foo", func(_ *nats.Msg) {})
175 if err != nil {
176 t.Fatalf("Error creating subscription; %v", err)
177 }
178 subs[i] = sub
179 }
180
181 if numSubs := nc.NumSubscriptions(); numSubs != num {
182 t.Fatalf("Expected %d subscriptions, got %d", num, numSubs)
183 }
184 for i := 0; i < num; i++ {
185 subs[i].Drain()
186 }
187 // Should happen quickly that we get to zero, so do not need to wait long.
188 waitFor(t, 2*time.Second, 10*time.Millisecond, func() error {
189 if numSubs := nc.NumSubscriptions(); numSubs != 0 {
190 return fmt.Errorf("Expected no subscriptions, got %d", numSubs)
191 }
192 return nil
193 })
194}
195
196func TestDrainSlowSubscriber(t *testing.T) {
197 s := RunDefaultServer()

Callers

nothing calls this directly

Calls 10

waitForFunction · 0.85
FatalfMethod · 0.80
NumSubscriptionsMethod · 0.80
UnsubscribeMethod · 0.80
ErrorfMethod · 0.80
RunDefaultServerFunction · 0.70
NewDefaultConnectionFunction · 0.70
SubscribeMethod · 0.65
DrainMethod · 0.65
CloseMethod · 0.45

Tested by

no test coverage detected