OSDN Git Service

Try to consistently print command name at the start of each test.
[android-x86/external-toybox.git] / tests / ifconfig.test
1 #!/bin/bash
2 # Copyright 2014 Cynthia Rempel <cynthia@rtems.org>
3 #
4 # Brief: Some cursery coverage tests of ifconfig...
5 # Note: requires permissions to run modprobe and all ifconfig options
6 # Commands used: grep, grep -i, ip link, ip tuntap, wc -l
7 #
8 # Possible improvements:
9 # 1. Verify the dummy interface actually has the modified characteristics
10 #    instead of relying on ifconfig output
11 # 2. Introduce more error cases, to verify ifconfig fails gracefully
12 # 3. Do more complex calls to ifconfig, while mixing the order of the
13 #    arguments
14 # 4. Cover more ifconfig options:
15 #    hw ether|infiniband ADDRESS - set LAN hardware address (AA:BB:CC...)
16 #    txqueuelen LEN - number of buffered packets before output blocks
17 #    Obsolete fields included for historical purposes:
18 #    irq|io_addr|mem_start ADDR - micromanage obsolete hardware
19 #    outfill|keepalive INTEGER - SLIP analog dialup line quality monitoring
20 #    metric INTEGER - added to Linux 0.9.10 with comment "never used", still true
21
22 [ -f testing.sh ] && . testing.sh
23
24 if [ "$(id -u)" -ne 0 ]
25 then
26   echo "$SHOWSKIP: ifconfig (not root)"
27   continue 2>/dev/null
28   exit
29 fi
30
31 #testing "name" "command" "result" "infile" "stdin"
32
33 # Add a dummy interface to test with
34 ifconfig dummy0 up
35
36 # Test Description: Disable the dummy0 interface
37 # Results Expected: After calling ifconfig, no lines with dummy0 are displayed
38 testing "ifconfig dummy0 down and if config /-only" \
39 "ifconfig dummy0 down && ifconfig dummy0 | grep dummy | wc -l" \
40 "0\n" "" ""
41
42 # Test Description: Enable the dummy0 interface
43 # Results Expected: After calling ifconfig, one line with dummy0 is displayed
44 testing "ifconfig dummy0 up" \
45 "ifconfig dummy0 up && ifconfig dummy0 | grep dummy | wc -l" \
46 "1\n" "" ""
47
48 # Test Description: Set the ip address of the dummy0 interface
49 # Results Expected: After calling ifconfig dummy0, one line displays the ip
50 #                   address selected
51 testing "ifconfig dummy0 10.240.240.240" \
52 "ifconfig dummy0 10.240.240.240 && ifconfig dummy0 | grep 10\.240\.240\.240 | wc -l" \
53 "1\n" "" ""
54
55 # Test Description: Change the netmask to the interface
56 # Results Expected: After calling ifconfig dummy0, one line displays the
57 #                   netmask selected
58 testing "ifconfig dummy0 netmask 255.255.240.0" \
59 "ifconfig dummy0 netmask 255.255.240.0 && ifconfig dummy0 | grep 255\.255\.240\.0 | wc -l" \
60 "1\n" "" ""
61
62 # Test Description: Change the broadcast address to the interface
63 # Results Expected: After calling ifconfig dummy0, one line displays the
64 #                   broadcast address selected
65 testing "ifconfig dummy0 broadcast 10.240.240.255" \
66 "ifconfig dummy0 broadcast 10.240.240.255 && ifconfig dummy0 | grep 10\.240\.240\.255 | wc -l" \
67 "1\n" "" ""
68
69 # Test Description: Revert to the default ip address
70 # Results Expected: After calling ifconfig dummy0, there are no lines
71 #                   displaying the ip address previously selected
72 testing "ifconfig dummy0 default" \
73 "ifconfig dummy0 default && ifconfig dummy0 | grep 10\.240\.240\.240 | wc -l" \
74 "0\n" "" ""
75
76 # Test Description: Change the Maximum transmission unit (MTU) of the interface
77 # Results Expected: After calling ifconfig dummy0, there is one line with the
78 #                   selected MTU
79 testing "ifconfig dummy0 mtu 1269" \
80 "ifconfig dummy0 mtu 1269 && ifconfig dummy0 | grep 1269 | wc -l" \
81 "1\n" "" ""
82
83 # Test Description: Verify ifconfig add fails with such a small mtu
84 # Results Expected: There is one line of error message containing
85 #                   "No buffer space available"
86 testing "ifconfig dummy0 add ::2 -- too small mtu" \
87 "ifconfig dummy0 add ::2 2>&1 | grep No\ buffer\ space\ available | wc -l" \
88 "1\n" "" ""
89
90 # Test Description: Change the Maximum transmission unit (MTU) of the interface
91 # Results Expected: After calling ifconfig dummy0, there is one line with the
92 #                   selected MTU
93 testing "ifconfig dummy0 mtu 2000" \
94 "ifconfig dummy0 mtu 2000 && ifconfig dummy0 | grep 2000 | wc -l" \
95 "1\n" "" ""
96
97 # Test Description: Verify ifconfig add succeeds with a larger mtu
98 # Results Expected: after calling ifconfig dummy0, there is one line with the
99 #                   selected ip address
100 testing "ifconfig dummy0 add ::2" \
101 "ifconfig dummy0 add ::2/126 && ifconfig dummy0 | grep \:\:2\/126 | wc -l" \
102 "1\n" "" ""
103
104 # Test Description: Verify ifconfig del removes the selected ip6 address
105 # Results Expected: after calling ifconfig dummy0, there are no lines with the
106 #                   selected ip address
107 testing "ifconfig dummy0 del ::2" \
108 "ifconfig dummy0 del ::2/126 && ifconfig dummy0 | grep \:\:2 | wc -l" \
109 "0\n" "" ""
110
111 # Test Description: Remove the noarp flag and bring the interface down in
112 #                   preparation for the next test
113 # Results Expected: After calling ifconfig dummy0, there are no lines with the
114 #                   NOARP flag
115 testing "ifconfig dummy0 arp down" \
116 "ifconfig dummy0 arp down && ifconfig dummy0 | grep -i NOARP | wc -l" \
117 "0\n" "" ""
118
119 # Test Description: Call the pointtopoint option with no argument
120 # Results Expected: After calling ifconfig dummy0, there is one line with the
121 #                   NOARP and UP flags
122 testing "ifconfig dummy0 pointtopoint" \
123 "ifconfig dummy0 pointtopoint && ifconfig dummy0 | grep -i NOARP | grep -i UP | wc -l" \
124 "1\n" "" ""
125
126 # Test Description: Test the pointtopoint option and set the ipaddress
127 # Results Expected: After calling ifconfig dummy0, there is one line with the
128 #                   word inet and the selected ip address
129 testing "ifconfig dummy0 pointtopoint 127.0.0.2" \
130 "ifconfig dummy0 pointtopoint 127.0.0.2 && ifconfig dummy0 | grep -i inet | grep -i 127\.0\.0\.2 | wc -l" \
131 "1\n" "" ""
132
133 ####### Flags you can set on an interface (or -remove by prefixing with -): ###############
134
135 # Test Description: Enable allmulti mode on the interface
136 # Results Expected: After calling ifconfig dummy0, there is one line with the
137 #                   allmulti flag
138 testing "ifconfig dummy0 allmulti" \
139 "ifconfig dummy0 allmulti && ifconfig dummy0 | grep -i allmulti | wc -l" "1\n" \
140 "" ""
141
142 # Test Description: Disable multicast mode the interface
143 # Results Expected: After calling ifconfig dummy0, there are no lines with the
144 #                   allmulti flag
145 testing "ifconfig dummy0 -allmulti" \
146 "ifconfig dummy0 -allmulti && ifconfig dummy0 | grep -i allmulti | wc -l" "0\n" \
147 "" ""
148
149 # Test Description: Disable NOARP mode on the interface
150 # Results Expected: After calling ifconfig dummy0, there are no lines with the
151 #                   NOARP flag
152 testing "ifconfig dummy0 arp" \
153 "ifconfig dummy0 arp && ifconfig dummy0 | grep -i NOARP | wc -l" "0\n" \
154 "" ""
155
156 # Test Description: Enable NOARP mode on the interface
157 # Results Expected: After calling ifconfig dummy0, there is one line with the
158 #                   NOARP flag
159 testing "ifconfig dummy0 -arp" \
160 "ifconfig dummy0 -arp && ifconfig dummy0 | grep -i NOARP | wc -l" "1\n" \
161 "" ""
162
163 # Test Description: Enable multicast mode on the interface
164 # Results Expected: After calling ifconfig dummy0, there is one line with the
165 #                   multicast flag
166 testing "ifconfig dummy0 multicast" \
167 "ifconfig dummy0 multicast && ifconfig dummy0 | grep -i multicast | wc -l" \
168 "1\n" "" ""
169
170 # Test Description: Disable multicast mode the interface
171 # Results Expected: After calling ifconfig dummy0, there are no lines with the
172 #                   multicast flag
173 testing "ifconfig dummy0 -multicast" \
174 "ifconfig dummy0 -multicast && ifconfig dummy0 | grep -i multicast | wc -l" \
175 "0\n" "" ""
176
177 # Test Description: Enable promiscuous mode the interface
178 # Results Expected: After calling ifconfig dummy0, there is one line with the
179 #                   promisc flag
180 testing "ifconfig dummy0 promisc" \
181 "ifconfig dummy0 promisc && ifconfig dummy0 | grep -i promisc | wc -l" "1\n" \
182 "" ""
183
184 # Disable promiscuous mode the interface
185 # Results Expected: After calling ifconfig dummy0, there are no lines with the
186 #                   promisc flag
187 testing "ifconfig dummy0 -promisc" \
188 "ifconfig dummy0 -promisc && ifconfig dummy0 | grep -i promisc | wc -l" "0\n" \
189 "" ""
190
191 # Disable the dummy interface
192 ifconfig dummy0 down