X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tests%2Freconnect.at;h=559836420a92ce51cb7f97ba353dd4ab23e55587;hb=96fc46e8fdafd6467906e11e0fb493e2b78f2fb5;hp=7c1cc6ab6733eb159c0e0d709c89736d53b63f07;hpb=c69ee87c10818267f991236201150b1fa51ae519;p=openvswitch diff --git a/tests/reconnect.at b/tests/reconnect.at index 7c1cc6ab..55983642 100644 --- a/tests/reconnect.at +++ b/tests/reconnect.at @@ -1,23 +1,41 @@ AT_BANNER([reconnect library]) +m4_define([__RECONNECT_CHECK], + [AT_SETUP([$1]) + $2 + AT_KEYWORDS([reconnect]) + AT_DATA([input], [$3]) + AT_CHECK([$4], [0], [$5]) + AT_CLEANUP]) + +m4_define([RECONNECT_CHECK], + [__RECONNECT_CHECK( + [$1 - C], + [], + [$2], + [test-reconnect < input], + [$3]) + __RECONNECT_CHECK( + [$1 - Python], + [AT_SKIP_IF([test $HAVE_PYTHON = no])], + [$2], + [$PYTHON $srcdir/test-reconnect.py < input], + [$3])]) + ###################################################################### -AT_SETUP([nothing happens if not enabled]) -AT_KEYWORDS([reconnect]) -AT_DATA([input], [run +RECONNECT_CHECK([nothing happens if not enabled], + [run timeout -]) -AT_CHECK([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 +RECONNECT_CHECK([quick connect, idle disconnect], + [enable # Connection succeeds. run @@ -31,8 +49,7 @@ run timeout run disconnected -]) -AT_CHECK([test-reconnect < input], [0], +], [### t=1000 ### enable in BACKOFF for 0 ms (0 ms backoff) @@ -70,12 +87,10 @@ disconnected 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 +RECONNECT_CHECK([slow connect, idle disconnect], + [enable # Start connecting. run @@ -94,8 +109,7 @@ run timeout run disconnected -]) -AT_CHECK([test-reconnect < input], [0], +], [### t=1000 ### enable in BACKOFF for 0 ms (0 ms backoff) @@ -143,12 +157,10 @@ disconnected 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 +RECONNECT_CHECK([connect backs off], + [enable # First connection attempt fails after 1000 ms. run @@ -207,8 +219,7 @@ connecting timeout run connect-failed -]) -AT_CHECK([test-reconnect < input], [0], +], [### t=1000 ### enable in BACKOFF for 0 ms (0 ms backoff) @@ -345,12 +356,10 @@ 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 +RECONNECT_CHECK([connections with no data preserve backoff], + [enable # First connect, then idle timeout kills connection. run @@ -506,14 +515,11 @@ timeout ### 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 +RECONNECT_CHECK([brief connection preserves backoff], + [enable # First connection attempt fails after 1000 ms. run @@ -551,9 +557,7 @@ run # Back off for 4000 ms. timeout run -]) -AT_CHECK([test-reconnect < input], [0], - [### t=1000 ### +], [### t=1000 ### enable in BACKOFF for 0 ms (0 ms backoff) @@ -641,12 +645,10 @@ timeout run should connect ]) -AT_CLEANUP ###################################################################### -AT_SETUP([brief connection with data preserves backoff]) -AT_KEYWORDS([reconnect]) -AT_DATA([input], [enable +RECONNECT_CHECK([brief connection with data preserves backoff], + [enable # First connection attempt fails after 1000 ms. run @@ -694,8 +696,7 @@ run # Back off for 4000 ms. timeout run -]) -AT_CHECK([test-reconnect < input], [0], +], [### t=1000 ### enable in BACKOFF for 0 ms (0 ms backoff) @@ -805,12 +806,10 @@ timeout run should connect ]) -AT_CLEANUP ###################################################################### -AT_SETUP([long connection resets backoff]) -AT_KEYWORDS([reconnect]) -AT_DATA([input], [enable +RECONNECT_CHECK([long connection resets backoff], + [enable # First connection attempt fails after 1000 ms. run @@ -858,8 +857,7 @@ run # Back off for 1000 ms. timeout run -]) -AT_CHECK([test-reconnect < input], [0], +], [### t=1000 ### enable in BACKOFF for 0 ms (0 ms backoff) @@ -969,12 +967,10 @@ timeout run should connect ]) -AT_CLEANUP ###################################################################### -AT_SETUP([connection attempt fails quickly]) -AT_KEYWORDS([reconnect]) -AT_DATA([input], [enable +RECONNECT_CHECK([connection attempt fails quickly], + [enable # Connection fails quickly. run @@ -991,9 +987,8 @@ connect-failed ECONNREFUSED # Back off for 2000 ms. run timeout -]) -AT_CHECK([test-reconnect < input], [0], - [### t=1000 ### +], + [### t=1000 ### enable in BACKOFF for 0 ms (0 ms backoff) @@ -1027,12 +1022,10 @@ timeout ### t=4000 ### in BACKOFF for 2000 ms (2000 ms backoff) ]) -AT_CLEANUP ###################################################################### -AT_SETUP([max-tries of 1 honored]) -AT_KEYWORDS([reconnect]) -AT_DATA([input], [set-max-tries 1 +RECONNECT_CHECK([max-tries of 1 honored], + [set-max-tries 1 enable # Connection succeeds. @@ -1047,8 +1040,7 @@ run timeout run disconnected -]) -AT_CHECK([test-reconnect < input], [0], +], [### t=1000 ### set-max-tries 1 1 tries left @@ -1089,17 +1081,14 @@ disconnected 1 successful connections out of 1 attempts, seqno 2 not connected (0 ms), total 10000 ms connected ]) -AT_CLEANUP ###################################################################### -AT_SETUP([max-tries of 0 honored]) -AT_KEYWORDS([reconnect]) -AT_DATA([input], [set-max-tries 0 +RECONNECT_CHECK([max-tries of 0 honored], + [set-max-tries 0 enable run timeout -]) -AT_CHECK([test-reconnect < input], [0], +], [### t=1000 ### set-max-tries 0 0 tries left @@ -1108,4 +1097,120 @@ run timeout no timeout ]) -AT_CLEANUP + +###################################################################### +RECONNECT_CHECK([passive mode], + [passive +enable + +# Start listening. +timeout +run +listening + +# Listening never times out. +timeout +run + +# Listening failed (accept() returned funny error?). Back off and try again. +listen-error 0 +timeout +run +listening + +# Connection accepted. +connected +received +advance 1000 +received + +# Connection times out. +timeout +run +timeout +run +disconnected + +# Start listening again. +timeout +run +listening +], + [### t=1000 ### +passive +enable + in BACKOFF for 0 ms (0 ms backoff) + +# Start listening. +timeout + advance 0 ms +run + should connect +listening + in LISTENING for 0 ms (0 ms backoff) + +# Listening never times out. +timeout + no timeout +run + +# Listening failed (accept() returned funny error?). Back off and try again. +listen-error 0 + in BACKOFF for 0 ms (1000 ms backoff) +timeout + advance 1000 ms + +### t=2000 ### + in BACKOFF for 1000 ms (1000 ms backoff) +run + should connect +listening + in LISTENING for 0 ms (1000 ms backoff) + +# Connection accepted. +connected + in ACTIVE for 0 ms (1000 ms backoff) + created 1000, last received 1000, last connected 2000 + 1 successful connections out of 1 attempts, seqno 1 + connected (0 ms), total 0 ms connected +received + created 1000, last received 2000, last connected 2000 +advance 1000 + +### t=3000 ### + in ACTIVE for 1000 ms (1000 ms backoff) + connected (1000 ms), total 1000 ms connected +received + created 1000, last received 3000, last connected 2000 + +# Connection times out. +timeout + advance 5000 ms + +### t=8000 ### + in ACTIVE for 6000 ms (1000 ms backoff) + connected (6000 ms), total 6000 ms connected +run + should send probe + in IDLE for 0 ms (1000 ms backoff) +timeout + advance 5000 ms + +### t=13000 ### + in IDLE for 5000 ms (1000 ms backoff) + connected (11000 ms), total 11000 ms connected +run + should disconnect +disconnected + in BACKOFF for 0 ms (0 ms backoff) + 1 successful connections out of 1 attempts, seqno 2 + not connected (0 ms), total 11000 ms connected + +# Start listening again. +timeout + advance 0 ms +run + should connect +listening + in LISTENING for 0 ms (0 ms backoff) +])