diff options
author | Ben Pfaff <blp@nicira.com> | 2009-11-10 15:30:49 -0800 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2009-11-12 12:56:21 -0800 |
commit | 3ed497fc10033c9857140270d60ef6aa2d7c0c08 (patch) | |
tree | 13fc8d25e8023b1a33c2b003e35c53e963b80423 /tests/reconnect.at | |
parent | 8ecd53084ce42e2e868a9c24c57b2d9a7e59cfc2 (diff) |
New "reconnect" library for managing network connection attempts.
This library implements the reconnection FSM used by the "rconn" library.
Therefore, it makes sense to change rconn to use this, and I have a patch
to do that, but I am not applying it at the moment to avoid changing unrelated
code on the "db" branch.
Diffstat (limited to 'tests/reconnect.at')
-rw-r--r-- | tests/reconnect.at | 1039 |
1 files changed, 1039 insertions, 0 deletions
diff --git a/tests/reconnect.at b/tests/reconnect.at new file mode 100644 index 00000000..33e4b951 --- /dev/null +++ b/tests/reconnect.at @@ -0,0 +1,1039 @@ +AT_BANNER([reconnect library]) + +###################################################################### +AT_SETUP([nothing happens if not enabled]) +AT_KEYWORDS([reconnect]) +AT_DATA([input], [run +timeout +]) +OVS_CHECK_LCOV([test-reconnect < input], [0], + [### t=1000 ### +run +timeout + no timeout +]) +AT_CLEANUP + +###################################################################### +AT_SETUP([quick connect, idle disconnect]) +AT_KEYWORDS([reconnect]) +AT_DATA([input], [enable + +# Connection succeeds. +run +connected + +# Send inactivity probe. +timeout +run + +# Idle timeout kills connection. +timeout +run +disconnected +]) +OVS_CHECK_LCOV([test-reconnect < input], [0], + [### t=1000 ### +enable + in BACKOFF for 0 ms (0 ms backoff) + +# Connection succeeds. +run + should connect +connected + in ACTIVE for 0 ms (0 ms backoff) + 1 successful connections out of 1 attempts, seqno 1 + connected (0 ms), total 0 ms connected + +# Send inactivity probe. +timeout + advance 5000 ms + +### t=6000 ### + in ACTIVE for 5000 ms (0 ms backoff) + connected (5000 ms), total 5000 ms connected +run + should send probe + in IDLE for 0 ms (0 ms backoff) + +# Idle timeout kills connection. +timeout + advance 5000 ms + +### t=11000 ### + in IDLE for 5000 ms (0 ms backoff) + connected (10000 ms), total 10000 ms connected +run + should disconnect +disconnected + in BACKOFF for 0 ms (1000 ms backoff) + 1 successful connections out of 1 attempts, seqno 2 + not connected (0 ms), total 10000 ms connected +]) +AT_CLEANUP + +###################################################################### +AT_SETUP([slow connect, idle disconnect]) +AT_KEYWORDS([reconnect]) +AT_DATA([input], [enable + +# Start connecting. +run +connecting + +# Connect after 500 ms. +advance 500 +run +connected + +# Send inactivity probe. +timeout +run + +# Idle timeout kills connection. +timeout +run +disconnected +]) +OVS_CHECK_LCOV([test-reconnect < input], [0], + [### t=1000 ### +enable + in BACKOFF for 0 ms (0 ms backoff) + +# Start connecting. +run + should connect +connecting + in CONNECTING for 0 ms (0 ms backoff) + +# Connect after 500 ms. +advance 500 + +### t=1500 ### + in CONNECTING for 500 ms (0 ms backoff) +run + should connect +connected + in ACTIVE for 0 ms (0 ms backoff) + created 1000, last received 1000, last connected 1500 + 1 successful connections out of 1 attempts, seqno 1 + connected (0 ms), total 0 ms connected + +# Send inactivity probe. +timeout + advance 5000 ms + +### t=6500 ### + in ACTIVE for 5000 ms (0 ms backoff) + connected (5000 ms), total 5000 ms connected +run + should send probe + in IDLE for 0 ms (0 ms backoff) + +# Idle timeout kills connection. +timeout + advance 5000 ms + +### t=11500 ### + in IDLE for 5000 ms (0 ms backoff) + connected (10000 ms), total 10000 ms connected +run + should disconnect +disconnected + in BACKOFF for 0 ms (1000 ms backoff) + 1 successful connections out of 1 attempts, seqno 2 + not connected (0 ms), total 10000 ms connected +]) +AT_CLEANUP + +###################################################################### +AT_SETUP([connect backs off]) +AT_KEYWORDS([reconnect]) +AT_DATA([input], [enable + +# First connection attempt fails after 1000 ms. +run +connecting +run +timeout +run +connect-failed + +# Back off for 1000 ms. +timeout +run + +# Second connection attempt fails after 1000 ms. +connecting +timeout +run +connect-failed + +# Back off for 2000 ms. +timeout +run + +# Third connection attempt fails after 2000 ms. +connecting +timeout +run +connect-failed + +# Back off for 4000 ms. +timeout +run + +# Third connection attempt fails after 4000 ms. +connecting +timeout +run +connect-failed + +# Back off for 8000 ms. +timeout +run + +# Third connection attempt fails after 8000 ms. +connecting +timeout +run +connect-failed + +# Back off for 8000 ms. +timeout +run + +# Fourth connection attempt fails after 8000 ms. +connecting +timeout +run +connect-failed +]) +OVS_CHECK_LCOV([test-reconnect < input], [0], + [### t=1000 ### +enable + in BACKOFF for 0 ms (0 ms backoff) + +# First connection attempt fails after 1000 ms. +run + should connect +connecting + in CONNECTING for 0 ms (0 ms backoff) +run + should connect +timeout + advance 1000 ms + +### t=2000 ### + in CONNECTING for 1000 ms (0 ms backoff) +run + should disconnect +connect-failed + in BACKOFF for 0 ms (1000 ms backoff) + 0 successful connections out of 1 attempts, seqno 0 + +# Back off for 1000 ms. +timeout + advance 1000 ms + +### t=3000 ### + in BACKOFF for 1000 ms (1000 ms backoff) +run + should connect + +# Second connection attempt fails after 1000 ms. +connecting + in CONNECTING for 0 ms (1000 ms backoff) +timeout + advance 1000 ms + +### t=4000 ### + in CONNECTING for 1000 ms (1000 ms backoff) +run + should disconnect +connect-failed + in BACKOFF for 0 ms (2000 ms backoff) + 0 successful connections out of 2 attempts, seqno 0 + +# Back off for 2000 ms. +timeout + advance 2000 ms + +### t=6000 ### + in BACKOFF for 2000 ms (2000 ms backoff) +run + should connect + +# Third connection attempt fails after 2000 ms. +connecting + in CONNECTING for 0 ms (2000 ms backoff) +timeout + advance 2000 ms + +### t=8000 ### + in CONNECTING for 2000 ms (2000 ms backoff) +run + should disconnect +connect-failed + in BACKOFF for 0 ms (4000 ms backoff) + 0 successful connections out of 3 attempts, seqno 0 + +# Back off for 4000 ms. +timeout + advance 4000 ms + +### t=12000 ### + in BACKOFF for 4000 ms (4000 ms backoff) +run + should connect + +# Third connection attempt fails after 4000 ms. +connecting + in CONNECTING for 0 ms (4000 ms backoff) +timeout + advance 4000 ms + +### t=16000 ### + in CONNECTING for 4000 ms (4000 ms backoff) +run + should disconnect +connect-failed + in BACKOFF for 0 ms (8000 ms backoff) + 0 successful connections out of 4 attempts, seqno 0 + +# Back off for 8000 ms. +timeout + advance 8000 ms + +### t=24000 ### + in BACKOFF for 8000 ms (8000 ms backoff) +run + should connect + +# Third connection attempt fails after 8000 ms. +connecting + in CONNECTING for 0 ms (8000 ms backoff) +timeout + advance 8000 ms + +### t=32000 ### + in CONNECTING for 8000 ms (8000 ms backoff) +run + should disconnect +connect-failed + in BACKOFF for 0 ms (8000 ms backoff) + 0 successful connections out of 5 attempts, seqno 0 + +# Back off for 8000 ms. +timeout + advance 8000 ms + +### t=40000 ### + in BACKOFF for 8000 ms (8000 ms backoff) +run + should connect + +# Fourth connection attempt fails after 8000 ms. +connecting + in CONNECTING for 0 ms (8000 ms backoff) +timeout + advance 8000 ms + +### t=48000 ### + in CONNECTING for 8000 ms (8000 ms backoff) +run + should disconnect +connect-failed + in BACKOFF for 0 ms (8000 ms backoff) + 0 successful connections out of 6 attempts, seqno 0 +]) +AT_CLEANUP + +###################################################################### +AT_SETUP([connections with no data preserve backoff]) +AT_KEYWORDS([reconnect]) +AT_DATA([input], [enable + +# First connect, then idle timeout kills connection. +run +connected +timeout +run +timeout +run +disconnected + +# Back off for 1000 ms. +timeout +run + +# Second connect, then idle timeout kills connection. +run +connected +timeout +run +timeout +run +disconnected + +# Back off for 2000 ms. +timeout +run + +# Third connect, then idle timeout kills connection. +run +connected +timeout +run +timeout +run +disconnected + +# Back off for 4000 ms. +timeout +], [### t=1000 ### +enable + in BACKOFF for 0 ms (0 ms backoff) + +# First connect, then idle timeout kills connection. +run + should connect +connected + in ACTIVE for 0 ms (0 ms backoff) + 1 successful connections out of 1 attempts, seqno 1 + connected (0 ms), total 0 ms connected +timeout + advance 5000 ms + +### t=6000 ### + in ACTIVE for 5000 ms (0 ms backoff) + connected (5000 ms), total 5000 ms connected +run + should send probe + in IDLE for 0 ms (0 ms backoff) +timeout + advance 5000 ms + +### t=11000 ### + in IDLE for 5000 ms (0 ms backoff) + connected (10000 ms), total 10000 ms connected +run + should disconnect +disconnected + in BACKOFF for 0 ms (1000 ms backoff) + 1 successful connections out of 1 attempts, seqno 2 + not connected (0 ms), total 10000 ms connected + +# Back off for 1000 ms. +timeout + advance 1000 ms + +### t=12000 ### + in BACKOFF for 1000 ms (1000 ms backoff) +run + should connect + +# Second connect, then idle timeout kills connection. +run + should connect +connected + in ACTIVE for 0 ms (1000 ms backoff) + created 1000, last received 1000, last connected 12000 + 2 successful connections out of 2 attempts, seqno 3 + connected (0 ms), total 10000 ms connected +timeout + advance 5000 ms + +### t=17000 ### + in ACTIVE for 5000 ms (1000 ms backoff) + connected (5000 ms), total 15000 ms connected +run + should send probe + in IDLE for 0 ms (1000 ms backoff) +timeout + advance 5000 ms + +### t=22000 ### + in IDLE for 5000 ms (1000 ms backoff) + connected (10000 ms), total 20000 ms connected +run + should disconnect +disconnected + in BACKOFF for 0 ms (2000 ms backoff) + 2 successful connections out of 2 attempts, seqno 4 + not connected (0 ms), total 20000 ms connected + +# Back off for 2000 ms. +timeout + advance 2000 ms + +### t=24000 ### + in BACKOFF for 2000 ms (2000 ms backoff) +run + should connect + +# Third connect, then idle timeout kills connection. +run + should connect +connected + in ACTIVE for 0 ms (2000 ms backoff) + created 1000, last received 1000, last connected 24000 + 3 successful connections out of 3 attempts, seqno 5 + connected (0 ms), total 20000 ms connected +timeout + advance 5000 ms + +### t=29000 ### + in ACTIVE for 5000 ms (2000 ms backoff) + connected (5000 ms), total 25000 ms connected +run + should send probe + in IDLE for 0 ms (2000 ms backoff) +timeout + advance 5000 ms + +### t=34000 ### + in IDLE for 5000 ms (2000 ms backoff) + connected (10000 ms), total 30000 ms connected +run + should disconnect +disconnected + in BACKOFF for 0 ms (4000 ms backoff) + 3 successful connections out of 3 attempts, seqno 6 + not connected (0 ms), total 30000 ms connected + +# Back off for 4000 ms. +timeout + advance 4000 ms + +### t=38000 ### + in BACKOFF for 4000 ms (4000 ms backoff) + +]) +AT_CLEANUP + +###################################################################### +AT_SETUP([brief connection preserves backoff]) +AT_KEYWORDS([reconnect]) +AT_DATA([input], [enable + +# First connection attempt fails after 1000 ms. +run +connecting +run +timeout +run +connect-failed + +# Back off for 1000 ms. +timeout +run + +# Second connection attempt fails after 1000 ms. +connecting +timeout +run +connect-failed + +# Back off for 2000 ms. +timeout +run + +# Third connection attempt succeeds after 500 ms. +connecting +advance 500 +run +connected + +# Connection drops after another 250 ms. +advance 250 +disconnected +run + +# Back off for 4000 ms. +timeout +run +]) +OVS_CHECK_LCOV([test-reconnect < input], [0], + [### t=1000 ### +enable + in BACKOFF for 0 ms (0 ms backoff) + +# First connection attempt fails after 1000 ms. +run + should connect +connecting + in CONNECTING for 0 ms (0 ms backoff) +run + should connect +timeout + advance 1000 ms + +### t=2000 ### + in CONNECTING for 1000 ms (0 ms backoff) +run + should disconnect +connect-failed + in BACKOFF for 0 ms (1000 ms backoff) + 0 successful connections out of 1 attempts, seqno 0 + +# Back off for 1000 ms. +timeout + advance 1000 ms + +### t=3000 ### + in BACKOFF for 1000 ms (1000 ms backoff) +run + should connect + +# Second connection attempt fails after 1000 ms. +connecting + in CONNECTING for 0 ms (1000 ms backoff) +timeout + advance 1000 ms + +### t=4000 ### + in CONNECTING for 1000 ms (1000 ms backoff) +run + should disconnect +connect-failed + in BACKOFF for 0 ms (2000 ms backoff) + 0 successful connections out of 2 attempts, seqno 0 + +# Back off for 2000 ms. +timeout + advance 2000 ms + +### t=6000 ### + in BACKOFF for 2000 ms (2000 ms backoff) +run + should connect + +# Third connection attempt succeeds after 500 ms. +connecting + in CONNECTING for 0 ms (2000 ms backoff) +advance 500 + +### t=6500 ### + in CONNECTING for 500 ms (2000 ms backoff) +run + should connect +connected + in ACTIVE for 0 ms (2000 ms backoff) + created 1000, last received 1000, last connected 6500 + 1 successful connections out of 3 attempts, seqno 1 + connected (0 ms), total 0 ms connected + +# Connection drops after another 250 ms. +advance 250 + +### t=6750 ### + in ACTIVE for 250 ms (2000 ms backoff) + connected (250 ms), total 250 ms connected +disconnected + in BACKOFF for 0 ms (4000 ms backoff) + 1 successful connections out of 3 attempts, seqno 2 + not connected (0 ms), total 250 ms connected +run + +# Back off for 4000 ms. +timeout + advance 4000 ms + +### t=10750 ### + in BACKOFF for 4000 ms (4000 ms backoff) +run + should connect +]) +AT_CLEANUP + +###################################################################### +AT_SETUP([brief connection with data preserves backoff]) +AT_KEYWORDS([reconnect]) +AT_DATA([input], [enable + +# First connection attempt fails after 1000 ms. +run +connecting +run +timeout +run +connect-failed + +# Back off for 1000 ms. +timeout +run + +# Second connection attempt fails after 1000 ms. +connecting +timeout +run +connect-failed + +# Back off for 2000 ms. +timeout +run + +# Third connection attempt succeeds after 500 ms. +connecting +advance 500 +run +connected + +# Connection receives 3 chunks of data spaced 250 ms apart. +advance 250 +run +received +advance 250 +run +received +advance 250 +run +received + +# Connection drops. +disconnected +run + +# Back off for 4000 ms. +timeout +run +]) +OVS_CHECK_LCOV([test-reconnect < input], [0], + [### t=1000 ### +enable + in BACKOFF for 0 ms (0 ms backoff) + +# First connection attempt fails after 1000 ms. +run + should connect +connecting + in CONNECTING for 0 ms (0 ms backoff) +run + should connect +timeout + advance 1000 ms + +### t=2000 ### + in CONNECTING for 1000 ms (0 ms backoff) +run + should disconnect +connect-failed + in BACKOFF for 0 ms (1000 ms backoff) + 0 successful connections out of 1 attempts, seqno 0 + +# Back off for 1000 ms. +timeout + advance 1000 ms + +### t=3000 ### + in BACKOFF for 1000 ms (1000 ms backoff) +run + should connect + +# Second connection attempt fails after 1000 ms. +connecting + in CONNECTING for 0 ms (1000 ms backoff) +timeout + advance 1000 ms + +### t=4000 ### + in CONNECTING for 1000 ms (1000 ms backoff) +run + should disconnect +connect-failed + in BACKOFF for 0 ms (2000 ms backoff) + 0 successful connections out of 2 attempts, seqno 0 + +# Back off for 2000 ms. +timeout + advance 2000 ms + +### t=6000 ### + in BACKOFF for 2000 ms (2000 ms backoff) +run + should connect + +# Third connection attempt succeeds after 500 ms. +connecting + in CONNECTING for 0 ms (2000 ms backoff) +advance 500 + +### t=6500 ### + in CONNECTING for 500 ms (2000 ms backoff) +run + should connect +connected + in ACTIVE for 0 ms (2000 ms backoff) + created 1000, last received 1000, last connected 6500 + 1 successful connections out of 3 attempts, seqno 1 + connected (0 ms), total 0 ms connected + +# Connection receives 3 chunks of data spaced 250 ms apart. +advance 250 + +### t=6750 ### + in ACTIVE for 250 ms (2000 ms backoff) + connected (250 ms), total 250 ms connected +run +received + created 1000, last received 6750, last connected 6500 +advance 250 + +### t=7000 ### + in ACTIVE for 500 ms (2000 ms backoff) + connected (500 ms), total 500 ms connected +run +received + created 1000, last received 7000, last connected 6500 +advance 250 + +### t=7250 ### + in ACTIVE for 750 ms (2000 ms backoff) + connected (750 ms), total 750 ms connected +run +received + created 1000, last received 7250, last connected 6500 + +# Connection drops. +disconnected + in BACKOFF for 0 ms (4000 ms backoff) + 1 successful connections out of 3 attempts, seqno 2 + not connected (0 ms), total 750 ms connected +run + +# Back off for 4000 ms. +timeout + advance 4000 ms + +### t=11250 ### + in BACKOFF for 4000 ms (4000 ms backoff) +run + should connect +]) +AT_CLEANUP + +###################################################################### +AT_SETUP([long connection resets backoff]) +AT_KEYWORDS([reconnect]) +AT_DATA([input], [enable + +# First connection attempt fails after 1000 ms. +run +connecting +run +timeout +run +connect-failed + +# Back off for 1000 ms. +timeout +run + +# Second connection attempt fails after 1000 ms. +connecting +timeout +run +connect-failed + +# Back off for 2000 ms. +timeout +run + +# Third connection attempt succeeds after 500 ms. +connecting +advance 500 +run +connected + +# Connection receives 3 chunks of data spaced 2000 ms apart. +advance 2000 +run +received +advance 2000 +run +received +advance 2000 +run +received + +# Connection drops. +disconnected +run + +# Back off for 1000 ms. +timeout +run +]) +OVS_CHECK_LCOV([test-reconnect < input], [0], + [### t=1000 ### +enable + in BACKOFF for 0 ms (0 ms backoff) + +# First connection attempt fails after 1000 ms. +run + should connect +connecting + in CONNECTING for 0 ms (0 ms backoff) +run + should connect +timeout + advance 1000 ms + +### t=2000 ### + in CONNECTING for 1000 ms (0 ms backoff) +run + should disconnect +connect-failed + in BACKOFF for 0 ms (1000 ms backoff) + 0 successful connections out of 1 attempts, seqno 0 + +# Back off for 1000 ms. +timeout + advance 1000 ms + +### t=3000 ### + in BACKOFF for 1000 ms (1000 ms backoff) +run + should connect + +# Second connection attempt fails after 1000 ms. +connecting + in CONNECTING for 0 ms (1000 ms backoff) +timeout + advance 1000 ms + +### t=4000 ### + in CONNECTING for 1000 ms (1000 ms backoff) +run + should disconnect +connect-failed + in BACKOFF for 0 ms (2000 ms backoff) + 0 successful connections out of 2 attempts, seqno 0 + +# Back off for 2000 ms. +timeout + advance 2000 ms + +### t=6000 ### + in BACKOFF for 2000 ms (2000 ms backoff) +run + should connect + +# Third connection attempt succeeds after 500 ms. +connecting + in CONNECTING for 0 ms (2000 ms backoff) +advance 500 + +### t=6500 ### + in CONNECTING for 500 ms (2000 ms backoff) +run + should connect +connected + in ACTIVE for 0 ms (2000 ms backoff) + created 1000, last received 1000, last connected 6500 + 1 successful connections out of 3 attempts, seqno 1 + connected (0 ms), total 0 ms connected + +# Connection receives 3 chunks of data spaced 2000 ms apart. +advance 2000 + +### t=8500 ### + in ACTIVE for 2000 ms (2000 ms backoff) + connected (2000 ms), total 2000 ms connected +run +received + created 1000, last received 8500, last connected 6500 +advance 2000 + +### t=10500 ### + in ACTIVE for 4000 ms (2000 ms backoff) + connected (4000 ms), total 4000 ms connected +run +received + created 1000, last received 10500, last connected 6500 +advance 2000 + +### t=12500 ### + in ACTIVE for 6000 ms (2000 ms backoff) + connected (6000 ms), total 6000 ms connected +run +received + created 1000, last received 12500, last connected 6500 + +# Connection drops. +disconnected + in BACKOFF for 0 ms (1000 ms backoff) + 1 successful connections out of 3 attempts, seqno 2 + not connected (0 ms), total 6000 ms connected +run + +# Back off for 1000 ms. +timeout + advance 1000 ms + +### t=13500 ### + in BACKOFF for 1000 ms (1000 ms backoff) +run + should connect +]) +AT_CLEANUP + +###################################################################### +AT_SETUP([connection attempt fails quickly]) +AT_KEYWORDS([reconnect]) +AT_DATA([input], [enable + +# Connection fails quickly. +run +connect-failed ECONNREFUSED + +# Back off for 1000 ms. +run +timeout + +# Connection fails quickly again. +run +connect-failed ECONNREFUSED + +# Back off for 2000 ms. +run +timeout +]) +OVS_CHECK_LCOV([test-reconnect < input], [0], + [### t=1000 ### +enable + in BACKOFF for 0 ms (0 ms backoff) + +# Connection fails quickly. +run + should connect +connect-failed ECONNREFUSED + in BACKOFF for 0 ms (1000 ms backoff) + 0 successful connections out of 1 attempts, seqno 0 + +# Back off for 1000 ms. +run +timeout + advance 1000 ms + +### t=2000 ### + in BACKOFF for 1000 ms (1000 ms backoff) + +# Connection fails quickly again. +run + should connect +connect-failed ECONNREFUSED + in BACKOFF for 0 ms (2000 ms backoff) + 0 successful connections out of 2 attempts, seqno 0 + +# Back off for 2000 ms. +run +timeout + advance 2000 ms + +### t=4000 ### + in BACKOFF for 2000 ms (2000 ms backoff) +]) +AT_CLEANUP + |