server/tests.at: Abstract out the wait-for-knock machinery.
authorMark Wooding <mdw@distorted.org.uk>
Mon, 20 Sep 2021 23:01:02 +0000 (00:01 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 30 Apr 2022 00:51:38 +0000 (01:51 +0100)
We'll want it again soon.

server/tests.at

index ef2039a..582503a 100644 (file)
@@ -779,26 +779,32 @@ for i in alice bob; do (mkdir $i; cd $i; SETUPDIR([gamma])); done
 WITH_2TRIPES([alice], [bob], [-nslip], [-talice], [-tbob], [
   WITH_MITM([alice], [=bob_from_alice], [bob], [=alice_from_bob], [
 
-    COPROCESSES([wait-knock], [
-      echo WATCH +n
-      while read line; do
-       set x $line; shift
-       echo >&2 ">>> $line"
-       case "$1:$2:$3" in
-         OK::) ;;
-         NOTE:KNOCK:bob) shift 3; echo "$*" >knock-addr; break ;;
-         NOTE:* | TRACE:* | WARN:*) ;;
-         *) exit 63 ;;
-       esac
-      done
-    ], [
-      TRIPECTL -dalice
-    ])& waiter=$!
-
-    AT_CHECK([TRIPECTL -dbob ADD -knock bob -ephemeral alice INET 127.0.0.1 $alice_from_bob])
-
-    wait $waiter; waitrc=$?
-    AT_CHECK([echo $waitrc],, [0[]nl])
+m4_define([WAIT_KNOCK], [
+  COPROCESSES([wait-knock], [
+    echo "WATCH +n"
+    while read line; do
+      set x $line; shift
+      echo >&2 ">>> $line"
+      case "$[]1:$[]2:$[]3" in
+       OK::) ;;
+       NOTE:KNOCK:$2) shift 3; echo "$[]*" >knock-addr; break ;;
+       NOTE:* | TRACE:* | WARN:*) ;;
+       *) exit 63 ;;
+      esac
+    done
+  ], [
+    TRIPECTL -d$1
+  ])& waiter=$!
+
+  $3
+
+  wait $waiter; waitrc=$?
+  AT_CHECK([echo $waitrc],, [0[]nl])
+])
+
+    WAIT_KNOCK([alice], [bob], [
+      AT_CHECK([TRIPECTL -dbob ADD -knock bob -ephemeral alice INET 127.0.0.1 $alice_from_bob])
+    ])
     AT_CHECK_UNQUOTED([cat knock-addr],, [INET 127.0.0.1 $bob_from_alice[]nl])
 
     AWAIT_KXDONE([alice], [alice], [bob], [bob], [