]>
Commit | Line | Data |
---|---|---|
c75d1511 BP |
1 | dnl OVS_VSCTL_SETUP |
2 | dnl | |
3 | dnl Creates an empty database in the current directory and then starts | |
4 | dnl an ovsdb-server on it for ovs-vsctl to connect to. | |
5 | m4_define([OVS_VSCTL_SETUP], | |
24c8ae53 | 6 | [OVSDB_INIT([db]) |
0b1fae1b | 7 | AT_CHECK([ovsdb-server --detach --pidfile=$PWD/pid --remote=punix:socket --unixctl=$PWD/unixctl db >/dev/null 2>&1], [0], [ignore], [ignore])]) |
c75d1511 BP |
8 | |
9 | dnl OVS_VSCTL_CLEANUP | |
10 | dnl | |
11 | dnl Kills off the database server. | |
028cbd99 | 12 | m4_define([OVS_VSCTL_CLEANUP], [OVSDB_SERVER_SHUTDOWN]) |
c75d1511 | 13 | |
3b135da3 BP |
14 | dnl RUN_OVS_VSCTL(COMMAND, ...) |
15 | dnl | |
c75d1511 | 16 | dnl Executes each ovs-vsctl COMMAND. |
3b135da3 | 17 | m4_define([RUN_OVS_VSCTL], |
b524945e | 18 | [m4_foreach([command], [$@], [ovs-vsctl --timeout=5 --no-wait -vreconnect:ANY:emer --db=unix:socket -- command |
460aad80 BP |
19 | ])]) |
20 | m4_define([RUN_OVS_VSCTL_ONELINE], | |
b524945e | 21 | [m4_foreach([command], [$@], [ovs-vsctl --timeout=5 --no-wait -vreconnect:ANY:emer --db=unix:socket --oneline -- command |
3b135da3 BP |
22 | ])]) |
23 | ||
4d14e30f BP |
24 | dnl RUN_OVS_VSCTL_TOGETHER(COMMAND, ...) |
25 | dnl | |
c75d1511 | 26 | dnl Executes each ovs-vsctl COMMAND in a single run of ovs-vsctl. |
4d14e30f | 27 | m4_define([RUN_OVS_VSCTL_TOGETHER], |
b524945e | 28 | [ovs-vsctl --timeout=5 --no-wait -vreconnect:ANY:emer --db=unix:socket --oneline dnl |
460aad80 | 29 | m4_foreach([command], [$@], [ -- command])]) |
4d14e30f | 30 | |
8e58fa9a | 31 | dnl CHECK_BRIDGES([BRIDGE, PARENT, VLAN], ...) |
3b135da3 BP |
32 | dnl |
33 | dnl Verifies that "ovs-vsctl list-br" prints the specified list of bridges, | |
8e58fa9a BP |
34 | dnl which must be in alphabetical order. Also checks that each BRIDGE has the |
35 | dnl specified PARENT and is on the given VLAN. | |
36 | m4_define([_CHECK_BRIDGE], | |
37 | [AT_CHECK([RUN_OVS_VSCTL([br-to-parent $1])], [0], [$2 | |
c75d1511 | 38 | ], [], [OVS_VSCTL_CLEANUP]) |
2792c2ad BP |
39 | |
40 | # Check br-to-vlan, without --oneline. | |
8e58fa9a | 41 | AT_CHECK([RUN_OVS_VSCTL([br-to-vlan $1])], [0], [$3 |
c75d1511 | 42 | ], [], [OVS_VSCTL_CLEANUP]) |
2792c2ad BP |
43 | # Check br-to-vlan, with --oneline. |
44 | # (This particular test is interesting with --oneline because it returns | |
45 | # an integer instead of a string and that can cause type mismatches inside | |
46 | # python if not done carefully.) | |
460aad80 | 47 | AT_CHECK([RUN_OVS_VSCTL_ONELINE([br-to-vlan $1])], [0], [$3 |
c75d1511 | 48 | ], [], [OVS_VSCTL_CLEANUP]) |
4d14e30f BP |
49 | |
50 | # Check multiple queries in a single run. | |
51 | AT_CHECK([RUN_OVS_VSCTL_TOGETHER([br-to-parent $1], [br-to-vlan $1])], [0], | |
52 | [$2 | |
53 | $3 | |
c75d1511 | 54 | ], [], [OVS_VSCTL_CLEANUP])]) |
3b135da3 | 55 | m4_define([CHECK_BRIDGES], |
2792c2ad | 56 | [dnl Check that the bridges appear on list-br, without --oneline. |
8e58fa9a | 57 | AT_CHECK( |
3b135da3 BP |
58 | [RUN_OVS_VSCTL([list-br])], |
59 | [0], | |
8e58fa9a | 60 | [m4_foreach([brinfo], [$@], [m4_car(brinfo) |
c75d1511 BP |
61 | ])], |
62 | [], | |
63 | [OVS_VSCTL_CLEANUP]) | |
8e58fa9a | 64 | |
2792c2ad BP |
65 | dnl Check that the bridges appear on list-br, with --oneline. |
66 | AT_CHECK( | |
460aad80 | 67 | [RUN_OVS_VSCTL_ONELINE([list-br])], |
2792c2ad BP |
68 | [0], |
69 | [m4_join([\n], m4_foreach([brinfo], [$@], [m4_car(brinfo),])) | |
c75d1511 BP |
70 | ], |
71 | [], | |
72 | [OVS_VSCTL_CLEANUP]) | |
2792c2ad | 73 | |
8e58fa9a BP |
74 | dnl Check that each bridge exists according to br-exists and that |
75 | dnl a bridge that should not exist does not. | |
76 | m4_foreach([brinfo], [$@], | |
c75d1511 BP |
77 | [AT_CHECK([RUN_OVS_VSCTL([br-exists m4_car(brinfo)])], [0], [], |
78 | [], [OVS_VSCTL_CLEANUP])]) | |
79 | AT_CHECK([RUN_OVS_VSCTL([br-exists nonexistent])], [2], [], [], | |
80 | [OVS_VSCTL_CLEANUP]) | |
8e58fa9a BP |
81 | |
82 | dnl Check that each bridge has the expected parent and VLAN. | |
83 | m4_map([_CHECK_BRIDGE], [$@])]) | |
3b135da3 BP |
84 | |
85 | dnl CHECK_PORTS(BRIDGE, PORT[, PORT...]) | |
86 | dnl | |
87 | dnl Verifies that "ovs-vsctl list-ports BRIDGE" prints the specified | |
88 | dnl list of ports, which must be in alphabetical order. Also checks | |
89 | dnl that "ovs-vsctl port-to-br" reports that each port is | |
90 | dnl in BRIDGE. | |
91 | m4_define([CHECK_PORTS], | |
2792c2ad BP |
92 | [dnl Check ports without --oneline. |
93 | AT_CHECK( | |
3b135da3 BP |
94 | [RUN_OVS_VSCTL([list-ports $1])], |
95 | [0], | |
96 | [m4_foreach([port], m4_cdr($@), [port | |
c75d1511 BP |
97 | ])], |
98 | [], | |
99 | [OVS_VSCTL_CLEANUP]) | |
2792c2ad BP |
100 | |
101 | dnl Check ports with --oneline. | |
102 | AT_CHECK( | |
460aad80 | 103 | [RUN_OVS_VSCTL_ONELINE([list-ports $1])], |
2792c2ad BP |
104 | [0], |
105 | [m4_join([\n], m4_shift($@)) | |
c75d1511 BP |
106 | ], |
107 | [], | |
108 | [OVS_VSCTL_CLEANUP]) | |
109 | AT_CHECK([RUN_OVS_VSCTL([port-to-br $1])], [1], [], | |
110 | [ovs-vsctl: no port named $1 | |
111 | ], | |
112 | [OVS_VSCTL_CLEANUP]) | |
3b135da3 BP |
113 | m4_foreach( |
114 | [port], m4_cdr($@), | |
115 | [AT_CHECK([RUN_OVS_VSCTL([[port-to-br] port])], [0], [$1 | |
c75d1511 | 116 | ], [], [OVS_VSCTL_CLEANUP])])]) |
3b135da3 BP |
117 | |
118 | dnl CHECK_IFACES(BRIDGE, IFACE[, IFACE...]) | |
119 | dnl | |
120 | dnl Verifies that "ovs-vsctl list-ifaces BRIDGE" prints the specified | |
121 | dnl list of ifaces, which must be in alphabetical order. Also checks | |
122 | dnl that "ovs-vsctl iface-to-br" reports that each interface is | |
123 | dnl in BRIDGE. | |
124 | m4_define([CHECK_IFACES], | |
125 | [AT_CHECK( | |
126 | [RUN_OVS_VSCTL([list-ifaces $1])], | |
127 | [0], | |
128 | [m4_foreach([iface], m4_cdr($@), [iface | |
dfbe07ba BP |
129 | ])], |
130 | [], | |
131 | [OVS_VSCTL_CLEANUP]) | |
c75d1511 BP |
132 | AT_CHECK([RUN_OVS_VSCTL([iface-to-br $1])], [1], [], |
133 | [ovs-vsctl: no interface named $1 | |
134 | ], | |
135 | [OVS_VSCTL_CLEANUP]) | |
3b135da3 BP |
136 | m4_foreach( |
137 | [iface], m4_cdr($@), | |
138 | [AT_CHECK([RUN_OVS_VSCTL([[iface-to-br] iface])], [0], [$1 | |
c75d1511 BP |
139 | ], |
140 | [], [OVS_VSCTL_CLEANUP])])]) | |
3b135da3 | 141 | |
8e58fa9a BP |
142 | dnl ---------------------------------------------------------------------- |
143 | AT_BANNER([ovs-vsctl unit tests -- real bridges]) | |
144 | ||
3b135da3 BP |
145 | AT_SETUP([add-br a]) |
146 | AT_KEYWORDS([ovs-vsctl]) | |
c75d1511 BP |
147 | OVS_VSCTL_SETUP |
148 | AT_CHECK([RUN_OVS_VSCTL([add-br a])], [0], [], [], [OVS_VSCTL_CLEANUP]) | |
8e58fa9a | 149 | CHECK_BRIDGES([a, a, 0]) |
3b135da3 BP |
150 | CHECK_PORTS([a]) |
151 | CHECK_IFACES([a]) | |
c75d1511 | 152 | OVS_VSCTL_CLEANUP |
3b135da3 BP |
153 | AT_CLEANUP |
154 | ||
1125a1b9 BP |
155 | AT_SETUP([add-br a, add-br a]) |
156 | AT_KEYWORDS([ovs-vsctl]) | |
c75d1511 BP |
157 | OVS_VSCTL_SETUP |
158 | AT_CHECK([RUN_OVS_VSCTL([add-br a])], [0], [], [], [OVS_VSCTL_CLEANUP]) | |
1125a1b9 BP |
159 | AT_CHECK([RUN_OVS_VSCTL([add-br a])], [1], [], |
160 | [ovs-vsctl: cannot create a bridge named a because a bridge named a already exists | |
c75d1511 BP |
161 | ], [OVS_VSCTL_CLEANUP]) |
162 | OVS_VSCTL_CLEANUP | |
1125a1b9 BP |
163 | AT_CLEANUP |
164 | ||
3b135da3 BP |
165 | AT_SETUP([add-br a, add-br b]) |
166 | AT_KEYWORDS([ovs-vsctl]) | |
c75d1511 BP |
167 | OVS_VSCTL_SETUP |
168 | AT_CHECK([RUN_OVS_VSCTL([add-br a], [add-br b])], [0], [], [], | |
169 | [OVS_VSCTL_CLEANUP]) | |
aeee85aa BP |
170 | AT_CHECK([RUN_OVS_VSCTL([--may-exist add-br a b 9])], [1], [], |
171 | [ovs-vsctl: "--may-exist add-br a b 9" but a is not a VLAN bridge | |
172 | ], | |
173 | [OVS_VSCTL_CLEANUP]) | |
8e58fa9a | 174 | CHECK_BRIDGES([a, a, 0], [b, b, 0]) |
3b135da3 BP |
175 | CHECK_PORTS([a]) |
176 | CHECK_IFACES([a]) | |
177 | CHECK_PORTS([b]) | |
178 | CHECK_IFACES([b]) | |
c75d1511 | 179 | OVS_VSCTL_CLEANUP |
3b135da3 BP |
180 | AT_CLEANUP |
181 | ||
182 | AT_SETUP([add-br a, add-br b, del-br a]) | |
183 | AT_KEYWORDS([ovs-vsctl]) | |
c75d1511 BP |
184 | OVS_VSCTL_SETUP |
185 | AT_CHECK([RUN_OVS_VSCTL([add-br a], [add-br b], [del-br a])], [0], [], [], | |
186 | [OVS_VSCTL_CLEANUP]) | |
8e58fa9a | 187 | CHECK_BRIDGES([b, b, 0]) |
3b135da3 BP |
188 | CHECK_PORTS([b]) |
189 | CHECK_IFACES([b]) | |
c75d1511 | 190 | OVS_VSCTL_CLEANUP |
3b135da3 BP |
191 | AT_CLEANUP |
192 | ||
2792c2ad BP |
193 | AT_SETUP([add-br a, add-port a a1, add-port a a2]) |
194 | AT_KEYWORDS([ovs-vsctl]) | |
c75d1511 | 195 | OVS_VSCTL_SETUP |
2792c2ad | 196 | AT_CHECK([RUN_OVS_VSCTL( |
dfbe07ba | 197 | [add-br a], |
460aad80 | 198 | [--if-exists del-br b], |
2792c2ad | 199 | [add-port a a1], |
c75d1511 | 200 | [add-port a a2])], [0], [], [], [OVS_VSCTL_CLEANUP]) |
2792c2ad BP |
201 | CHECK_BRIDGES([a, a, 0]) |
202 | CHECK_PORTS([a], [a1], [a2]) | |
203 | CHECK_IFACES([a], [a1], [a2]) | |
c75d1511 | 204 | OVS_VSCTL_CLEANUP |
2792c2ad BP |
205 | AT_CLEANUP |
206 | ||
1125a1b9 BP |
207 | AT_SETUP([add-br a, add-port a a1, add-port a a1]) |
208 | AT_KEYWORDS([ovs-vsctl]) | |
c75d1511 | 209 | OVS_VSCTL_SETUP |
1125a1b9 BP |
210 | AT_CHECK([RUN_OVS_VSCTL( |
211 | [add-br a], | |
c75d1511 | 212 | [add-port a a1])], [0], [], [], [OVS_VSCTL_CLEANUP]) |
1125a1b9 BP |
213 | AT_CHECK([RUN_OVS_VSCTL([add-port a a1])], [1], [], |
214 | [ovs-vsctl: cannot create a port named a1 because a port named a1 already exists on bridge a | |
c75d1511 BP |
215 | ], [OVS_VSCTL_CLEANUP]) |
216 | OVS_VSCTL_CLEANUP | |
1125a1b9 BP |
217 | AT_CLEANUP |
218 | ||
3b135da3 BP |
219 | AT_SETUP([add-br a b, add-port a a1, add-port b b1, del-br a]) |
220 | AT_KEYWORDS([ovs-vsctl]) | |
c75d1511 | 221 | OVS_VSCTL_SETUP |
4d14e30f | 222 | AT_CHECK([RUN_OVS_VSCTL_TOGETHER( |
3b135da3 BP |
223 | [add-br a], |
224 | [add-br b], | |
225 | [add-port a a1], | |
226 | [add-port b b1], | |
460aad80 BP |
227 | [--if-exists del-port b b2], |
228 | [del-br a])], [0], [ | |
229 | ||
230 | ||
231 | ||
232 | ||
233 | ||
234 | ], [], [OVS_VSCTL_CLEANUP]) | |
8e58fa9a | 235 | CHECK_BRIDGES([b, b, 0]) |
3b135da3 BP |
236 | CHECK_PORTS([b], [b1]) |
237 | CHECK_IFACES([b], [b1]) | |
c75d1511 | 238 | OVS_VSCTL_CLEANUP |
3b135da3 BP |
239 | AT_CLEANUP |
240 | ||
241 | AT_SETUP([add-br a, add-bond a bond0 a1 a2 a3]) | |
242 | AT_KEYWORDS([ovs-vsctl]) | |
c75d1511 | 243 | OVS_VSCTL_SETUP |
3b135da3 BP |
244 | AT_CHECK([RUN_OVS_VSCTL( |
245 | [add-br a], | |
c75d1511 | 246 | [add-bond a bond0 a1 a2 a3])], [0], [], [], [OVS_VSCTL_CLEANUP]) |
bb1c67c8 BP |
247 | AT_CHECK([RUN_OVS_VSCTL([--may-exist add-bond a bond0 a3 a1 a2])], [0], [], [], |
248 | [OVS_VSCTL_CLEANUP]) | |
249 | AT_CHECK([RUN_OVS_VSCTL([--may-exist add-bond a bond0 a2 a1])], [1], [], | |
250 | [ovs-vsctl: "--may-exist add-bond a bond0 a2 a1" but bond0 actually has interface(s) a1, a2, a3 | |
251 | ], | |
252 | [OVS_VSCTL_CLEANUP]) | |
8e58fa9a | 253 | CHECK_BRIDGES([a, a, 0]) |
3b135da3 BP |
254 | CHECK_PORTS([a], [bond0]) |
255 | CHECK_IFACES([a], [a1], [a2], [a3]) | |
c75d1511 | 256 | OVS_VSCTL_CLEANUP |
3b135da3 BP |
257 | AT_CLEANUP |
258 | ||
259 | AT_SETUP([add-br a b, add-port a a1, add-port b b1, del-port a a1]) | |
260 | AT_KEYWORDS([ovs-vsctl]) | |
c75d1511 | 261 | OVS_VSCTL_SETUP |
3b135da3 BP |
262 | AT_CHECK([RUN_OVS_VSCTL( |
263 | [add-br a], | |
264 | [add-br b], | |
18b239f5 BP |
265 | [add-port a a1 tag=9], |
266 | [get port a1 tag], | |
bb1c67c8 | 267 | [--may-exist add-port b b1], |
18b239f5 BP |
268 | [del-port a a1])], [0], [9 |
269 | ], [], [OVS_VSCTL_CLEANUP]) | |
bb1c67c8 BP |
270 | AT_CHECK([RUN_OVS_VSCTL([--may-exist add-port b b1])], [0], [], [], |
271 | [OVS_VSCTL_CLEANUP]) | |
272 | AT_CHECK([RUN_OVS_VSCTL([--may-exist add-port a b1])], [1], [], | |
273 | [ovs-vsctl: "--may-exist add-port a b1" but b1 is actually attached to bridge b | |
274 | ], | |
275 | [OVS_VSCTL_CLEANUP]) | |
8e58fa9a | 276 | CHECK_BRIDGES([a, a, 0], [b, b, 0]) |
3b135da3 BP |
277 | CHECK_PORTS([a]) |
278 | CHECK_IFACES([a]) | |
279 | CHECK_PORTS([b], [b1]) | |
280 | CHECK_IFACES([b], [b1]) | |
c75d1511 | 281 | OVS_VSCTL_CLEANUP |
3b135da3 BP |
282 | AT_CLEANUP |
283 | ||
3d1b9636 | 284 | AT_SETUP([add-br a, add-bond a bond0 a1 a2 a3, del-port bond0]) |
3b135da3 | 285 | AT_KEYWORDS([ovs-vsctl]) |
c75d1511 | 286 | OVS_VSCTL_SETUP |
4d14e30f | 287 | AT_CHECK([RUN_OVS_VSCTL_TOGETHER( |
3b135da3 | 288 | [add-br a], |
18b239f5 BP |
289 | [add-bond a bond0 a1 a2 a3 tag=9], |
290 | [get Port bond0 tag], | |
460aad80 BP |
291 | [del-port bond0])], [0], [ |
292 | ||
18b239f5 | 293 | 9 |
460aad80 BP |
294 | |
295 | ], [], [OVS_VSCTL_CLEANUP]) | |
8e58fa9a | 296 | CHECK_BRIDGES([a, a, 0]) |
3b135da3 | 297 | CHECK_PORTS([a]) |
c75d1511 | 298 | OVS_VSCTL_CLEANUP |
3b135da3 BP |
299 | AT_CLEANUP |
300 | ||
457e1eb0 BP |
301 | AT_SETUP([external IDs]) |
302 | AT_KEYWORDS([ovs-vsctl]) | |
303 | OVS_VSCTL_SETUP | |
fbd8715e | 304 | AT_CHECK([RUN_OVS_VSCTL_ONELINE( |
460aad80 | 305 | [add-br a], |
457e1eb0 BP |
306 | [add-port a a1], |
307 | [add-bond a bond0 a2 a3], | |
308 | [br-set-external-id a key0 value0], | |
e328faad BP |
309 | [set port a1 external-ids:key1=value1], |
310 | [set interface a2 external-ids:key2=value2], | |
311 | [set interface a2 external-ids:key3=value3], | |
312 | [set interface a3 external-ids:key4=value4], | |
457e1eb0 BP |
313 | [br-get-external-id a], |
314 | [br-get-external-id a key0], | |
315 | [br-get-external-id a key1], | |
316 | [br-set-external-id a key0 othervalue], | |
317 | [br-get-external-id a], | |
318 | [br-set-external-id a key0], | |
319 | [br-get-external-id a], | |
e328faad BP |
320 | [get port a1 external-ids], |
321 | [get interface a2 external-ids], | |
322 | [get interface a3 external-ids])], [0], [ | |
457e1eb0 BP |
323 | |
324 | ||
325 | ||
326 | ||
327 | ||
328 | ||
329 | ||
330 | key0=value0 | |
331 | value0 | |
332 | ||
333 | ||
334 | key0=othervalue | |
335 | ||
336 | ||
e328faad BP |
337 | {"key1"="value1"} |
338 | {"key2"="value2", "key3"="value3"} | |
339 | {"key4"="value4"} | |
457e1eb0 BP |
340 | ], [], [OVS_VSCTL_CLEANUP]) |
341 | AT_CHECK([RUN_OVS_VSCTL_TOGETHER( | |
460aad80 | 342 | [br-get-external-id a], |
e328faad BP |
343 | [get port a1 external-ids], |
344 | [get interface a2 external-ids], | |
345 | [get interface a3 external-ids])], [0], | |
457e1eb0 | 346 | [ |
e328faad BP |
347 | {"key1"="value1"} |
348 | {"key2"="value2", "key3"="value3"} | |
349 | {"key4"="value4"} | |
457e1eb0 BP |
350 | ], [], [OVS_VSCTL_CLEANUP]) |
351 | CHECK_BRIDGES([a, a, 0]) | |
352 | CHECK_PORTS([a], [a1], [bond0]) | |
353 | CHECK_IFACES([a], [a1], [a2], [a3]) | |
354 | OVS_VSCTL_CLEANUP | |
355 | AT_CLEANUP | |
356 | ||
76ce9432 BP |
357 | AT_SETUP([controllers]) |
358 | AT_KEYWORDS([controller ovs-vsctl]) | |
359 | OVS_VSCTL_SETUP | |
360 | AT_CHECK([RUN_OVS_VSCTL_TOGETHER( | |
361 | [add-br br0], | |
362 | ||
76ce9432 | 363 | [get-controller br0], |
76ce9432 | 364 | [set-controller br0 tcp:4.5.6.7], |
76ce9432 BP |
365 | [get-controller br0], |
366 | ||
367 | [del-controller br0], | |
76ce9432 BP |
368 | [get-controller br0], |
369 | ||
370 | [set-controller br0 tcp:8.9.10.11 tcp:5.4.3.2], | |
76ce9432 BP |
371 | [get-controller br0])], [0], [ |
372 | ||
76ce9432 | 373 | |
76ce9432 BP |
374 | tcp:4.5.6.7 |
375 | ||
376 | ||
377 | ||
76ce9432 BP |
378 | tcp:5.4.3.2\ntcp:8.9.10.11 |
379 | ], [], [OVS_VSCTL_CLEANUP]) | |
380 | OVS_VSCTL_CLEANUP | |
381 | AT_CLEANUP | |
382 | ||
8e58fa9a | 383 | dnl ---------------------------------------------------------------------- |
3b135da3 BP |
384 | AT_BANNER([ovs-vsctl unit tests -- fake bridges]) |
385 | ||
dfbe07ba BP |
386 | m4_define([OVS_VSCTL_SETUP_SIMPLE_FAKE_CONF], |
387 | [AT_CHECK( | |
388 | [RUN_OVS_VSCTL( | |
389 | [add-br xenbr0], | |
aeee85aa | 390 | [--may-exist add-br xenbr0], |
dfbe07ba | 391 | [add-port xenbr0 eth0], |
bb1c67c8 | 392 | [--may-exist add-port xenbr0 eth0], |
dfbe07ba | 393 | [add-br xapi1 xenbr0 9], |
aeee85aa | 394 | [--may-exist add-br xapi1 xenbr0 9], |
dfbe07ba BP |
395 | [add-port xapi1 eth0.9])], |
396 | [0], [], [], [OVS_VSCTL_CLEANUP])]) | |
3b135da3 BP |
397 | |
398 | AT_SETUP([simple fake bridge]) | |
399 | AT_KEYWORDS([ovs-vsctl fake-bridge]) | |
c75d1511 | 400 | OVS_VSCTL_SETUP |
dfbe07ba | 401 | OVS_VSCTL_SETUP_SIMPLE_FAKE_CONF |
aeee85aa BP |
402 | AT_CHECK([RUN_OVS_VSCTL([--may-exist add-br xapi1])], [1], [], |
403 | [ovs-vsctl: "--may-exist add-br xapi1" but xapi1 is a VLAN bridge for VLAN 9 | |
404 | ], [OVS_VSCTL_CLEANUP]) | |
405 | AT_CHECK([RUN_OVS_VSCTL([--may-exist add-br xapi1 xxx 9])], [1], [], | |
406 | [ovs-vsctl: "--may-exist add-br xapi1 xxx 9" but xapi1 has the wrong parent xenbr0 | |
407 | ], [OVS_VSCTL_CLEANUP]) | |
408 | AT_CHECK([RUN_OVS_VSCTL([--may-exist add-br xapi1 xenbr0 10])], [1], [], | |
409 | [ovs-vsctl: "--may-exist add-br xapi1 xenbr0 10" but xapi1 is a VLAN bridge for the wrong VLAN 9 | |
410 | ], [OVS_VSCTL_CLEANUP]) | |
dfbe07ba | 411 | CHECK_BRIDGES([xapi1, xenbr0, 9], [xenbr0, xenbr0, 0]) |
3b135da3 BP |
412 | CHECK_PORTS([xenbr0], [eth0]) |
413 | CHECK_IFACES([xenbr0], [eth0]) | |
414 | CHECK_PORTS([xapi1], [eth0.9]) | |
415 | CHECK_IFACES([xapi1], [eth0.9]) | |
c75d1511 | 416 | OVS_VSCTL_CLEANUP |
3b135da3 BP |
417 | AT_CLEANUP |
418 | ||
419 | AT_SETUP([simple fake bridge + del-br fake bridge]) | |
420 | AT_KEYWORDS([ovs-vsctl fake-bridge]) | |
c75d1511 | 421 | OVS_VSCTL_SETUP |
dfbe07ba BP |
422 | OVS_VSCTL_SETUP_SIMPLE_FAKE_CONF |
423 | AT_CHECK([RUN_OVS_VSCTL([del-br xapi1])], [0], [], [], [OVS_VSCTL_CLEANUP]) | |
8e58fa9a | 424 | CHECK_BRIDGES([xenbr0, xenbr0, 0]) |
3b135da3 BP |
425 | CHECK_PORTS([xenbr0], [eth0]) |
426 | CHECK_IFACES([xenbr0], [eth0]) | |
c75d1511 | 427 | OVS_VSCTL_CLEANUP |
3b135da3 BP |
428 | AT_CLEANUP |
429 | ||
430 | AT_SETUP([simple fake bridge + del-br real bridge]) | |
431 | AT_KEYWORDS([ovs-vsctl fake-bridge]) | |
c75d1511 | 432 | OVS_VSCTL_SETUP |
dfbe07ba BP |
433 | OVS_VSCTL_SETUP_SIMPLE_FAKE_CONF |
434 | AT_CHECK([RUN_OVS_VSCTL([del-br xenbr0])], [0], [], [], [OVS_VSCTL_CLEANUP]) | |
3b135da3 | 435 | CHECK_BRIDGES |
c75d1511 | 436 | OVS_VSCTL_CLEANUP |
3b135da3 BP |
437 | AT_CLEANUP |
438 | ||
457e1eb0 BP |
439 | AT_SETUP([simple fake bridge + external IDs]) |
440 | AT_KEYWORDS([ovs-vsctl fake-bridge]) | |
441 | OVS_VSCTL_SETUP | |
442 | OVS_VSCTL_SETUP_SIMPLE_FAKE_CONF | |
443 | AT_CHECK([RUN_OVS_VSCTL_TOGETHER( | |
460aad80 | 444 | [br-set-external-id xenbr0 key0 value0], |
457e1eb0 BP |
445 | [br-set-external-id xapi1 key1 value1], |
446 | [br-get-external-id xenbr0], | |
447 | [br-get-external-id xenbr0 key0], | |
448 | [br-get-external-id xapi1], | |
449 | [br-get-external-id xapi1 key1])], [0], [ | |
450 | ||
451 | key0=value0 | |
452 | value0 | |
453 | key1=value1 | |
454 | value1 | |
455 | ], [], [OVS_VSCTL_CLEANUP]) | |
456 | CHECK_BRIDGES([xapi1, xenbr0, 9], [xenbr0, xenbr0, 0]) | |
457 | CHECK_PORTS([xenbr0], [eth0]) | |
458 | CHECK_IFACES([xenbr0], [eth0]) | |
459 | CHECK_PORTS([xapi1], [eth0.9]) | |
460 | CHECK_IFACES([xapi1], [eth0.9]) | |
461 | OVS_VSCTL_CLEANUP | |
462 | AT_CLEANUP | |
463 | ||
dfbe07ba BP |
464 | m4_define([OVS_VSCTL_SETUP_BOND_FAKE_CONF], |
465 | [AT_CHECK( | |
466 | [RUN_OVS_VSCTL( | |
467 | [add-br xapi1], | |
468 | [add-bond xapi1 bond0 eth0 eth1], | |
469 | [add-br xapi2 xapi1 11], | |
470 | [add-port xapi2 bond0.11])], | |
471 | [0], [], [], [OVS_VSCTL_CLEANUP])]) | |
3b135da3 BP |
472 | |
473 | AT_SETUP([fake bridge on bond]) | |
474 | AT_KEYWORDS([ovs-vsctl fake-bridge]) | |
c75d1511 | 475 | OVS_VSCTL_SETUP |
dfbe07ba | 476 | OVS_VSCTL_SETUP_BOND_FAKE_CONF |
8e58fa9a | 477 | CHECK_BRIDGES([xapi1, xapi1, 0], [xapi2, xapi1, 11]) |
3b135da3 BP |
478 | CHECK_PORTS([xapi1], [bond0]) |
479 | CHECK_IFACES([xapi1], [eth0], [eth1]) | |
480 | CHECK_PORTS([xapi2], [bond0.11]) | |
481 | CHECK_IFACES([xapi2], [bond0.11]) | |
c75d1511 | 482 | OVS_VSCTL_CLEANUP |
3b135da3 BP |
483 | AT_CLEANUP |
484 | ||
485 | AT_SETUP([fake bridge on bond + del-br fake bridge]) | |
486 | AT_KEYWORDS([ovs-vsctl fake-bridge]) | |
c75d1511 | 487 | OVS_VSCTL_SETUP |
dfbe07ba | 488 | OVS_VSCTL_SETUP_BOND_FAKE_CONF |
460aad80 | 489 | AT_CHECK([RUN_OVS_VSCTL_ONELINE([del-br xapi2])], [0], [ |
dfbe07ba | 490 | ], [], [OVS_VSCTL_CLEANUP]) |
8e58fa9a | 491 | CHECK_BRIDGES([xapi1, xapi1, 0]) |
3b135da3 BP |
492 | CHECK_PORTS([xapi1], [bond0]) |
493 | CHECK_IFACES([xapi1], [eth0], [eth1]) | |
c75d1511 | 494 | OVS_VSCTL_CLEANUP |
3b135da3 BP |
495 | AT_CLEANUP |
496 | ||
497 | AT_SETUP([fake bridge on bond + del-br real bridge]) | |
498 | AT_KEYWORDS([ovs-vsctl fake-bridge]) | |
dfbe07ba BP |
499 | OVS_VSCTL_SETUP |
500 | OVS_VSCTL_SETUP_BOND_FAKE_CONF | |
3b135da3 BP |
501 | AT_CHECK([RUN_OVS_VSCTL([del-br xapi1])]) |
502 | CHECK_BRIDGES | |
c75d1511 | 503 | OVS_VSCTL_CLEANUP |
3b135da3 | 504 | AT_CLEANUP |
5c414a2e | 505 | |
24b8b259 AE |
506 | dnl ---------------------------------------------------------------------- |
507 | AT_BANNER([ovs-vsctl unit tests -- manager commands]) | |
508 | ||
509 | AT_SETUP([managers]) | |
510 | AT_KEYWORDS([manager ovs-vsctl]) | |
511 | OVS_VSCTL_SETUP | |
512 | AT_CHECK([RUN_OVS_VSCTL_TOGETHER( | |
513 | [del-manager], | |
514 | [get-manager], | |
515 | [set-manager tcp:4.5.6.7], | |
516 | [get-manager], | |
517 | [set-manager tcp:8.9.10.11 tcp:5.4.3.2], | |
518 | [get-manager], | |
519 | [del-manager], | |
520 | [get-manager])], [0], [ | |
521 | ||
522 | ||
523 | tcp:4.5.6.7 | |
524 | ||
525 | tcp:5.4.3.2\ntcp:8.9.10.11 | |
526 | ||
527 | ||
528 | ], [], [OVS_VSCTL_CLEANUP]) | |
529 | OVS_VSCTL_CLEANUP | |
530 | AT_CLEANUP | |
531 | ||
5c414a2e BP |
532 | dnl ---------------------------------------------------------------------- |
533 | AT_BANNER([ovs-vsctl unit tests -- database commands]) | |
534 | ||
535 | AT_SETUP([database commands -- positive checks]) | |
536 | AT_KEYWORDS([ovs-vsctl]) | |
537 | OVS_VSCTL_SETUP | |
0d0f05b9 | 538 | AT_CHECK([RUN_OVS_VSCTL([create b name=br0])], |
5c414a2e BP |
539 | [0], [stdout], [], [OVS_VSCTL_CLEANUP]) |
540 | cp stdout out1 | |
f40a9b61 | 541 | AT_CHECK([RUN_OVS_VSCTL([list b], [get b br0 _uuid])], |
5c414a2e BP |
542 | [0], [stdout], [], [OVS_VSCTL_CLEANUP]) |
543 | cp stdout out2 | |
544 | AT_CHECK([perl $srcdir/uuidfilt.pl out1 out2], [0], | |
545 | [[<0> | |
bd76d25d BP |
546 | _uuid : <0> |
547 | controller : [] | |
548 | datapath_id : [] | |
549 | datapath_type : "" | |
550 | external_ids : {} | |
31681a5d | 551 | fail_mode : [] |
bd76d25d BP |
552 | flood_vlans : [] |
553 | mirrors : [] | |
554 | name : "br0" | |
555 | netflow : [] | |
556 | other_config : {} | |
557 | ports : [] | |
558 | sflow : [] | |
f40a9b61 | 559 | <0> |
5c414a2e | 560 | ]], [ignore], [test ! -e pid || kill `cat pid`]) |
9591fefe BP |
561 | AT_CHECK( |
562 | [RUN_OVS_VSCTL([--columns=fail_mode,name,datapath_type list b])], | |
563 | [0], | |
564 | [[fail_mode : [] | |
565 | name : "br0" | |
566 | datapath_type : "" | |
567 | ]], [ignore], [test ! -e pid || kill `cat pid`]) | |
0a140468 BP |
568 | AT_CHECK( |
569 | [RUN_OVS_VSCTL([--columns=fail_mode,name,datapath_type find b])], | |
570 | [0], | |
571 | [[fail_mode : [] | |
572 | name : "br0" | |
573 | datapath_type : "" | |
574 | ]], [ignore], [test ! -e pid || kill `cat pid`]) | |
575 | AT_CHECK([RUN_OVS_VSCTL([create b name=br1 datapath_type="foo"], | |
576 | [create b name=br2 external-ids:bar=quux])], | |
577 | [0], [stdout], [], [OVS_VSCTL_CLEANUP]) | |
578 | AT_CHECK( | |
579 | [RUN_OVS_VSCTL([--columns=name find b datapath_type!=foo])], [0], [stdout], | |
580 | [ignore], [test ! -e pid || kill `cat pid`]) | |
581 | AT_CHECK([sed -n '/./p' stdout | sort], [0], | |
582 | [[name : "br0" | |
583 | name : "br2" | |
584 | ]]) | |
5c414a2e BP |
585 | AT_CHECK( |
586 | [RUN_OVS_VSCTL( | |
587 | [set bridge br0 \ | |
588 | 'other_config:datapath_id="0123456789ab"' \ | |
589 | 'other_config:hwaddr="00:11:22:33:44:55"' \ | |
d3f82921 BP |
590 | 'external-ids={"uuids"="9c45f225-a7cf-439d-976d-83db6271fda1"}' -- \ |
591 | add bridge br0 external_ids '"roles"="local; remote; cloud"'])], | |
5c414a2e BP |
592 | [0], [], [], [OVS_VSCTL_CLEANUP]) |
593 | AT_CHECK([RUN_OVS_VSCTL_ONELINE([get bridge br0 other_config external-ids])], | |
d3f82921 | 594 | [0], [{datapath_id="0123456789ab", hwaddr="00:11:22:33:44:55"}\n{roles="local; remote; cloud", uuids="9c45f225-a7cf-439d-976d-83db6271fda1"} |
5c414a2e BP |
595 | ], [], [OVS_VSCTL_CLEANUP]) |
596 | AT_CHECK([RUN_OVS_VSCTL([get bridge br0 other_config:hwaddr -- --if-exists get bridge br0 other-config:nonexistent])], | |
597 | [0], ["00:11:22:33:44:55" | |
598 | ||
599 | ], [], [OVS_VSCTL_CLEANUP]) | |
600 | AT_CHECK([RUN_OVS_VSCTL([remove br br0 other_config hwaddr 'datapath_id=""' -- get br br0 other_config])], | |
601 | [0], [{datapath_id="0123456789ab"} | |
602 | ], [], [OVS_VSCTL_CLEANUP]) | |
603 | AT_CHECK([RUN_OVS_VSCTL([remove br br0 other_config 'datapath_id="0123456789ab"' -- get br br0 other_config])], | |
604 | [0], [{} | |
605 | ], [], [OVS_VSCTL_CLEANUP]) | |
606 | AT_CHECK([RUN_OVS_VSCTL([clear br br0 external-ids -- get br br0 external_ids])], | |
607 | [0], [{} | |
608 | ], [], [OVS_VSCTL_CLEANUP]) | |
0a140468 BP |
609 | AT_CHECK([RUN_OVS_VSCTL_TOGETHER([destroy b br0], |
610 | [destroy b br1], | |
611 | [destroy b br2])], | |
5c414a2e BP |
612 | [0], [stdout], [], [OVS_VSCTL_CLEANUP]) |
613 | AT_CHECK([RUN_OVS_VSCTL([list b])], | |
614 | [0], [], [], [OVS_VSCTL_CLEANUP]) | |
615 | OVS_VSCTL_CLEANUP | |
616 | AT_CLEANUP | |
617 | ||
618 | AT_SETUP([database commands -- negative checks]) | |
619 | AT_KEYWORDS([ovs-vsctl]) | |
620 | OVS_VSCTL_SETUP | |
0d0f05b9 | 621 | AT_CHECK([RUN_OVS_VSCTL([create b name=br0])], |
5c414a2e BP |
622 | [0], [ignore], [], [OVS_VSCTL_CLEANUP]) |
623 | AT_CHECK([RUN_OVS_VSCTL([add-br br1])], | |
624 | [0], [ignore], [], [OVS_VSCTL_CLEANUP]) | |
625 | AT_CHECK([RUN_OVS_VSCTL([set-controller br1 tcp:127.0.0.1])], | |
626 | [0], [ignore], [], [OVS_VSCTL_CLEANUP]) | |
0d0f05b9 | 627 | AT_CHECK([RUN_OVS_VSCTL([create n targets='"1.2.3.4:567"'])], |
5c414a2e BP |
628 | [0], [stdout], [], [OVS_VSCTL_CLEANUP]) |
629 | cp stdout netflow-uuid | |
630 | AT_CHECK([RUN_OVS_VSCTL([list n `cat netflow-uuid`])], | |
631 | [0], [stdout], [], [OVS_VSCTL_CLEANUP]) | |
632 | AT_CHECK([perl $srcdir/uuidfilt.pl netflow-uuid stdout], [0], | |
633 | [[<0> | |
bd76d25d BP |
634 | _uuid : <0> |
635 | active_timeout : 0 | |
636 | add_id_to_interface : false | |
637 | engine_id : [] | |
638 | engine_type : [] | |
13008eb3 | 639 | external_ids : {} |
bd76d25d | 640 | targets : ["1.2.3.4:567"] |
5c414a2e BP |
641 | ]], [ignore], [test ! -e pid || kill `cat pid`]) |
642 | AT_CHECK([RUN_OVS_VSCTL([list interx x])], | |
643 | [1], [], [ovs-vsctl: unknown table "interx" | |
644 | ], [OVS_VSCTL_CLEANUP]) | |
645 | AT_CHECK([RUN_OVS_VSCTL([list b x])], | |
646 | [1], [], [ovs-vsctl: no row "x" in table Bridge | |
647 | ], [OVS_VSCTL_CLEANUP]) | |
5c414a2e BP |
648 | AT_CHECK([RUN_OVS_VSCTL([get b br0 d])], |
649 | [1], [], [ovs-vsctl: Bridge contains more than one column whose name matches "d" | |
650 | ], [OVS_VSCTL_CLEANUP]) | |
651 | AT_CHECK([RUN_OVS_VSCTL([get b br0 x])], | |
652 | [1], [], [ovs-vsctl: Bridge does not contain a column whose name matches "x" | |
653 | ], [OVS_VSCTL_CLEANUP]) | |
654 | AT_CHECK([RUN_OVS_VSCTL([get b br0 :y=z])], | |
655 | [1], [], [ovs-vsctl: :y=z: missing column name | |
656 | ], [OVS_VSCTL_CLEANUP]) | |
657 | AT_CHECK([RUN_OVS_VSCTL([get b br0 datapath_id:y=z])], | |
e89e5374 | 658 | [1], [], [ovs-vsctl: datapath_id:y=z: trailing garbage "=z" in argument |
5c414a2e | 659 | ], [OVS_VSCTL_CLEANUP]) |
7db03f7c BP |
660 | AT_CHECK([RUN_OVS_VSCTL([set b br0 'datapath_id:y>=z'])], |
661 | [1], [], [ovs-vsctl: datapath_id:y>=z: argument does not end in "=" followed by a value. | |
662 | ], [OVS_VSCTL_CLEANUP]) | |
663 | AT_CHECK([RUN_OVS_VSCTL([wait-until b br0 datapath_id:y,z])], | |
664 | [1], [], [ovs-vsctl: datapath_id:y,z: argument does not end in "=", "!=", "<", ">", "<=", or ">=" followed by a value. | |
665 | ], [OVS_VSCTL_CLEANUP]) | |
5c414a2e BP |
666 | AT_CHECK([RUN_OVS_VSCTL([get b br0 datapath_id::])], |
667 | [1], [], [ovs-vsctl: datapath_id::: trailing garbage ":" in argument | |
668 | ], [OVS_VSCTL_CLEANUP]) | |
669 | AT_CHECK([RUN_OVS_VSCTL([get b br0 datapath_id:x])], | |
670 | [1], [], [ovs-vsctl: cannot specify key to get for non-map column datapath_id | |
671 | ], [OVS_VSCTL_CLEANUP]) | |
672 | AT_CHECK([RUN_OVS_VSCTL([get b br0 external_ids:x])], | |
673 | [1], [], [ovs-vsctl: no key "x" in Bridge record "br0" column external_ids | |
674 | ], [OVS_VSCTL_CLEANUP]) | |
675 | AT_CHECK([RUN_OVS_VSCTL([set b br0 flood_vlans=-1])], | |
bd76d25d | 676 | [1], [], [ovs-vsctl: constraint violation: -1 is not in the valid range 0 to 4095 (inclusive) |
5c414a2e BP |
677 | ], [OVS_VSCTL_CLEANUP]) |
678 | AT_CHECK([RUN_OVS_VSCTL([set b br0 flood_vlans=4096])], | |
bd76d25d | 679 | [1], [], [ovs-vsctl: constraint violation: 4096 is not in the valid range 0 to 4095 (inclusive) |
5c414a2e | 680 | ], [OVS_VSCTL_CLEANUP]) |
bfc96d9b BP |
681 | AT_CHECK([RUN_OVS_VSCTL([set c br1 'connection-mode=xyz'])], |
682 | [1], [], [[ovs-vsctl: constraint violation: xyz is not one of the allowed values ([in-band, out-of-band]) | |
683 | ]], [OVS_VSCTL_CLEANUP]) | |
5c414a2e BP |
684 | AT_CHECK([RUN_OVS_VSCTL([set c br1 connection-mode:x=y])], |
685 | [1], [], [ovs-vsctl: cannot specify key to set for non-map column connection_mode | |
686 | ], [OVS_VSCTL_CLEANUP]) | |
bd76d25d | 687 | AT_CHECK([RUN_OVS_VSCTL([add b br1 datapath_id x y])], |
5c414a2e BP |
688 | [1], [], [ovs-vsctl: "add" operation would put 2 values in column datapath_id of table Bridge but the maximum number is 1 |
689 | ], [OVS_VSCTL_CLEANUP]) | |
5c414a2e | 690 | AT_CHECK([RUN_OVS_VSCTL([remove n `cat netflow-uuid` targets '"1.2.3.4:567"'])], |
f19f25a4 | 691 | [1], [], [ovs-vsctl: "remove" operation would put 0 values in column targets of table NetFlow but the minimum number is 1 |
5c414a2e | 692 | ], [OVS_VSCTL_CLEANUP]) |
5c414a2e BP |
693 | AT_CHECK([RUN_OVS_VSCTL([clear n `cat netflow-uuid` targets])], |
694 | [1], [], [ovs-vsctl: "clear" operation cannot be applied to column targets of table NetFlow, which is not allowed to be empty | |
695 | ], [OVS_VSCTL_CLEANUP]) | |
0d0f05b9 | 696 | AT_CHECK([RUN_OVS_VSCTL([destroy b br2])], |
5c414a2e BP |
697 | [1], [], [ovs-vsctl: no row "br2" in table Bridge |
698 | ], [OVS_VSCTL_CLEANUP]) | |
699 | OVS_VSCTL_CLEANUP | |
700 | AT_CLEANUP | |
701 | ||
7db03f7c BP |
702 | AT_SETUP([database commands -- wait-until immediately true]) |
703 | AT_KEYWORDS([ovs-vsctl]) | |
704 | OVS_VSCTL_SETUP | |
705 | AT_CHECK([RUN_OVS_VSCTL( | |
706 | [add-br br0], | |
707 | [add-bond br0 bond0 eth0 eth1], | |
708 | [set port bond0 bond_updelay=500 other-config:abc=def])], | |
709 | [0], [], [], [OVS_VSCTL_CLEANUP]) | |
710 | AT_CHECK([RUN_OVS_VSCTL([[wait-until Open_vSwitch . managers=[]]])], | |
711 | [0], [], [], [OVS_VSCTL_CLEANUP]) | |
712 | AT_CHECK([RUN_OVS_VSCTL([[wait-until Open_vSwitch . bridges!=[]]])], | |
713 | [0], [], [], [OVS_VSCTL_CLEANUP]) | |
714 | AT_CHECK([RUN_OVS_VSCTL([[wait-until Port bond0 other-config:abc=def]])], | |
715 | [0], [], [], [OVS_VSCTL_CLEANUP]) | |
716 | AT_CHECK([RUN_OVS_VSCTL([[wait-until port bond0 'bond_updelay>50' 'other-config:abc>d' 'other-config:abc<e']])], | |
717 | [0], [], [], [OVS_VSCTL_CLEANUP]) | |
718 | OVS_VSCTL_CLEANUP | |
719 | AT_CLEANUP | |
720 | ||
721 | AT_SETUP([database commands -- wait-until must wait]) | |
722 | AT_KEYWORDS([ovs-vsctl]) | |
7454ec7a BP |
723 | |
724 | # Disable lcov for this test. All the programs running in parallel | |
725 | # race badly on access to profiling data. | |
726 | DISABLE_LCOV=true | |
727 | export DISABLE_LCOV | |
728 | ||
7db03f7c BP |
729 | OVS_VSCTL_SETUP |
730 | ||
731 | # Start ovs-vsctls in background. | |
732 | (RUN_OVS_VSCTL([[wait-until o . bridges!=[] -- get bridge br10 other-config:abc]])) > stdout1 & | |
733 | (RUN_OVS_VSCTL([[wait-until bridge br1 -- get bridge br1 other-config:abc]])) > stdout2 & | |
734 | (RUN_OVS_VSCTL([[wait-until b br1 other-config={abc=def} -- get bridge br1 other-config]])) > stdout3 & | |
735 | (RUN_OVS_VSCTL([[wait-until port bond0 'bond_updelay>50' -- get port bond0 bond-updelay]])) > stdout4 & | |
736 | ||
737 | # Give the ovs-vsctls a chance to read the database | |
738 | sleep 1 | |
739 | ||
e111e681 | 740 | AT_CHECK([RUN_OVS_VSCTL([add-br br10 -- set bridge br10 other-config:abc=quux]) |
7db03f7c BP |
741 | RUN_OVS_VSCTL([add-br br1 -- set bridge br1 other-config:abc=def -- add-bond br1 bond0 eth0 eth1 -- set port bond0 bond_updelay=500])], |
742 | [0], [], [], [OVS_VSCTL_CLEANUP]) | |
743 | ||
744 | # Wait for the ovs-vsctls to finish. | |
745 | wait | |
746 | ||
747 | # Check output | |
748 | AT_CHECK([cat stdout1], [0], [quux | |
749 | ], [], [OVS_VSCTL_CLEANUP]) | |
750 | AT_CHECK([cat stdout2], [0], [def | |
751 | ], [], [OVS_VSCTL_CLEANUP]) | |
752 | AT_CHECK([cat stdout3], [0], [{abc=def} | |
753 | ], [], [OVS_VSCTL_CLEANUP]) | |
754 | AT_CHECK([cat stdout4], [0], [500 | |
755 | ], [], [OVS_VSCTL_CLEANUP]) | |
756 | ||
757 | OVS_VSCTL_CLEANUP | |
758 | AT_CLEANUP | |
759 | ||
aed133bf BP |
760 | AT_SETUP([--id option on create, get commands]) |
761 | AT_KEYWORDS([ovs-vsctl]) | |
762 | OVS_VSCTL_SETUP | |
763 | AT_CHECK([RUN_OVS_VSCTL([add-br br0], | |
764 | [add-port br0 eth0], | |
765 | [add-port br0 eth1])]) | |
766 | AT_CHECK( | |
767 | [RUN_OVS_VSCTL_TOGETHER( | |
768 | [set bridge br0 mirrors=@m], | |
769 | [--id=@eth0 get port eth0], | |
770 | [--id=@eth1 get port eth1], | |
771 | [--id=@m create mirror name=mymirror select-dst-port=@eth0 select-src-port=@eth0 output-port=@eth1])], | |
772 | [0], [stdout], [], [OVS_VSCTL_CLEANUP]) | |
773 | AT_CHECK( | |
774 | [perl $srcdir/uuidfilt.pl stdout], [0], [dnl | |
775 | ||
776 | ||
777 | ||
778 | <0> | |
779 | ], | |
780 | [], [OVS_VSCTL_CLEANUP]) | |
781 | AT_CHECK( | |
782 | [RUN_OVS_VSCTL( | |
783 | [list port eth0 eth1], | |
784 | [list mirror], | |
785 | [list bridge br0])], | |
786 | [0], [stdout], [], [OVS_VSCTL_CLEANUP]) | |
787 | AT_CHECK( | |
788 | [sed -n -e '/uuid/p' -e '/name/p' -e '/mirrors/p' -e '/select/p' -e '/output/p' < stdout | $srcdir/uuidfilt.pl], [0], [dnl | |
789 | [_uuid : <0> | |
790 | name : "eth0" | |
791 | _uuid : <1> | |
792 | name : "eth1" | |
793 | _uuid : <2> | |
794 | name : mymirror | |
795 | output_port : <1> | |
796 | output_vlan : [] | |
797 | select_all : false | |
798 | select_dst_port : [<0>] | |
799 | select_src_port : [<0>] | |
800 | select_vlan : [] | |
801 | _uuid : <3> | |
802 | mirrors : [<2>] | |
803 | name : "br0" | |
804 | ]], | |
805 | [], [OVS_VSCTL_CLEANUP]) | |
806 | OVS_VSCTL_CLEANUP | |
807 | AT_CLEANUP | |
808 | ||
5c414a2e BP |
809 | dnl This test really shows a bug -- "create" followed by "list" in |
810 | dnl the same execution shows the wrong UUID on the "list" command. | |
811 | dnl The bug is documented in ovs-vsctl.8. | |
812 | AT_SETUP([created row UUID is wrong in same execution]) | |
813 | AT_KEYWORDS([ovs-vsctl]) | |
814 | OVS_VSCTL_SETUP | |
0d0f05b9 | 815 | AT_CHECK([RUN_OVS_VSCTL([create Bridge name=br0 -- list b])], |
5c414a2e BP |
816 | [0], [stdout], [], [OVS_VSCTL_CLEANUP]) |
817 | AT_CHECK([perl $srcdir/uuidfilt.pl stdout], [0], | |
818 | [[<0> | |
bd76d25d BP |
819 | _uuid : <1> |
820 | controller : [] | |
821 | datapath_id : [] | |
822 | datapath_type : "" | |
823 | external_ids : {} | |
31681a5d | 824 | fail_mode : [] |
bd76d25d BP |
825 | flood_vlans : [] |
826 | mirrors : [] | |
827 | name : "br0" | |
828 | netflow : [] | |
829 | other_config : {} | |
830 | ports : [] | |
831 | sflow : [] | |
5c414a2e BP |
832 | ]], [ignore], [test ! -e pid || kill `cat pid`]) |
833 | OVS_VSCTL_CLEANUP | |
834 | AT_CLEANUP |