Annotation of embedaddon/arping/extra/testing.exp, revision 1.1.1.1
1.1 misho 1: #!/usr/bin/expect -f
2: #
3: # Usage: testing.exp <path to arping> <ifname> <ip address> <mac address>
4: #
5: # Test all cases against a "normal" machine:
6: # * Responds to ARP
7: # * Responds to ping
8: # * Doesn't respond to broadcast pings.
9: #
10: # Abnormal machines, to be tested elsewhere:
11: # * Proxy ARP
12: # * Respond to broadcast pings
13: # * Lost packets
14: # * Duplicated replies
15: #
16: # Tested here:
17: # * -a
18: # * -c
19: # * -D
20: # * -e
21: # * -h
22: # * -q (soon)
23: # * -r
24: # * -R
25: # * -s (soon)
26: # * -S (soon)
27: # * -t
28: # * -T
29: # * -u (soon)
30: # * -v (soon)
31: # * -w (soon)
32: # * -W (soon)
33: #
34: # Not tested here:
35: # * -0
36: # * -A (forced on with mac ping)
37: # * -b
38: # * -B
39: # * -d
40: # * -p
41: # * -P
42: # * -U
43: # * Mac ping without -T.
44: #
45: set bin [lindex $argv 0]
46: set ifname [lindex $argv 1]
47: set ip [lindex $argv 2]
48: set mac [lindex $argv 3]
49: set bad_ip "1.2.4.3"
50: set bad_mac "00:11:22:33:44:55"
51:
52: # Check if "stty -oxtabs" is a thing.
53: # It is on OpenBSD, but not Linux.
54: spawn tty
55: expect eof
56: spawn "stty" "-oxtabs"
57: catch wait result
58: if {[lindex $result 3] == 0} {
59: set stty_init "-oxtabs"
60: }
61:
62: send_user -- "--------------- No options ------------------\n"
63: spawn $bin
64: expect -re "ARPing 2\.\d+, by Thomas Habets <thomas@habets.se>\r
65: usage: arping \\\[ -0aAbdDeFpqrRuUv \\\] \\\[ -w <us> \\\] \\\[ -S <host/ip> \\\]\r
66: \\\[ -T <host/ip \\\] \\\[ -s <MAC> \\\] \\\[ -t <MAC> \\\] \\\[ -c <count> \\\]\r
67: \\\[ -i <interface> \\\] <host/ip/MAC | -B>\r
68: For complete usage info, use --help or check the manpage.\r
69: "
70: expect eof
71:
72: send_user -- "--------------- -h ------------------\n"
73: spawn $bin -h
74: expect -re "ARPing 2\.\d+, by Thomas Habets <thomas@habets.se>\r
75: usage: arping \\\[ -0aAbdDeFpqrRuUv \\\] \\\[ -w <us> \\\] \\\[ -S <host/ip> \\\]\r
76: \\\[ -T <host/ip \\\] \\\[ -s <MAC> \\\] \\\[ -t <MAC> \\\] \\\[ -c <count> \\\]\r
77: \\\[ -i <interface> \\\] <host/ip/MAC | -B>\r
78: For complete usage info, use --help or check the manpage.\r
79: "
80: expect eof
81:
82: send_user -- "--------------- --help ------------------\n"
83: spawn $bin --help
84: expect -re "ARPing 2\.\d+, by Thomas Habets <thomas@habets.se>\r
85: usage: arping \\\[ -0aAbdDeFpqrRuUv \\\] \\\[ -w <us> \\\] \\\[ -S <host/ip> \\\]\r
86: \\\[ -T <host/ip \\\] \\\[ -s <MAC> \\\] \\\[ -t <MAC> \\\] \\\[ -c <count> \\\]\r
87: \\\[ -i <interface> \\\] <host/ip/MAC | -B>\r
88: \r
89: "
90: expect "Report bugs to: thomas@habets.se\r
91: Arping home page: <http://www.habets.pp.se/synscan/>\r
92: Development repo: http://github.com/ThomasHabets/arping\r
93: "
94: expect eof
95:
96: send_user -- "--------------- Bad interface ------------------\n"
97: spawn $bin -i uhtaonuhoes $ip
98: expect -re "arping: libnet_init.*\r"
99: expect "\r" {
100: # Make sure double-endline is stripped.
101: exit 1
102: }
103:
104: send_user -- "--------------- Ping IP Simple ------------------\n"
105: spawn $bin -c 1 $ip
106: expect -re "ARPING $ip\r
107: \(42|60\) bytes from $mac \\($ip\\): index=0 time=(.*)sec\r
108: \r
109: --- $ip statistics ---\r
110: 1 packets transmitted, 1 packets received, 0% unanswered \\(0 extra\\)\r
111: rtt min/avg/max/std-dev = \[0-9.\]+/\[0-9.\]+/\[0-9.\]+/0.000 ms\r
112: "
113: expect eof
114:
115: send_user -- "--------------- Ping IP Raw (-r) ------------------\n"
116: spawn $bin -c 2 -r $ip
117: expect -re "$mac\r
118: $mac\r
119: "
120: expect eof
121:
122: send_user -- "--------------- Ping IP Raw audio (-r -a) ------------------\n"
123: spawn $bin -c 2 -r -a $ip
124: expect -re "\a$mac\r
125: \a$mac\r
126: "
127: expect eof
128:
129: send_user -- "--------------- Ping IP Raw audio bad dest (-r -e) ------------------\n"
130: spawn $bin -c 2 -r -i "$ifname" -e $bad_ip
131: expect -re "\a\a"
132: expect eof
133:
134: send_user -- "--------------- Ping IP reverse raw (-R) ------------------\n"
135: spawn $bin -c 2 -R $ip
136: expect -re "$ip\r
137: $ip\r
138: "
139: expect eof
140:
141: send_user -- "--------------- Ping IP double raw (-R) ------------------\n"
142: spawn $bin -c 2 -R -r $ip
143: expect -re "$mac $ip\r
144: $mac $ip\r
145: "
146: expect eof
147:
148: send_user -- "--------------- Ping IP max 2 (-C) ------------------\n"
149: spawn $bin -C 2 -c 10 $ip
150: expect -re "ARPING $ip\r
151: \(42|60\) bytes from $mac \\($ip\\): index=0 time=(.*)sec\r
152: \(42|60\) bytes from $mac \\($ip\\): index=1 time=(.*)sec\r
153: \r
154: --- $ip statistics ---\r
155: 2 packets transmitted, 2 packets received, 0% unanswered \\(0 extra\\)\r
156: rtt min/avg/max/std-dev = \[0-9.\]+/\[0-9.\]+/\[0-9.\]+/\[0-9.\]+ ms\r
157: "
158: expect eof
159:
160: send_user -- "--------------- Ping IP x 3 (-c) ------------------\n"
161: spawn $bin -c 3 $ip
162: expect -re "ARPING $ip\r
163: \(42|60\) bytes from $mac \\($ip\\): index=0 time=\[0-9.\]+ \[mu\]?sec\r
164: \(42|60\) bytes from $mac \\($ip\\): index=1 time=\[0-9.\]+ \[mu\]?sec\r
165: \(42|60\) bytes from $mac \\($ip\\): index=2 time=\[0-9.\]+ \[mu\]?sec\r
166: \r
167: --- $ip statistics ---\r
168: 3 packets transmitted, 3 packets received, 0% unanswered \\(0 extra\\)\r
169: rtt min/avg/max/std-dev = \[0-9.\]+/\[0-9.\]+/\[0-9.\]+/\[0-9.\]+ ms\r
170: "
171: expect eof
172:
173: send_user -- "--------------- Ping IP x 3 with audio (-a) ------------------\n"
174: spawn $bin -c 3 -a $ip
175: expect -re "ARPING $ip\r
176: \a\(42|60\) bytes from $mac \\($ip\\): index=0 time=\[0-9.\]+ \[mu\]?sec\r
177: \a\(42|60\) bytes from $mac \\($ip\\): index=1 time=\[0-9.\]+ \[mu\]?sec\r
178: \a\(42|60\) bytes from $mac \\($ip\\): index=2 time=\[0-9.\]+ \[mu\]?sec\r
179: \r
180: --- $ip statistics ---\r
181: 3 packets transmitted, 3 packets received, 0% unanswered \\(0 extra\\)\r
182: rtt min/avg/max/std-dev = \[0-9.\]+/\[0-9.\]+/\[0-9.\]+/\[0-9.\]+ ms\r
183: "
184: expect eof
185:
186: send_user -- "--------- Ping IP x 2 with inverted audio (-e) ------------\n"
187: spawn $bin -c 2 -e $ip
188: expect -re "ARPING $ip\r
189: \(42|60\) bytes from $mac \\($ip\\): index=0 time=\[0-9.\]+ \[mu\]?sec\r
190: \(42|60\) bytes from $mac \\($ip\\): index=1 time=\[0-9.\]+ \[mu\]?sec\r
191: \r
192: --- $ip statistics ---\r
193: 2 packets transmitted, 2 packets received, 0% unanswered \\(0 extra\\)\r
194: rtt min/avg/max/std-dev = \[0-9.\]+/\[0-9.\]+/\[0-9.\]+/\[0-9.\]+ ms\r
195: "
196: expect eof
197:
198: send_user -- "--------- Ping IP x 2 with inverted audio, bad IP (-e) ------------\n"
199: spawn $bin -c 2 -i "$ifname" -e "$bad_ip"
200: expect -re "ARPING $bad_ip\r
201: \aTimeout\r
202: \aTimeout\r
203: \r
204: --- $bad_ip statistics ---\r
205: 2 packets transmitted, 0 packets received, 100% unanswered \\(0 extra\\)\r
206: \r
207: "
208: expect eof
209:
210: send_user -- "--------- Ping IP x 2 with inverted audio (-e -D) ------------\n"
211: spawn $bin -c 2 -e -D $ip
212: expect "!!\t 0% packet loss (0 extra)\r\n"
213: expect eof
214:
215: send_user -- "--------- Ping IP x 2 with inverted audio, bad IP (-e -D) ------------\n"
216: spawn $bin -c 2 -e -i $ifname -D "$bad_ip"
217: expect "\a.\a.\t100% packet loss (0 extra)\r\n"
218: expect eof
219:
220: send_user -- "--------------- Ping IP cisco style (-D) ------------------\n"
221: spawn $bin -c 3 -D $ip
222: expect "!!!\t 0% packet loss (0 extra)\r\n"
223: expect eof
224:
225: send_user -- "--------------- Ping IP cisco style with audio (-D -a) -----------\n"
226: spawn $bin -c 3 -D -a $ip
227: expect "\a!\a!\a!\t 0% packet loss (0 extra)\r\n"
228: expect eof
229:
230: send_user -- "--------------- Ping IP Targeted (-t) ------------------\n"
231: spawn $bin -c 1 -t $mac $ip
232: expect -re "ARPING $ip\r
233: \(42|60\) bytes from $mac \\($ip\\): index=0 time=(.*)sec\r
234: \r
235: --- $ip statistics ---\r
236: 1 packets transmitted, 1 packets received, 0% unanswered \\(0 extra\\)\r
237: rtt min/avg/max/std-dev = \[0-9.\]+/\[0-9.\]+/\[0-9.\]+/0.000 ms\r
238: "
239: expect eof
240:
241: send_user -- "--------------- Ping IP Mistargeted (-t) ------------------\n"
242: spawn $bin -c 1 -t $bad_mac $ip
243: expect "ARPING $ip\r
244: Timeout\r
245: \r
246: --- $ip statistics ---\r
247: 1 packets transmitted, 0 packets received, 100% unanswered \\(0 extra\\)\r
248: "
249: expect eof
250:
251: send_user -- "--------------- Ping MAC with IP destination ------------------\n"
252: spawn $bin -A -c 1 -T $ip $mac
253: expect -re "ARPING $mac\r
254: \(42|60\) bytes from $ip \\($mac\\): icmp_seq=0 time=(.*)sec\r
255: \r
256: --- $mac statistics ---\r
257: 1 packets transmitted, 1 packets received, 0% unanswered \\(0 extra\\)\r
258: rtt min/avg/max/std-dev = \[0-9.\]+/\[0-9.\]+/\[0-9.\]+/0.000 ms\r
259: "
260: expect eof
261:
262: send_user -- "--------------- Ping MAC Raw (-r) ------------------\n"
263: spawn $bin -c 2 -r -T $ip $mac
264: expect -re "$ip\r
265: $ip\r
266: "
267: expect eof
268:
269: send_user -- "--------------- Ping MAC Raw audio (-r -a) ------------------\n"
270: spawn $bin -c 2 -a -r -T $ip $mac
271: expect -re "\a$ip\r
272: \a$ip\r
273: "
274: expect eof
275:
276: send_user -- "--------------- Ping MAC Raw audio bad dest (-r -e) ------------------\n"
277: spawn $bin -c 2 -r -e -T $ip $bad_mac
278: expect -re "\a\a"
279: expect eof
280:
281: send_user -- "--------------- Ping MAC reverse raw (-R) ------------------\n"
282: spawn $bin -c 2 -R -T $ip $mac
283: expect -re "$mac\r
284: $mac\r
285: "
286: expect eof
287:
288: send_user -- "--------------- Ping MAC double raw (-a -R) ------------------\n"
289: spawn $bin -c 2 -R -r -T $ip $mac
290: expect -re "$mac $ip\r
291: $mac $ip\r
292: "
293: expect eof
294:
295:
296: send_user -- "--------------- Ping MAC max 2 (-C) ------------------\n"
297: spawn $bin -A -C 2 -c 10 -T $ip $mac
298: expect -re "ARPING $mac\r
299: \(42|60\) bytes from $ip \\($mac\\): icmp_seq=0 time=(.*)sec\r
300: \(42|60\) bytes from $ip \\($mac\\): icmp_seq=1 time=(.*)sec\r
301: \r
302: --- $mac statistics ---\r
303: 2 packets transmitted, 2 packets received, 0% unanswered \\(0 extra\\)\r
304: rtt min/avg/max/std-dev = \[0-9.\]+/\[0-9.\]+/\[0-9.\]+/\[0-9.\]+ ms\r
305: "
306: expect eof
307:
308: send_user -- "--------------- Ping MAC cisco style (-D) ------------------\n"
309: spawn $bin -A -c 3 -D -T $ip $mac
310: expect "!!!\t 0% packet loss (0 extra)\r\n"
311: expect eof
312:
313: send_user -- "--------------- Ping MAC cisco style with audio (-D -a) -----------\n"
314: spawn $bin -A -c 3 -D -a -T $ip $mac
315: expect "\a!\a!\a!\t 0% packet loss (0 extra)\r\n"
316: expect eof
317:
318: send_user -- "--------- Ping MAC x 2 with inverted audio (-e) ------------\n"
319: spawn $bin -c 2 -T $ip "$mac"
320: expect -re "ARPING $mac\r
321: \(42|60\) bytes from $ip \\($mac\\): icmp_seq=0 time=(.*)sec\r
322: \(42|60\) bytes from $ip \\($mac\\): icmp_seq=1 time=(.*)sec\r
323: \r
324: --- $mac statistics ---\r
325: 2 packets transmitted, 2 packets received, 0% unanswered \\(0 extra\\)\r
326: rtt min/avg/max/std-dev = \[0-9.\]+/\[0-9.\]+/\[0-9.\]+/\[0-9.\]+ ms\r
327: "
328: expect eof
329:
330: send_user -- "--------- Ping MAC x 2 with inverted audio, bad dest (-e) ------------\n"
331: spawn $bin -e -c 2 -T $ip "$bad_mac"
332: expect -re "ARPING $bad_mac\r
333: \aTimeout\r
334: \aTimeout\r
335: \r
336: --- $bad_mac statistics ---\r
337: 2 packets transmitted, 0 packets received, 100% unanswered \\(0 extra\\)\r
338: \r
339: "
340: expect eof
341:
342: send_user -- "--------- Ping MAC x 2 with inverted audio (-e -D) ------------\n"
343: spawn $bin -A -e -c 2 -D -T $ip $mac
344: expect "!!\t 0% packet loss (0 extra)\r\n"
345: expect eof
346:
347: send_user -- "--------- Ping MAC x 2 with inverted audio, bad dest (-e -D) ------------\n"
348: spawn $bin -A -c 2 -e -i $ifname -D -T $ip $bad_mac
349: expect "\a.\a.\t100% packet loss (0 extra)\r\n"
350: expect eof
351:
352: send_user -- "---------------------------------------------------------\n"
353: send_user -- "All tests passed\n"
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>