Support running tests on NetBSD 8.2.
[tinc] / test / scripts.test
1 #!/bin/sh
2
3 . ./testlib.sh
4
5 echo [STEP] Initializing server node
6
7 port_foo=30040
8 port_bar=30041
9
10 tinc foo <<EOF
11 init foo
12 set DeviceType dummy
13 set Port $port_foo
14 set Address 127.0.0.1
15 add Subnet 10.0.0.1
16 add Subnet fec0::/64
17 EOF
18
19 echo [STEP] Setting up scripts
20
21 OUT=$DIR_FOO/scripts.out
22 rm -f "$OUT"
23
24 for script in \
25   tinc-up tinc-down \
26   host-up host-down \
27   subnet-up subnet-down \
28   hosts/foo-up hosts/foo-down \
29   hosts/bar-up hosts/bar-down \
30   invitation-created invitation-accepted; do
31
32   commands=$(
33     cat <<EOF
34       if is_windows && [ -n "\$INVITATION_FILE" ]; then
35         INVITATION_FILE=\$(cygpath --unix -- "\$INVITATION_FILE")
36       fi
37       echo >>'$OUT' "$script" "$TINC_SCRIPT_VARS"
38 EOF
39   )
40
41   create_script foo "$script" "$commands"
42 done
43
44 echo [STEP] Starting server node
45
46 start_tinc foo -n netname
47 wait_script foo subnet-up 2
48 echo foo-started >>"$OUT"
49
50 echo [STEP] Inviting client node
51
52 url=$(tinc foo -n netname2 invite bar)
53 file=$(basename "$(find "$DIR_FOO/invitations" -type f ! -name ed25519_key.priv)")
54
55 if is_windows; then
56   file=$(cygpath --unix -- "$file")
57 fi
58
59 wait_script foo invitation-created
60 echo bar-invited >>"$OUT"
61
62 echo [STEP] Joining client node
63
64 tinc bar -n netname3 join "$url"
65 wait_script foo invitation-accepted
66 echo bar-joined >>"$OUT"
67
68 echo [STEP] Starting client node
69
70 tinc bar <<EOF
71 set DeviceType dummy
72 set Port $port_bar
73 add Subnet 10.0.0.2
74 add Subnet fec0::/64#5
75 EOF
76
77 start_tinc bar
78 wait_script foo subnet-up 2
79 echo bar-started-1 >>"$OUT"
80
81 tinc foo debug 4
82 tinc bar stop
83 wait_script foo subnet-down 2
84 echo bar-stopped >>"$OUT"
85
86 tinc foo debug 5
87 start_tinc bar
88 wait_script foo subnet-up 2
89 echo bar-started-2 >>"$OUT"
90
91 echo [STEP] Stop server node
92
93 tinc foo stop
94 tinc bar stop
95 wait_script foo tinc-down
96
97 echo [STEP] Check if the script output is what is expected
98
99 cat >"$OUT.expected" <<EOF
100 tinc-up netname,foo,dummy,,,,,,,,,5
101 subnet-up netname,foo,dummy,,foo,,,10.0.0.1,,,,5
102 subnet-up netname,foo,dummy,,foo,,,fec0::/64,,,,5
103 foo-started
104 invitation-created netname2,foo,,,bar,,,,,$DIR_FOO/invitations/$file,$url,
105 bar-invited
106 invitation-accepted netname,foo,dummy,,bar,127.0.0.1,,,,,,5
107 bar-joined
108 host-up netname,foo,dummy,,bar,127.0.0.1,$port_bar,,,,,5
109 hosts/bar-up netname,foo,dummy,,bar,127.0.0.1,$port_bar,,,,,5
110 subnet-up netname,foo,dummy,,bar,127.0.0.1,$port_bar,10.0.0.2,,,,5
111 subnet-up netname,foo,dummy,,bar,127.0.0.1,$port_bar,fec0::/64,5,,,5
112 bar-started-1
113 host-down netname,foo,dummy,,bar,127.0.0.1,$port_bar,,,,,4
114 hosts/bar-down netname,foo,dummy,,bar,127.0.0.1,$port_bar,,,,,4
115 subnet-down netname,foo,dummy,,bar,127.0.0.1,$port_bar,10.0.0.2,,,,4
116 subnet-down netname,foo,dummy,,bar,127.0.0.1,$port_bar,fec0::/64,5,,,4
117 bar-stopped
118 host-up netname,foo,dummy,,bar,127.0.0.1,$port_bar,,,,,5
119 hosts/bar-up netname,foo,dummy,,bar,127.0.0.1,$port_bar,,,,,5
120 subnet-up netname,foo,dummy,,bar,127.0.0.1,$port_bar,10.0.0.2,,,,5
121 subnet-up netname,foo,dummy,,bar,127.0.0.1,$port_bar,fec0::/64,5,,,5
122 bar-started-2
123 host-down netname,foo,dummy,,bar,127.0.0.1,$port_bar,,,,,5
124 hosts/bar-down netname,foo,dummy,,bar,127.0.0.1,$port_bar,,,,,5
125 subnet-down netname,foo,dummy,,bar,127.0.0.1,$port_bar,10.0.0.2,,,,5
126 subnet-down netname,foo,dummy,,bar,127.0.0.1,$port_bar,fec0::/64,5,,,5
127 subnet-down netname,foo,dummy,,foo,,,10.0.0.1,,,,5
128 subnet-down netname,foo,dummy,,foo,,,fec0::/64,,,,5
129 tinc-down netname,foo,dummy,,,,,,,,,5
130 EOF
131
132 diff -w "$OUT" "$OUT.expected"