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>