#!/bin/sh
-. "${0%/*}/testlib.sh"
+. ./testlib.sh
-# Initialize one node
+echo [STEP] Initialize one node
-$tinc $c1 <<EOF
+tinc foo <<EOF
init foo
set DeviceType dummy
set Mode switch
set Broadcast no
set Address localhost
-set Port 32751
-start $r1
+set Port 30010
EOF
-# Generate an invitation and let another node join the VPN
+start_tinc foo
-$tinc $c1 invite bar | $tinc $c2 join
+echo [STEP] Generate an invitation and let another node join the VPN
-# Test equivalence of host config files
+tinc foo invite bar | tinc bar join
-cmp $d1/hosts/foo $d2/hosts/foo
-test "`grep ^Ed25519PublicKey $d1/hosts/bar`" = "`grep ^Ed25519PublicKey $d2/hosts/bar`"
+echo [STEP] Test equivalence of host config files
-# Test Mode, Broadcast and ConnectTo statements
+diff -w "$DIR_FOO/hosts/foo" "$DIR_BAR/hosts/foo"
+test "$(grep ^Ed25519PublicKey "$DIR_FOO/hosts/bar")" = "$(grep ^Ed25519PublicKey "$DIR_BAR/hosts/bar")"
-test `$tinc $c2 get Mode` = switch
-test `$tinc $c2 get Broadcast` = no
-test `$tinc $c2 get ConnectTo` = foo
+echo [STEP] Test Mode, Broadcast and ConnectTo statements
-# Check whether the new node can join the VPN
+test "$(tinc bar get Mode)" = switch
+test "$(tinc bar get Broadcast)" = no
+test "$(tinc bar get ConnectTo)" = foo
-$tinc $c2 << EOF
+echo [STEP] Check whether the new node can join the VPN
+
+tinc bar <<EOF
set DeviceType dummy
set Port 0
-start $r2
EOF
-sleep 1
+create_script foo hosts/bar-up
+create_script bar hosts/foo-up
+
+start_tinc bar
-test `$tinc $c1 dump reachable nodes | wc -l` = 2
-test `$tinc $c2 dump reachable nodes | wc -l` = 2
+wait_script foo hosts/bar-up
+wait_script bar hosts/foo-up
-$tinc $c2 stop
-$tinc $c1 stop
+require_nodes foo 2
+require_nodes bar 2