]>
Commit | Line | Data |
---|---|---|
3ed497fc BP |
1 | AT_BANNER([reconnect library]) |
2 | ||
d1b680c6 BP |
3 | m4_define([__RECONNECT_CHECK], |
4 | [AT_SETUP([$1]) | |
99155935 | 5 | $2 |
d1b680c6 | 6 | AT_KEYWORDS([reconnect]) |
99155935 BP |
7 | AT_DATA([input], [$3]) |
8 | AT_CHECK([$4], [0], [$5]) | |
d1b680c6 BP |
9 | AT_CLEANUP]) |
10 | ||
11 | m4_define([RECONNECT_CHECK], | |
99155935 BP |
12 | [__RECONNECT_CHECK( |
13 | [$1 - C], | |
14 | [], | |
15 | [$2], | |
16 | [test-reconnect < input], | |
17 | [$3]) | |
18 | __RECONNECT_CHECK( | |
19 | [$1 - Python], | |
20 | [AT_SKIP_IF([test $HAVE_PYTHON = no])], | |
21 | [$2], | |
22 | [$PYTHON $srcdir/test-reconnect.py < input], | |
23 | [$3])]) | |
d1b680c6 | 24 | |
3ed497fc | 25 | ###################################################################### |
d1b680c6 BP |
26 | RECONNECT_CHECK([nothing happens if not enabled], |
27 | [run | |
3ed497fc | 28 | timeout |
d1b680c6 | 29 | ], |
3ed497fc BP |
30 | [### t=1000 ### |
31 | run | |
32 | timeout | |
33 | no timeout | |
34 | ]) | |
3ed497fc BP |
35 | |
36 | ###################################################################### | |
d1b680c6 BP |
37 | RECONNECT_CHECK([quick connect, idle disconnect], |
38 | [enable | |
3ed497fc BP |
39 | |
40 | # Connection succeeds. | |
41 | run | |
42 | connected | |
43 | ||
44 | # Send inactivity probe. | |
45 | timeout | |
46 | run | |
47 | ||
48 | # Idle timeout kills connection. | |
49 | timeout | |
50 | run | |
51 | disconnected | |
d1b680c6 | 52 | ], |
3ed497fc BP |
53 | [### t=1000 ### |
54 | enable | |
55 | in BACKOFF for 0 ms (0 ms backoff) | |
56 | ||
57 | # Connection succeeds. | |
58 | run | |
59 | should connect | |
60 | connected | |
61 | in ACTIVE for 0 ms (0 ms backoff) | |
a6f639f8 | 62 | created 1000, last activity 1000, last connected 1000 |
3ed497fc | 63 | 1 successful connections out of 1 attempts, seqno 1 |
5eda645e AE |
64 | connected |
65 | last connected 0 ms ago, connected 0 ms total | |
3ed497fc BP |
66 | |
67 | # Send inactivity probe. | |
68 | timeout | |
69 | advance 5000 ms | |
70 | ||
71 | ### t=6000 ### | |
72 | in ACTIVE for 5000 ms (0 ms backoff) | |
3ed497fc BP |
73 | run |
74 | should send probe | |
75 | in IDLE for 0 ms (0 ms backoff) | |
76 | ||
77 | # Idle timeout kills connection. | |
78 | timeout | |
79 | advance 5000 ms | |
80 | ||
81 | ### t=11000 ### | |
82 | in IDLE for 5000 ms (0 ms backoff) | |
3ed497fc BP |
83 | run |
84 | should disconnect | |
85 | disconnected | |
86 | in BACKOFF for 0 ms (1000 ms backoff) | |
87 | 1 successful connections out of 1 attempts, seqno 2 | |
5eda645e | 88 | disconnected |
eba18f00 | 89 | disconnected at 11000 ms (0 ms ago) |
3ed497fc | 90 | ]) |
3ed497fc BP |
91 | |
92 | ###################################################################### | |
d1b680c6 BP |
93 | RECONNECT_CHECK([slow connect, idle disconnect], |
94 | [enable | |
3ed497fc BP |
95 | |
96 | # Start connecting. | |
97 | run | |
98 | connecting | |
99 | ||
100 | # Connect after 500 ms. | |
101 | advance 500 | |
102 | run | |
103 | connected | |
104 | ||
105 | # Send inactivity probe. | |
106 | timeout | |
107 | run | |
108 | ||
109 | # Idle timeout kills connection. | |
110 | timeout | |
111 | run | |
112 | disconnected | |
d1b680c6 | 113 | ], |
3ed497fc BP |
114 | [### t=1000 ### |
115 | enable | |
116 | in BACKOFF for 0 ms (0 ms backoff) | |
117 | ||
118 | # Start connecting. | |
119 | run | |
120 | should connect | |
121 | connecting | |
c36cf65e | 122 | in CONNECTING for 0 ms (0 ms backoff) |
3ed497fc BP |
123 | |
124 | # Connect after 500 ms. | |
125 | advance 500 | |
126 | ||
127 | ### t=1500 ### | |
c36cf65e | 128 | in CONNECTING for 500 ms (0 ms backoff) |
3ed497fc | 129 | run |
3ed497fc BP |
130 | connected |
131 | in ACTIVE for 0 ms (0 ms backoff) | |
a6f639f8 | 132 | created 1000, last activity 1000, last connected 1500 |
3ed497fc | 133 | 1 successful connections out of 1 attempts, seqno 1 |
5eda645e AE |
134 | connected |
135 | last connected 0 ms ago, connected 0 ms total | |
3ed497fc BP |
136 | |
137 | # Send inactivity probe. | |
138 | timeout | |
139 | advance 5000 ms | |
140 | ||
141 | ### t=6500 ### | |
142 | in ACTIVE for 5000 ms (0 ms backoff) | |
3ed497fc BP |
143 | run |
144 | should send probe | |
145 | in IDLE for 0 ms (0 ms backoff) | |
146 | ||
147 | # Idle timeout kills connection. | |
148 | timeout | |
149 | advance 5000 ms | |
150 | ||
151 | ### t=11500 ### | |
152 | in IDLE for 5000 ms (0 ms backoff) | |
3ed497fc BP |
153 | run |
154 | should disconnect | |
155 | disconnected | |
156 | in BACKOFF for 0 ms (1000 ms backoff) | |
157 | 1 successful connections out of 1 attempts, seqno 2 | |
5eda645e | 158 | disconnected |
eba18f00 | 159 | disconnected at 11500 ms (0 ms ago) |
3ed497fc | 160 | ]) |
3ed497fc BP |
161 | |
162 | ###################################################################### | |
d1b680c6 BP |
163 | RECONNECT_CHECK([connect backs off], |
164 | [enable | |
3ed497fc BP |
165 | |
166 | # First connection attempt fails after 1000 ms. | |
167 | run | |
168 | connecting | |
169 | run | |
170 | timeout | |
171 | run | |
172 | connect-failed | |
173 | ||
174 | # Back off for 1000 ms. | |
175 | timeout | |
176 | run | |
177 | ||
178 | # Second connection attempt fails after 1000 ms. | |
179 | connecting | |
180 | timeout | |
181 | run | |
182 | connect-failed | |
183 | ||
184 | # Back off for 2000 ms. | |
185 | timeout | |
186 | run | |
187 | ||
188 | # Third connection attempt fails after 2000 ms. | |
189 | connecting | |
190 | timeout | |
191 | run | |
192 | connect-failed | |
193 | ||
194 | # Back off for 4000 ms. | |
195 | timeout | |
196 | run | |
197 | ||
198 | # Third connection attempt fails after 4000 ms. | |
199 | connecting | |
200 | timeout | |
201 | run | |
202 | connect-failed | |
203 | ||
204 | # Back off for 8000 ms. | |
205 | timeout | |
206 | run | |
207 | ||
208 | # Third connection attempt fails after 8000 ms. | |
209 | connecting | |
210 | timeout | |
211 | run | |
212 | connect-failed | |
213 | ||
214 | # Back off for 8000 ms. | |
215 | timeout | |
216 | run | |
217 | ||
218 | # Fourth connection attempt fails after 8000 ms. | |
219 | connecting | |
220 | timeout | |
221 | run | |
222 | connect-failed | |
d1b680c6 | 223 | ], |
3ed497fc BP |
224 | [### t=1000 ### |
225 | enable | |
226 | in BACKOFF for 0 ms (0 ms backoff) | |
227 | ||
228 | # First connection attempt fails after 1000 ms. | |
229 | run | |
230 | should connect | |
231 | connecting | |
c36cf65e | 232 | in CONNECTING for 0 ms (0 ms backoff) |
3ed497fc | 233 | run |
3ed497fc BP |
234 | timeout |
235 | advance 1000 ms | |
236 | ||
237 | ### t=2000 ### | |
c36cf65e | 238 | in CONNECTING for 1000 ms (0 ms backoff) |
3ed497fc BP |
239 | run |
240 | should disconnect | |
241 | connect-failed | |
242 | in BACKOFF for 0 ms (1000 ms backoff) | |
243 | 0 successful connections out of 1 attempts, seqno 0 | |
244 | ||
245 | # Back off for 1000 ms. | |
246 | timeout | |
247 | advance 1000 ms | |
248 | ||
249 | ### t=3000 ### | |
250 | in BACKOFF for 1000 ms (1000 ms backoff) | |
251 | run | |
252 | should connect | |
253 | ||
254 | # Second connection attempt fails after 1000 ms. | |
255 | connecting | |
c36cf65e | 256 | in CONNECTING for 0 ms (1000 ms backoff) |
3ed497fc BP |
257 | timeout |
258 | advance 1000 ms | |
259 | ||
260 | ### t=4000 ### | |
c36cf65e | 261 | in CONNECTING for 1000 ms (1000 ms backoff) |
3ed497fc BP |
262 | run |
263 | should disconnect | |
264 | connect-failed | |
265 | in BACKOFF for 0 ms (2000 ms backoff) | |
266 | 0 successful connections out of 2 attempts, seqno 0 | |
267 | ||
268 | # Back off for 2000 ms. | |
269 | timeout | |
270 | advance 2000 ms | |
271 | ||
272 | ### t=6000 ### | |
273 | in BACKOFF for 2000 ms (2000 ms backoff) | |
274 | run | |
275 | should connect | |
276 | ||
277 | # Third connection attempt fails after 2000 ms. | |
278 | connecting | |
c36cf65e | 279 | in CONNECTING for 0 ms (2000 ms backoff) |
3ed497fc BP |
280 | timeout |
281 | advance 2000 ms | |
282 | ||
283 | ### t=8000 ### | |
c36cf65e | 284 | in CONNECTING for 2000 ms (2000 ms backoff) |
3ed497fc BP |
285 | run |
286 | should disconnect | |
287 | connect-failed | |
288 | in BACKOFF for 0 ms (4000 ms backoff) | |
289 | 0 successful connections out of 3 attempts, seqno 0 | |
290 | ||
291 | # Back off for 4000 ms. | |
292 | timeout | |
293 | advance 4000 ms | |
294 | ||
295 | ### t=12000 ### | |
296 | in BACKOFF for 4000 ms (4000 ms backoff) | |
297 | run | |
298 | should connect | |
299 | ||
300 | # Third connection attempt fails after 4000 ms. | |
301 | connecting | |
c36cf65e | 302 | in CONNECTING for 0 ms (4000 ms backoff) |
3ed497fc BP |
303 | timeout |
304 | advance 4000 ms | |
305 | ||
306 | ### t=16000 ### | |
c36cf65e | 307 | in CONNECTING for 4000 ms (4000 ms backoff) |
3ed497fc BP |
308 | run |
309 | should disconnect | |
310 | connect-failed | |
311 | in BACKOFF for 0 ms (8000 ms backoff) | |
312 | 0 successful connections out of 4 attempts, seqno 0 | |
313 | ||
314 | # Back off for 8000 ms. | |
315 | timeout | |
316 | advance 8000 ms | |
317 | ||
318 | ### t=24000 ### | |
319 | in BACKOFF for 8000 ms (8000 ms backoff) | |
320 | run | |
321 | should connect | |
322 | ||
323 | # Third connection attempt fails after 8000 ms. | |
324 | connecting | |
c36cf65e | 325 | in CONNECTING for 0 ms (8000 ms backoff) |
3ed497fc BP |
326 | timeout |
327 | advance 8000 ms | |
328 | ||
329 | ### t=32000 ### | |
c36cf65e | 330 | in CONNECTING for 8000 ms (8000 ms backoff) |
3ed497fc BP |
331 | run |
332 | should disconnect | |
333 | connect-failed | |
334 | in BACKOFF for 0 ms (8000 ms backoff) | |
335 | 0 successful connections out of 5 attempts, seqno 0 | |
336 | ||
337 | # Back off for 8000 ms. | |
338 | timeout | |
339 | advance 8000 ms | |
340 | ||
341 | ### t=40000 ### | |
342 | in BACKOFF for 8000 ms (8000 ms backoff) | |
343 | run | |
344 | should connect | |
345 | ||
346 | # Fourth connection attempt fails after 8000 ms. | |
347 | connecting | |
c36cf65e | 348 | in CONNECTING for 0 ms (8000 ms backoff) |
3ed497fc BP |
349 | timeout |
350 | advance 8000 ms | |
351 | ||
352 | ### t=48000 ### | |
c36cf65e | 353 | in CONNECTING for 8000 ms (8000 ms backoff) |
3ed497fc BP |
354 | run |
355 | should disconnect | |
356 | connect-failed | |
357 | in BACKOFF for 0 ms (8000 ms backoff) | |
358 | 0 successful connections out of 6 attempts, seqno 0 | |
359 | ]) | |
3ed497fc BP |
360 | |
361 | ###################################################################### | |
d1b680c6 BP |
362 | RECONNECT_CHECK([connections with no data preserve backoff], |
363 | [enable | |
3ed497fc BP |
364 | |
365 | # First connect, then idle timeout kills connection. | |
366 | run | |
367 | connected | |
368 | timeout | |
369 | run | |
370 | timeout | |
371 | run | |
372 | disconnected | |
373 | ||
374 | # Back off for 1000 ms. | |
375 | timeout | |
376 | run | |
377 | ||
378 | # Second connect, then idle timeout kills connection. | |
379 | run | |
380 | connected | |
381 | timeout | |
382 | run | |
383 | timeout | |
384 | run | |
385 | disconnected | |
386 | ||
387 | # Back off for 2000 ms. | |
388 | timeout | |
389 | run | |
390 | ||
391 | # Third connect, then idle timeout kills connection. | |
392 | run | |
393 | connected | |
394 | timeout | |
395 | run | |
396 | timeout | |
397 | run | |
398 | disconnected | |
399 | ||
400 | # Back off for 4000 ms. | |
401 | timeout | |
402 | ], [### t=1000 ### | |
403 | enable | |
404 | in BACKOFF for 0 ms (0 ms backoff) | |
405 | ||
406 | # First connect, then idle timeout kills connection. | |
407 | run | |
408 | should connect | |
409 | connected | |
410 | in ACTIVE for 0 ms (0 ms backoff) | |
a6f639f8 | 411 | created 1000, last activity 1000, last connected 1000 |
3ed497fc | 412 | 1 successful connections out of 1 attempts, seqno 1 |
5eda645e AE |
413 | connected |
414 | last connected 0 ms ago, connected 0 ms total | |
3ed497fc BP |
415 | timeout |
416 | advance 5000 ms | |
417 | ||
418 | ### t=6000 ### | |
419 | in ACTIVE for 5000 ms (0 ms backoff) | |
3ed497fc BP |
420 | run |
421 | should send probe | |
422 | in IDLE for 0 ms (0 ms backoff) | |
423 | timeout | |
424 | advance 5000 ms | |
425 | ||
426 | ### t=11000 ### | |
427 | in IDLE for 5000 ms (0 ms backoff) | |
3ed497fc BP |
428 | run |
429 | should disconnect | |
430 | disconnected | |
431 | in BACKOFF for 0 ms (1000 ms backoff) | |
432 | 1 successful connections out of 1 attempts, seqno 2 | |
5eda645e | 433 | disconnected |
eba18f00 | 434 | disconnected at 11000 ms (0 ms ago) |
3ed497fc BP |
435 | |
436 | # Back off for 1000 ms. | |
437 | timeout | |
438 | advance 1000 ms | |
439 | ||
440 | ### t=12000 ### | |
441 | in BACKOFF for 1000 ms (1000 ms backoff) | |
5eda645e | 442 | last connected 11000 ms ago, connected 10000 ms total |
3ed497fc BP |
443 | run |
444 | should connect | |
445 | ||
446 | # Second connect, then idle timeout kills connection. | |
447 | run | |
448 | should connect | |
449 | connected | |
450 | in ACTIVE for 0 ms (1000 ms backoff) | |
a6f639f8 | 451 | created 1000, last activity 1000, last connected 12000 |
3ed497fc | 452 | 2 successful connections out of 2 attempts, seqno 3 |
5eda645e AE |
453 | connected |
454 | last connected 0 ms ago, connected 10000 ms total | |
3ed497fc BP |
455 | timeout |
456 | advance 5000 ms | |
457 | ||
458 | ### t=17000 ### | |
459 | in ACTIVE for 5000 ms (1000 ms backoff) | |
3ed497fc BP |
460 | run |
461 | should send probe | |
462 | in IDLE for 0 ms (1000 ms backoff) | |
463 | timeout | |
464 | advance 5000 ms | |
465 | ||
466 | ### t=22000 ### | |
467 | in IDLE for 5000 ms (1000 ms backoff) | |
3ed497fc BP |
468 | run |
469 | should disconnect | |
470 | disconnected | |
471 | in BACKOFF for 0 ms (2000 ms backoff) | |
472 | 2 successful connections out of 2 attempts, seqno 4 | |
5eda645e | 473 | disconnected |
eba18f00 | 474 | disconnected at 22000 ms (0 ms ago) |
3ed497fc BP |
475 | |
476 | # Back off for 2000 ms. | |
477 | timeout | |
478 | advance 2000 ms | |
479 | ||
480 | ### t=24000 ### | |
481 | in BACKOFF for 2000 ms (2000 ms backoff) | |
5eda645e | 482 | last connected 12000 ms ago, connected 20000 ms total |
3ed497fc BP |
483 | run |
484 | should connect | |
485 | ||
486 | # Third connect, then idle timeout kills connection. | |
487 | run | |
488 | should connect | |
489 | connected | |
490 | in ACTIVE for 0 ms (2000 ms backoff) | |
a6f639f8 | 491 | created 1000, last activity 1000, last connected 24000 |
3ed497fc | 492 | 3 successful connections out of 3 attempts, seqno 5 |
5eda645e AE |
493 | connected |
494 | last connected 0 ms ago, connected 20000 ms total | |
3ed497fc BP |
495 | timeout |
496 | advance 5000 ms | |
497 | ||
498 | ### t=29000 ### | |
499 | in ACTIVE for 5000 ms (2000 ms backoff) | |
3ed497fc BP |
500 | run |
501 | should send probe | |
502 | in IDLE for 0 ms (2000 ms backoff) | |
503 | timeout | |
504 | advance 5000 ms | |
505 | ||
506 | ### t=34000 ### | |
507 | in IDLE for 5000 ms (2000 ms backoff) | |
3ed497fc BP |
508 | run |
509 | should disconnect | |
510 | disconnected | |
511 | in BACKOFF for 0 ms (4000 ms backoff) | |
512 | 3 successful connections out of 3 attempts, seqno 6 | |
5eda645e | 513 | disconnected |
eba18f00 | 514 | disconnected at 34000 ms (0 ms ago) |
3ed497fc BP |
515 | |
516 | # Back off for 4000 ms. | |
517 | timeout | |
518 | advance 4000 ms | |
519 | ||
520 | ### t=38000 ### | |
521 | in BACKOFF for 4000 ms (4000 ms backoff) | |
5eda645e | 522 | last connected 14000 ms ago, connected 30000 ms total |
3ed497fc | 523 | ]) |
3ed497fc BP |
524 | |
525 | ###################################################################### | |
d1b680c6 BP |
526 | RECONNECT_CHECK([brief connection preserves backoff], |
527 | [enable | |
3ed497fc BP |
528 | |
529 | # First connection attempt fails after 1000 ms. | |
530 | run | |
531 | connecting | |
532 | run | |
533 | timeout | |
534 | run | |
535 | connect-failed | |
536 | ||
537 | # Back off for 1000 ms. | |
538 | timeout | |
539 | run | |
540 | ||
541 | # Second connection attempt fails after 1000 ms. | |
542 | connecting | |
543 | timeout | |
544 | run | |
545 | connect-failed | |
546 | ||
547 | # Back off for 2000 ms. | |
548 | timeout | |
549 | run | |
550 | ||
551 | # Third connection attempt succeeds after 500 ms. | |
552 | connecting | |
553 | advance 500 | |
554 | run | |
555 | connected | |
556 | ||
557 | # Connection drops after another 250 ms. | |
558 | advance 250 | |
559 | disconnected | |
560 | run | |
561 | ||
562 | # Back off for 4000 ms. | |
563 | timeout | |
564 | run | |
d1b680c6 | 565 | ], [### t=1000 ### |
3ed497fc BP |
566 | enable |
567 | in BACKOFF for 0 ms (0 ms backoff) | |
568 | ||
569 | # First connection attempt fails after 1000 ms. | |
570 | run | |
571 | should connect | |
572 | connecting | |
c36cf65e | 573 | in CONNECTING for 0 ms (0 ms backoff) |
3ed497fc | 574 | run |
3ed497fc BP |
575 | timeout |
576 | advance 1000 ms | |
577 | ||
578 | ### t=2000 ### | |
c36cf65e | 579 | in CONNECTING for 1000 ms (0 ms backoff) |
3ed497fc BP |
580 | run |
581 | should disconnect | |
582 | connect-failed | |
583 | in BACKOFF for 0 ms (1000 ms backoff) | |
584 | 0 successful connections out of 1 attempts, seqno 0 | |
585 | ||
586 | # Back off for 1000 ms. | |
587 | timeout | |
588 | advance 1000 ms | |
589 | ||
590 | ### t=3000 ### | |
591 | in BACKOFF for 1000 ms (1000 ms backoff) | |
592 | run | |
593 | should connect | |
594 | ||
595 | # Second connection attempt fails after 1000 ms. | |
596 | connecting | |
c36cf65e | 597 | in CONNECTING for 0 ms (1000 ms backoff) |
3ed497fc BP |
598 | timeout |
599 | advance 1000 ms | |
600 | ||
601 | ### t=4000 ### | |
c36cf65e | 602 | in CONNECTING for 1000 ms (1000 ms backoff) |
3ed497fc BP |
603 | run |
604 | should disconnect | |
605 | connect-failed | |
606 | in BACKOFF for 0 ms (2000 ms backoff) | |
607 | 0 successful connections out of 2 attempts, seqno 0 | |
608 | ||
609 | # Back off for 2000 ms. | |
610 | timeout | |
611 | advance 2000 ms | |
612 | ||
613 | ### t=6000 ### | |
614 | in BACKOFF for 2000 ms (2000 ms backoff) | |
615 | run | |
616 | should connect | |
617 | ||
618 | # Third connection attempt succeeds after 500 ms. | |
619 | connecting | |
c36cf65e | 620 | in CONNECTING for 0 ms (2000 ms backoff) |
3ed497fc BP |
621 | advance 500 |
622 | ||
623 | ### t=6500 ### | |
c36cf65e | 624 | in CONNECTING for 500 ms (2000 ms backoff) |
3ed497fc | 625 | run |
3ed497fc BP |
626 | connected |
627 | in ACTIVE for 0 ms (2000 ms backoff) | |
a6f639f8 | 628 | created 1000, last activity 1000, last connected 6500 |
3ed497fc | 629 | 1 successful connections out of 3 attempts, seqno 1 |
5eda645e AE |
630 | connected |
631 | last connected 0 ms ago, connected 0 ms total | |
3ed497fc BP |
632 | |
633 | # Connection drops after another 250 ms. | |
634 | advance 250 | |
635 | ||
636 | ### t=6750 ### | |
637 | in ACTIVE for 250 ms (2000 ms backoff) | |
3ed497fc BP |
638 | disconnected |
639 | in BACKOFF for 0 ms (4000 ms backoff) | |
640 | 1 successful connections out of 3 attempts, seqno 2 | |
5eda645e | 641 | disconnected |
eba18f00 | 642 | disconnected at 6750 ms (0 ms ago) |
3ed497fc BP |
643 | run |
644 | ||
645 | # Back off for 4000 ms. | |
646 | timeout | |
647 | advance 4000 ms | |
648 | ||
649 | ### t=10750 ### | |
650 | in BACKOFF for 4000 ms (4000 ms backoff) | |
5eda645e | 651 | last connected 4250 ms ago, connected 250 ms total |
3ed497fc BP |
652 | run |
653 | should connect | |
654 | ]) | |
3ed497fc BP |
655 | |
656 | ###################################################################### | |
d1b680c6 BP |
657 | RECONNECT_CHECK([brief connection with data preserves backoff], |
658 | [enable | |
3ed497fc BP |
659 | |
660 | # First connection attempt fails after 1000 ms. | |
661 | run | |
662 | connecting | |
663 | run | |
664 | timeout | |
665 | run | |
666 | connect-failed | |
667 | ||
668 | # Back off for 1000 ms. | |
669 | timeout | |
670 | run | |
671 | ||
672 | # Second connection attempt fails after 1000 ms. | |
673 | connecting | |
674 | timeout | |
675 | run | |
676 | connect-failed | |
677 | ||
678 | # Back off for 2000 ms. | |
679 | timeout | |
680 | run | |
681 | ||
682 | # Third connection attempt succeeds after 500 ms. | |
683 | connecting | |
684 | advance 500 | |
685 | run | |
686 | connected | |
687 | ||
688 | # Connection receives 3 chunks of data spaced 250 ms apart. | |
689 | advance 250 | |
690 | run | |
a6f639f8 | 691 | activity |
3ed497fc BP |
692 | advance 250 |
693 | run | |
a6f639f8 | 694 | activity |
3ed497fc BP |
695 | advance 250 |
696 | run | |
a6f639f8 | 697 | activity |
3ed497fc BP |
698 | |
699 | # Connection drops. | |
700 | disconnected | |
701 | run | |
702 | ||
703 | # Back off for 4000 ms. | |
704 | timeout | |
705 | run | |
d1b680c6 | 706 | ], |
3ed497fc BP |
707 | [### t=1000 ### |
708 | enable | |
709 | in BACKOFF for 0 ms (0 ms backoff) | |
710 | ||
711 | # First connection attempt fails after 1000 ms. | |
712 | run | |
713 | should connect | |
714 | connecting | |
c36cf65e | 715 | in CONNECTING for 0 ms (0 ms backoff) |
3ed497fc | 716 | run |
3ed497fc BP |
717 | timeout |
718 | advance 1000 ms | |
719 | ||
720 | ### t=2000 ### | |
c36cf65e | 721 | in CONNECTING for 1000 ms (0 ms backoff) |
3ed497fc BP |
722 | run |
723 | should disconnect | |
724 | connect-failed | |
725 | in BACKOFF for 0 ms (1000 ms backoff) | |
726 | 0 successful connections out of 1 attempts, seqno 0 | |
727 | ||
728 | # Back off for 1000 ms. | |
729 | timeout | |
730 | advance 1000 ms | |
731 | ||
732 | ### t=3000 ### | |
733 | in BACKOFF for 1000 ms (1000 ms backoff) | |
734 | run | |
735 | should connect | |
736 | ||
737 | # Second connection attempt fails after 1000 ms. | |
738 | connecting | |
c36cf65e | 739 | in CONNECTING for 0 ms (1000 ms backoff) |
3ed497fc BP |
740 | timeout |
741 | advance 1000 ms | |
742 | ||
743 | ### t=4000 ### | |
c36cf65e | 744 | in CONNECTING for 1000 ms (1000 ms backoff) |
3ed497fc BP |
745 | run |
746 | should disconnect | |
747 | connect-failed | |
748 | in BACKOFF for 0 ms (2000 ms backoff) | |
749 | 0 successful connections out of 2 attempts, seqno 0 | |
750 | ||
751 | # Back off for 2000 ms. | |
752 | timeout | |
753 | advance 2000 ms | |
754 | ||
755 | ### t=6000 ### | |
756 | in BACKOFF for 2000 ms (2000 ms backoff) | |
757 | run | |
758 | should connect | |
759 | ||
760 | # Third connection attempt succeeds after 500 ms. | |
761 | connecting | |
c36cf65e | 762 | in CONNECTING for 0 ms (2000 ms backoff) |
3ed497fc BP |
763 | advance 500 |
764 | ||
765 | ### t=6500 ### | |
c36cf65e | 766 | in CONNECTING for 500 ms (2000 ms backoff) |
3ed497fc | 767 | run |
3ed497fc BP |
768 | connected |
769 | in ACTIVE for 0 ms (2000 ms backoff) | |
a6f639f8 | 770 | created 1000, last activity 1000, last connected 6500 |
3ed497fc | 771 | 1 successful connections out of 3 attempts, seqno 1 |
5eda645e AE |
772 | connected |
773 | last connected 0 ms ago, connected 0 ms total | |
3ed497fc BP |
774 | |
775 | # Connection receives 3 chunks of data spaced 250 ms apart. | |
776 | advance 250 | |
777 | ||
778 | ### t=6750 ### | |
779 | in ACTIVE for 250 ms (2000 ms backoff) | |
3ed497fc | 780 | run |
a6f639f8 BP |
781 | activity |
782 | created 1000, last activity 6750, last connected 6500 | |
3ed497fc BP |
783 | advance 250 |
784 | ||
785 | ### t=7000 ### | |
786 | in ACTIVE for 500 ms (2000 ms backoff) | |
3ed497fc | 787 | run |
a6f639f8 BP |
788 | activity |
789 | created 1000, last activity 7000, last connected 6500 | |
3ed497fc BP |
790 | advance 250 |
791 | ||
792 | ### t=7250 ### | |
793 | in ACTIVE for 750 ms (2000 ms backoff) | |
3ed497fc | 794 | run |
a6f639f8 BP |
795 | activity |
796 | created 1000, last activity 7250, last connected 6500 | |
3ed497fc BP |
797 | |
798 | # Connection drops. | |
799 | disconnected | |
800 | in BACKOFF for 0 ms (4000 ms backoff) | |
801 | 1 successful connections out of 3 attempts, seqno 2 | |
5eda645e | 802 | disconnected |
eba18f00 | 803 | disconnected at 7250 ms (0 ms ago) |
3ed497fc BP |
804 | run |
805 | ||
806 | # Back off for 4000 ms. | |
807 | timeout | |
808 | advance 4000 ms | |
809 | ||
810 | ### t=11250 ### | |
811 | in BACKOFF for 4000 ms (4000 ms backoff) | |
5eda645e | 812 | last connected 4750 ms ago, connected 750 ms total |
3ed497fc BP |
813 | run |
814 | should connect | |
815 | ]) | |
3ed497fc BP |
816 | |
817 | ###################################################################### | |
d1b680c6 BP |
818 | RECONNECT_CHECK([long connection resets backoff], |
819 | [enable | |
3ed497fc BP |
820 | |
821 | # First connection attempt fails after 1000 ms. | |
822 | run | |
823 | connecting | |
824 | run | |
825 | timeout | |
826 | run | |
827 | connect-failed | |
828 | ||
829 | # Back off for 1000 ms. | |
830 | timeout | |
831 | run | |
832 | ||
833 | # Second connection attempt fails after 1000 ms. | |
834 | connecting | |
835 | timeout | |
836 | run | |
837 | connect-failed | |
838 | ||
839 | # Back off for 2000 ms. | |
840 | timeout | |
841 | run | |
842 | ||
843 | # Third connection attempt succeeds after 500 ms. | |
844 | connecting | |
845 | advance 500 | |
846 | run | |
847 | connected | |
848 | ||
849 | # Connection receives 3 chunks of data spaced 2000 ms apart. | |
850 | advance 2000 | |
851 | run | |
a6f639f8 | 852 | activity |
3ed497fc BP |
853 | advance 2000 |
854 | run | |
a6f639f8 | 855 | activity |
3ed497fc BP |
856 | advance 2000 |
857 | run | |
a6f639f8 | 858 | activity |
3ed497fc BP |
859 | |
860 | # Connection drops. | |
861 | disconnected | |
862 | run | |
863 | ||
864 | # Back off for 1000 ms. | |
865 | timeout | |
866 | run | |
d1b680c6 | 867 | ], |
3ed497fc BP |
868 | [### t=1000 ### |
869 | enable | |
870 | in BACKOFF for 0 ms (0 ms backoff) | |
871 | ||
872 | # First connection attempt fails after 1000 ms. | |
873 | run | |
874 | should connect | |
875 | connecting | |
c36cf65e | 876 | in CONNECTING for 0 ms (0 ms backoff) |
3ed497fc | 877 | run |
3ed497fc BP |
878 | timeout |
879 | advance 1000 ms | |
880 | ||
881 | ### t=2000 ### | |
c36cf65e | 882 | in CONNECTING for 1000 ms (0 ms backoff) |
3ed497fc BP |
883 | run |
884 | should disconnect | |
885 | connect-failed | |
886 | in BACKOFF for 0 ms (1000 ms backoff) | |
887 | 0 successful connections out of 1 attempts, seqno 0 | |
888 | ||
889 | # Back off for 1000 ms. | |
890 | timeout | |
891 | advance 1000 ms | |
892 | ||
893 | ### t=3000 ### | |
894 | in BACKOFF for 1000 ms (1000 ms backoff) | |
895 | run | |
896 | should connect | |
897 | ||
898 | # Second connection attempt fails after 1000 ms. | |
899 | connecting | |
c36cf65e | 900 | in CONNECTING for 0 ms (1000 ms backoff) |
3ed497fc BP |
901 | timeout |
902 | advance 1000 ms | |
903 | ||
904 | ### t=4000 ### | |
c36cf65e | 905 | in CONNECTING for 1000 ms (1000 ms backoff) |
3ed497fc BP |
906 | run |
907 | should disconnect | |
908 | connect-failed | |
909 | in BACKOFF for 0 ms (2000 ms backoff) | |
910 | 0 successful connections out of 2 attempts, seqno 0 | |
911 | ||
912 | # Back off for 2000 ms. | |
913 | timeout | |
914 | advance 2000 ms | |
915 | ||
916 | ### t=6000 ### | |
917 | in BACKOFF for 2000 ms (2000 ms backoff) | |
918 | run | |
919 | should connect | |
920 | ||
921 | # Third connection attempt succeeds after 500 ms. | |
922 | connecting | |
c36cf65e | 923 | in CONNECTING for 0 ms (2000 ms backoff) |
3ed497fc BP |
924 | advance 500 |
925 | ||
926 | ### t=6500 ### | |
c36cf65e | 927 | in CONNECTING for 500 ms (2000 ms backoff) |
3ed497fc | 928 | run |
3ed497fc BP |
929 | connected |
930 | in ACTIVE for 0 ms (2000 ms backoff) | |
a6f639f8 | 931 | created 1000, last activity 1000, last connected 6500 |
3ed497fc | 932 | 1 successful connections out of 3 attempts, seqno 1 |
5eda645e AE |
933 | connected |
934 | last connected 0 ms ago, connected 0 ms total | |
3ed497fc BP |
935 | |
936 | # Connection receives 3 chunks of data spaced 2000 ms apart. | |
937 | advance 2000 | |
938 | ||
939 | ### t=8500 ### | |
940 | in ACTIVE for 2000 ms (2000 ms backoff) | |
3ed497fc | 941 | run |
a6f639f8 BP |
942 | activity |
943 | created 1000, last activity 8500, last connected 6500 | |
3ed497fc BP |
944 | advance 2000 |
945 | ||
946 | ### t=10500 ### | |
947 | in ACTIVE for 4000 ms (2000 ms backoff) | |
3ed497fc | 948 | run |
a6f639f8 BP |
949 | activity |
950 | created 1000, last activity 10500, last connected 6500 | |
3ed497fc BP |
951 | advance 2000 |
952 | ||
953 | ### t=12500 ### | |
954 | in ACTIVE for 6000 ms (2000 ms backoff) | |
3ed497fc | 955 | run |
a6f639f8 BP |
956 | activity |
957 | created 1000, last activity 12500, last connected 6500 | |
3ed497fc BP |
958 | |
959 | # Connection drops. | |
960 | disconnected | |
961 | in BACKOFF for 0 ms (1000 ms backoff) | |
962 | 1 successful connections out of 3 attempts, seqno 2 | |
5eda645e | 963 | disconnected |
eba18f00 | 964 | disconnected at 12500 ms (0 ms ago) |
3ed497fc BP |
965 | run |
966 | ||
967 | # Back off for 1000 ms. | |
968 | timeout | |
969 | advance 1000 ms | |
970 | ||
971 | ### t=13500 ### | |
972 | in BACKOFF for 1000 ms (1000 ms backoff) | |
5eda645e | 973 | last connected 7000 ms ago, connected 6000 ms total |
3ed497fc BP |
974 | run |
975 | should connect | |
976 | ]) | |
3ed497fc BP |
977 | |
978 | ###################################################################### | |
d1b680c6 BP |
979 | RECONNECT_CHECK([connection attempt fails quickly], |
980 | [enable | |
3ed497fc BP |
981 | |
982 | # Connection fails quickly. | |
983 | run | |
984 | connect-failed ECONNREFUSED | |
985 | ||
986 | # Back off for 1000 ms. | |
987 | run | |
988 | timeout | |
989 | ||
990 | # Connection fails quickly again. | |
991 | run | |
992 | connect-failed ECONNREFUSED | |
993 | ||
994 | # Back off for 2000 ms. | |
995 | run | |
996 | timeout | |
d1b680c6 BP |
997 | ], |
998 | [### t=1000 ### | |
3ed497fc BP |
999 | enable |
1000 | in BACKOFF for 0 ms (0 ms backoff) | |
1001 | ||
1002 | # Connection fails quickly. | |
1003 | run | |
1004 | should connect | |
1005 | connect-failed ECONNREFUSED | |
1006 | in BACKOFF for 0 ms (1000 ms backoff) | |
1007 | 0 successful connections out of 1 attempts, seqno 0 | |
1008 | ||
1009 | # Back off for 1000 ms. | |
1010 | run | |
1011 | timeout | |
1012 | advance 1000 ms | |
1013 | ||
1014 | ### t=2000 ### | |
1015 | in BACKOFF for 1000 ms (1000 ms backoff) | |
1016 | ||
1017 | # Connection fails quickly again. | |
1018 | run | |
1019 | should connect | |
1020 | connect-failed ECONNREFUSED | |
1021 | in BACKOFF for 0 ms (2000 ms backoff) | |
1022 | 0 successful connections out of 2 attempts, seqno 0 | |
1023 | ||
1024 | # Back off for 2000 ms. | |
1025 | run | |
1026 | timeout | |
1027 | advance 2000 ms | |
1028 | ||
1029 | ### t=4000 ### | |
1030 | in BACKOFF for 2000 ms (2000 ms backoff) | |
1031 | ]) | |
3ed497fc | 1032 | |
a85c0bbc | 1033 | ###################################################################### |
d1b680c6 BP |
1034 | RECONNECT_CHECK([max-tries of 1 honored], |
1035 | [set-max-tries 1 | |
a85c0bbc BP |
1036 | enable |
1037 | ||
1038 | # Connection succeeds. | |
1039 | run | |
1040 | connected | |
1041 | ||
1042 | # Send inactivity probe. | |
1043 | timeout | |
1044 | run | |
1045 | ||
1046 | # Idle timeout kills connection. | |
1047 | timeout | |
1048 | run | |
1049 | disconnected | |
d1b680c6 | 1050 | ], |
a85c0bbc BP |
1051 | [### t=1000 ### |
1052 | set-max-tries 1 | |
1053 | 1 tries left | |
1054 | enable | |
1055 | in BACKOFF for 0 ms (0 ms backoff) | |
1056 | 0 tries left | |
1057 | ||
1058 | # Connection succeeds. | |
1059 | run | |
1060 | should connect | |
1061 | connected | |
1062 | in ACTIVE for 0 ms (0 ms backoff) | |
a6f639f8 | 1063 | created 1000, last activity 1000, last connected 1000 |
a85c0bbc | 1064 | 1 successful connections out of 1 attempts, seqno 1 |
5eda645e AE |
1065 | connected |
1066 | last connected 0 ms ago, connected 0 ms total | |
a85c0bbc BP |
1067 | |
1068 | # Send inactivity probe. | |
1069 | timeout | |
1070 | advance 5000 ms | |
1071 | ||
1072 | ### t=6000 ### | |
1073 | in ACTIVE for 5000 ms (0 ms backoff) | |
a85c0bbc BP |
1074 | run |
1075 | should send probe | |
1076 | in IDLE for 0 ms (0 ms backoff) | |
1077 | ||
1078 | # Idle timeout kills connection. | |
1079 | timeout | |
1080 | advance 5000 ms | |
1081 | ||
1082 | ### t=11000 ### | |
1083 | in IDLE for 5000 ms (0 ms backoff) | |
a85c0bbc BP |
1084 | run |
1085 | should disconnect | |
1086 | disconnected | |
1087 | in VOID for 0 ms (1000 ms backoff) | |
1088 | 1 successful connections out of 1 attempts, seqno 2 | |
5eda645e | 1089 | disconnected |
eba18f00 | 1090 | disconnected at 11000 ms (0 ms ago) |
a85c0bbc | 1091 | ]) |
a85c0bbc BP |
1092 | |
1093 | ###################################################################### | |
d1b680c6 BP |
1094 | RECONNECT_CHECK([max-tries of 0 honored], |
1095 | [set-max-tries 0 | |
a85c0bbc BP |
1096 | enable |
1097 | run | |
1098 | timeout | |
d1b680c6 | 1099 | ], |
a85c0bbc BP |
1100 | [### t=1000 ### |
1101 | set-max-tries 0 | |
1102 | 0 tries left | |
1103 | enable | |
1104 | run | |
1105 | timeout | |
1106 | no timeout | |
1107 | ]) | |
19df7f51 BP |
1108 | |
1109 | ###################################################################### | |
d1b680c6 BP |
1110 | RECONNECT_CHECK([passive mode], |
1111 | [passive | |
19df7f51 BP |
1112 | enable |
1113 | ||
1114 | # Start listening. | |
1115 | timeout | |
1116 | run | |
1117 | listening | |
1118 | ||
1119 | # Listening never times out. | |
1120 | timeout | |
1121 | run | |
1122 | ||
1123 | # Listening failed (accept() returned funny error?). Back off and try again. | |
1124 | listen-error 0 | |
1125 | timeout | |
1126 | run | |
1127 | listening | |
1128 | ||
1129 | # Connection accepted. | |
1130 | connected | |
a6f639f8 | 1131 | activity |
19df7f51 | 1132 | advance 1000 |
a6f639f8 | 1133 | activity |
19df7f51 BP |
1134 | |
1135 | # Connection times out. | |
1136 | timeout | |
1137 | run | |
1138 | timeout | |
1139 | run | |
1140 | disconnected | |
1141 | ||
1142 | # Start listening again. | |
1143 | timeout | |
1144 | run | |
1145 | listening | |
d1b680c6 | 1146 | ], |
19df7f51 BP |
1147 | [### t=1000 ### |
1148 | passive | |
1149 | enable | |
1150 | in BACKOFF for 0 ms (0 ms backoff) | |
1151 | ||
1152 | # Start listening. | |
1153 | timeout | |
1154 | advance 0 ms | |
1155 | run | |
1156 | should connect | |
1157 | listening | |
1158 | in LISTENING for 0 ms (0 ms backoff) | |
1159 | ||
1160 | # Listening never times out. | |
1161 | timeout | |
1162 | no timeout | |
1163 | run | |
1164 | ||
1165 | # Listening failed (accept() returned funny error?). Back off and try again. | |
1166 | listen-error 0 | |
1167 | in BACKOFF for 0 ms (1000 ms backoff) | |
1168 | timeout | |
1169 | advance 1000 ms | |
1170 | ||
1171 | ### t=2000 ### | |
1172 | in BACKOFF for 1000 ms (1000 ms backoff) | |
1173 | run | |
1174 | should connect | |
1175 | listening | |
1176 | in LISTENING for 0 ms (1000 ms backoff) | |
1177 | ||
1178 | # Connection accepted. | |
1179 | connected | |
1180 | in ACTIVE for 0 ms (1000 ms backoff) | |
a6f639f8 | 1181 | created 1000, last activity 1000, last connected 2000 |
19df7f51 | 1182 | 1 successful connections out of 1 attempts, seqno 1 |
5eda645e AE |
1183 | connected |
1184 | last connected 0 ms ago, connected 0 ms total | |
a6f639f8 BP |
1185 | activity |
1186 | created 1000, last activity 2000, last connected 2000 | |
19df7f51 BP |
1187 | advance 1000 |
1188 | ||
1189 | ### t=3000 ### | |
1190 | in ACTIVE for 1000 ms (1000 ms backoff) | |
a6f639f8 BP |
1191 | activity |
1192 | created 1000, last activity 3000, last connected 2000 | |
19df7f51 BP |
1193 | |
1194 | # Connection times out. | |
1195 | timeout | |
1196 | advance 5000 ms | |
1197 | ||
1198 | ### t=8000 ### | |
1199 | in ACTIVE for 6000 ms (1000 ms backoff) | |
19df7f51 BP |
1200 | run |
1201 | should send probe | |
1202 | in IDLE for 0 ms (1000 ms backoff) | |
1203 | timeout | |
1204 | advance 5000 ms | |
1205 | ||
1206 | ### t=13000 ### | |
1207 | in IDLE for 5000 ms (1000 ms backoff) | |
19df7f51 BP |
1208 | run |
1209 | should disconnect | |
1210 | disconnected | |
1211 | in BACKOFF for 0 ms (0 ms backoff) | |
1212 | 1 successful connections out of 1 attempts, seqno 2 | |
5eda645e | 1213 | disconnected |
eba18f00 | 1214 | disconnected at 13000 ms (0 ms ago) |
19df7f51 BP |
1215 | |
1216 | # Start listening again. | |
1217 | timeout | |
1218 | advance 0 ms | |
1219 | run | |
1220 | should connect | |
1221 | listening | |
1222 | in LISTENING for 0 ms (0 ms backoff) | |
1223 | ]) |