(t *testing.T)
| 142 | } |
| 143 | |
| 144 | func 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 | |
| 196 | func TestDrainSlowSubscriber(t *testing.T) { |
| 197 | s := RunDefaultServer() |
nothing calls this directly
no test coverage detected