1 AT_BANNER([ovs-vsctl unit tests -- real bridges])
3 dnl RUN_OVS_VSCTL(COMMAND, ...)
5 dnl Executes each ovs-vsctl COMMAND on a file named "conf" in the
6 dnl current directory. Creates "conf" if it does not already exist.
7 m4_define([RUN_OVS_VSCTL],
9 m4_foreach([command], [$@], [ovs-vsctl --no-reload --config=conf command
12 dnl CHECK_BRIDGES(BRIDGE, ...)
14 dnl Verifies that "ovs-vsctl list-br" prints the specified list of bridges,
15 dnl which must be in alphabetical order.
16 m4_define([CHECK_BRIDGES],
18 [RUN_OVS_VSCTL([list-br])],
20 [m4_foreach([port], [$@], [port
22 m4_foreach([port], [$@], [AT_CHECK([RUN_OVS_VSCTL([br-exists port])])])
23 AT_CHECK([RUN_OVS_VSCTL([br-exists nonexistent])], [2])])
25 dnl CHECK_PORTS(BRIDGE, PORT[, PORT...])
27 dnl Verifies that "ovs-vsctl list-ports BRIDGE" prints the specified
28 dnl list of ports, which must be in alphabetical order. Also checks
29 dnl that "ovs-vsctl port-to-br" reports that each port is
31 m4_define([CHECK_PORTS],
33 [RUN_OVS_VSCTL([list-ports $1])],
35 [m4_foreach([port], m4_cdr($@), [port
37 AT_CHECK([RUN_OVS_VSCTL([port-to-br $1])], [1], [], [ovs-vsctl: no port named $1
41 [AT_CHECK([RUN_OVS_VSCTL([[port-to-br] port])], [0], [$1
44 dnl CHECK_IFACES(BRIDGE, IFACE[, IFACE...])
46 dnl Verifies that "ovs-vsctl list-ifaces BRIDGE" prints the specified
47 dnl list of ifaces, which must be in alphabetical order. Also checks
48 dnl that "ovs-vsctl iface-to-br" reports that each interface is
50 m4_define([CHECK_IFACES],
52 [RUN_OVS_VSCTL([list-ifaces $1])],
54 [m4_foreach([iface], m4_cdr($@), [iface
56 AT_CHECK([RUN_OVS_VSCTL([iface-to-br $1])], [1], [], [ovs-vsctl: no interface named $1
60 [AT_CHECK([RUN_OVS_VSCTL([[iface-to-br] iface])], [0], [$1
64 AT_KEYWORDS([ovs-vsctl])
65 AT_CHECK([RUN_OVS_VSCTL([add-br a])])
66 AT_CHECK([cat conf], [0], [dnl
74 AT_SETUP([add-br a, add-br b])
75 AT_KEYWORDS([ovs-vsctl])
76 AT_CHECK([RUN_OVS_VSCTL([add-br a], [add-br b])])
77 AT_CHECK([cat conf], [0], [dnl
81 CHECK_BRIDGES([a], [b])
88 AT_SETUP([add-br a, add-br b, del-br a])
89 AT_KEYWORDS([ovs-vsctl])
90 AT_CHECK([RUN_OVS_VSCTL([add-br a], [add-br b], [del-br a])])
91 AT_CHECK([cat conf], [0], [dnl
99 AT_SETUP([add-br a b, add-port a a1, add-port b b1, del-br a])
100 AT_KEYWORDS([ovs-vsctl])
101 AT_CHECK([RUN_OVS_VSCTL(
107 AT_CHECK([cat conf], [0],
112 CHECK_PORTS([b], [b1])
113 CHECK_IFACES([b], [b1])
116 AT_SETUP([add-br a, add-bond a bond0 a1 a2 a3])
117 AT_KEYWORDS([ovs-vsctl])
118 AT_CHECK([RUN_OVS_VSCTL(
120 [add-bond a bond0 a1 a2 a3])])
121 AT_CHECK([cat conf], [0], [dnl
122 bonding.bond0.slave=a1
123 bonding.bond0.slave=a2
124 bonding.bond0.slave=a3
129 CHECK_PORTS([a], [bond0])
130 CHECK_IFACES([a], [a1], [a2], [a3])
133 AT_SETUP([add-br a b, add-port a a1, add-port b b1, del-port a a1])
134 AT_KEYWORDS([ovs-vsctl])
135 AT_CHECK([RUN_OVS_VSCTL(
141 AT_CHECK([cat conf], [0], [dnl
146 CHECK_BRIDGES([a], [b])
149 CHECK_PORTS([b], [b1])
150 CHECK_IFACES([b], [b1])
153 AT_SETUP([add-br a, add-bond a bond0 a1 a2 a3, del-port a bond0])
154 AT_KEYWORDS([ovs-vsctl])
155 AT_CHECK([RUN_OVS_VSCTL(
157 [add-bond a bond0 a1 a2 a3],
158 [del-port a bond0])])
159 AT_CHECK([cat conf], [0], [dnl
166 AT_BANNER([ovs-vsctl unit tests -- fake bridges])
168 m4_define([SIMPLE_FAKE_CONF], [dnl
169 bridge.xenbr0.port=eth0
170 bridge.xenbr0.port=eth0.9
171 bridge.xenbr0.port=xapi1
172 bridge.xenbr0.port=xenbr0
173 iface.xapi1.fake-bridge=true
174 iface.xapi1.internal=true
179 AT_SETUP([simple fake bridge])
180 AT_KEYWORDS([ovs-vsctl fake-bridge])
181 AT_CHECK([RUN_OVS_VSCTL(
183 [add-port xenbr0 eth0],
184 [add-br xapi1 xenbr0 9],
185 [add-port xapi1 eth0.9])])
186 AT_CHECK([cat conf], [0], [SIMPLE_FAKE_CONF])
187 CHECK_BRIDGES([xenbr0], [xapi1])
188 CHECK_PORTS([xenbr0], [eth0])
189 CHECK_IFACES([xenbr0], [eth0])
190 CHECK_PORTS([xapi1], [eth0.9])
191 CHECK_IFACES([xapi1], [eth0.9])
194 AT_SETUP([simple fake bridge + del-br fake bridge])
195 AT_KEYWORDS([ovs-vsctl fake-bridge])
196 AT_DATA([conf], [SIMPLE_FAKE_CONF])
197 AT_CHECK([RUN_OVS_VSCTL([del-br xapi1])])
198 AT_CHECK([cat conf], [0], [dnl
199 bridge.xenbr0.port=eth0
200 bridge.xenbr0.port=xenbr0
202 CHECK_BRIDGES([xenbr0])
203 CHECK_PORTS([xenbr0], [eth0])
204 CHECK_IFACES([xenbr0], [eth0])
207 AT_SETUP([simple fake bridge + del-br real bridge])
208 AT_KEYWORDS([ovs-vsctl fake-bridge])
209 AT_DATA([conf], [SIMPLE_FAKE_CONF])
210 AT_CHECK([RUN_OVS_VSCTL([del-br xenbr0])])
211 AT_CHECK([cat conf], [0], [])
215 m4_define([BOND_FAKE_CONF], [dnl
216 bonding.bond0.slave=eth0
217 bonding.bond0.slave=eth1
218 bridge.xapi1.port=bond0
219 bridge.xapi1.port=bond0.11
220 bridge.xapi1.port=xapi1
221 bridge.xapi1.port=xapi2
222 iface.xapi2.fake-bridge=true
223 iface.xapi2.internal=true
228 AT_SETUP([fake bridge on bond])
229 AT_KEYWORDS([ovs-vsctl fake-bridge])
230 AT_CHECK([RUN_OVS_VSCTL(
232 [add-bond xapi1 bond0 eth0 eth1],
233 [add-br xapi2 xapi1 11],
234 [add-port xapi2 bond0.11])])
235 AT_CHECK([cat conf], [0], [BOND_FAKE_CONF])
236 CHECK_BRIDGES([xapi1], [xapi2])
237 CHECK_PORTS([xapi1], [bond0])
238 CHECK_IFACES([xapi1], [eth0], [eth1])
239 CHECK_PORTS([xapi2], [bond0.11])
240 CHECK_IFACES([xapi2], [bond0.11])
243 AT_SETUP([fake bridge on bond + del-br fake bridge])
244 AT_KEYWORDS([ovs-vsctl fake-bridge])
245 AT_DATA([conf], [BOND_FAKE_CONF])
246 AT_CHECK([RUN_OVS_VSCTL([del-br xapi2])])
247 CHECK_BRIDGES([xapi1])
248 CHECK_PORTS([xapi1], [bond0])
249 CHECK_IFACES([xapi1], [eth0], [eth1])
252 AT_SETUP([fake bridge on bond + del-br real bridge])
253 AT_KEYWORDS([ovs-vsctl fake-bridge])
254 AT_DATA([conf], [BOND_FAKE_CONF])
255 AT_CHECK([RUN_OVS_VSCTL([del-br xapi1])])