chiark / gitweb /
server/tests.at: Add a retry loop in `COMMS_EPING'.
[tripe] / server / tests.at
index 649ff82a4228399ed610157af5e0dedc2650d309..b3e01a0eca5f775351a59e5b89448ab7a3fe74a0 100644 (file)
@@ -172,10 +172,24 @@ m4_define([WITH_TRIPE], [WITH_TRIPEX([.], [$1], [$2])])
 m4_define([WITH_2TRIPES],
          [WITH_TRIPEX([$1], [$3 $4], [WITH_TRIPEX([$2], [$3 $5], [$6])])])
 
-## COMMS_EPING(adir, aname, bdir, bname)
+## RETRY(n, body)
+m4_define([RETRY], [
+  n=0 rc=1
+  while test $n -lt $1; do
+    if $2
+    then rc=0; break
+    fi
+    n=$(( $n + 1 ))
+  done
+  exit $rc
+])
+
+## COMMS_EPING(adir, aname, bdir, bname, [n])
 m4_define([COMMS_EPING], [
-  AT_CHECK([TRIPECTL -d$1 EPING $4],, [ignore])
-  AT_CHECK([TRIPECTL -d$3 EPING $2],, [ignore])
+  AT_CHECK([RETRY([m4_default([$5], [1])],
+    [TRIPECTL -d$1 EPING $4])],, [ignore])
+  AT_CHECK([RETRY([m4_default([$5], [1])],
+    [TRIPECTL -d$3 EPING $2])],, [ignore])
 ])
 
 ## COMMS_SLIP(adir, aname, bdir, bname)