]> git.proxmox.com Git - mirror_ovs.git/blame - tests/ovs-vsctl.at
tests/ovs_client: Remove broken debug code
[mirror_ovs.git] / tests / ovs-vsctl.at
CommitLineData
c75d1511
BP
1dnl OVS_VSCTL_SETUP
2dnl
3dnl Creates an empty database in the current directory and then starts
4dnl an ovsdb-server on it for ovs-vsctl to connect to.
5m4_define([OVS_VSCTL_SETUP],
24c8ae53 6 [OVSDB_INIT([db])
77a922c7 7 AT_CHECK([ovsdb-server --detach --no-chdir --pidfile="`pwd`"/pid --remote=punix:socket --unixctl="`pwd`"/unixctl db >/dev/null 2>&1], [0], [ignore], [ignore])])
c75d1511
BP
8
9dnl OVS_VSCTL_CLEANUP
10dnl
11dnl Kills off the database server.
028cbd99 12m4_define([OVS_VSCTL_CLEANUP], [OVSDB_SERVER_SHUTDOWN])
c75d1511 13
3b135da3
BP
14dnl RUN_OVS_VSCTL(COMMAND, ...)
15dnl
c75d1511 16dnl Executes each ovs-vsctl COMMAND.
3b135da3 17m4_define([RUN_OVS_VSCTL],
fba6bd1d 18 [m4_foreach([command], [$@], [ovs-vsctl --no-wait -vreconnect:emer --db=unix:socket command
460aad80
BP
19])])
20m4_define([RUN_OVS_VSCTL_ONELINE],
fba6bd1d 21 [m4_foreach([command], [$@], [ovs-vsctl --no-wait -vreconnect:emer --db=unix:socket --oneline -- command
3b135da3
BP
22])])
23
4d14e30f
BP
24dnl RUN_OVS_VSCTL_TOGETHER(COMMAND, ...)
25dnl
c75d1511 26dnl Executes each ovs-vsctl COMMAND in a single run of ovs-vsctl.
4d14e30f 27m4_define([RUN_OVS_VSCTL_TOGETHER],
fba6bd1d 28 [ovs-vsctl --no-wait -vreconnect:emer --db=unix:socket --oneline dnl
460aad80 29m4_foreach([command], [$@], [ -- command])])
4d14e30f 30
8e58fa9a 31dnl CHECK_BRIDGES([BRIDGE, PARENT, VLAN], ...)
3b135da3
BP
32dnl
33dnl Verifies that "ovs-vsctl list-br" prints the specified list of bridges,
8e58fa9a
BP
34dnl which must be in alphabetical order. Also checks that each BRIDGE has the
35dnl specified PARENT and is on the given VLAN.
36m4_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 55m4_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.
a128bd8c 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
85dnl CHECK_PORTS(BRIDGE, PORT[, PORT...])
86dnl
87dnl Verifies that "ovs-vsctl list-ports BRIDGE" prints the specified
88dnl list of ports, which must be in alphabetical order. Also checks
89dnl that "ovs-vsctl port-to-br" reports that each port is
90dnl in BRIDGE.
91m4_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 113 m4_foreach(
a128bd8c 114 [port], m4_cdr($@),
3b135da3 115 [AT_CHECK([RUN_OVS_VSCTL([[port-to-br] port])], [0], [$1
c75d1511 116], [], [OVS_VSCTL_CLEANUP])])])
3b135da3
BP
117
118dnl CHECK_IFACES(BRIDGE, IFACE[, IFACE...])
119dnl
120dnl Verifies that "ovs-vsctl list-ifaces BRIDGE" prints the specified
121dnl list of ifaces, which must be in alphabetical order. Also checks
122dnl that "ovs-vsctl iface-to-br" reports that each interface is
123dnl in BRIDGE.
124m4_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 136 m4_foreach(
a128bd8c 137 [iface], m4_cdr($@),
3b135da3 138 [AT_CHECK([RUN_OVS_VSCTL([[iface-to-br] iface])], [0], [$1
c75d1511
BP
139],
140 [], [OVS_VSCTL_CLEANUP])])])
3b135da3 141
fba6bd1d
BP
142dnl ----------------------------------------------------------------------
143AT_BANNER([ovs-vsctl unit tests])
144
145AT_SETUP([ovs-vsctl connection retry])
146OVS_RUNDIR=$PWD; export OVS_RUNDIR
147
148dnl Without --retry, there should be no retry for active connections.
149AT_CHECK([ovs-vsctl --db=unix:foo --timeout=10 -vreconnect:emer -- init],
150 [1], [], [stderr])
151AT_CHECK([[sed 's/([^()]*)/(...reason...)/' stderr]], [0],
152 [ovs-vsctl: unix:foo: database connection failed (...reason...)
153])
154
155dnl With --retry, we should retry for active connections.
156AT_CHECK(
157 [ovs-vsctl --db=unix:foo --timeout=1 --retry -vreconnect:emer -vPATTERN:console:'%c|%p|%m' -- init
158 echo $? > status],
159 [0], [], [stderr])
160AT_CHECK([grep -c 'terminating with signal' stderr], [0], [1
161])
9e784ba5
GS
162if test "$IS_WIN32" = "yes"; then
163 AT_CHECK([cat status], [0], [3
fba6bd1d 164])
9e784ba5
GS
165else
166 # 128 + SIGALRM
167 AT_CHECK([cat status], [0], [142
168])
169fi
fba6bd1d
BP
170
171dnl Without --retry, we should retry for passive connections.
172AT_CHECK(
173 [ovs-vsctl --db=punix:foo --timeout=1 -vreconnect:emer -vPATTERN:console:'%c|%p|%m' -- init
174 echo $? > status],
175 [0], [], [stderr])
176AT_CHECK([grep -c 'terminating with signal' stderr], [0], [1
177])
9e784ba5
GS
178if test "$IS_WIN32" = "yes"; then
179 AT_CHECK([cat status], [0], [3
180])
181else
182 # 128 + SIGALRM
183 AT_CHECK([cat status], [0], [142
fba6bd1d 184])
9e784ba5 185fi
fba6bd1d
BP
186AT_CLEANUP
187
8e58fa9a
BP
188dnl ----------------------------------------------------------------------
189AT_BANNER([ovs-vsctl unit tests -- real bridges])
190
3b135da3
BP
191AT_SETUP([add-br a])
192AT_KEYWORDS([ovs-vsctl])
c75d1511
BP
193OVS_VSCTL_SETUP
194AT_CHECK([RUN_OVS_VSCTL([add-br a])], [0], [], [], [OVS_VSCTL_CLEANUP])
8e58fa9a 195CHECK_BRIDGES([a, a, 0])
3b135da3
BP
196CHECK_PORTS([a])
197CHECK_IFACES([a])
c75d1511 198OVS_VSCTL_CLEANUP
3b135da3
BP
199AT_CLEANUP
200
1125a1b9
BP
201AT_SETUP([add-br a, add-br a])
202AT_KEYWORDS([ovs-vsctl])
c75d1511
BP
203OVS_VSCTL_SETUP
204AT_CHECK([RUN_OVS_VSCTL([add-br a])], [0], [], [], [OVS_VSCTL_CLEANUP])
1125a1b9
BP
205AT_CHECK([RUN_OVS_VSCTL([add-br a])], [1], [],
206 [ovs-vsctl: cannot create a bridge named a because a bridge named a already exists
c75d1511
BP
207], [OVS_VSCTL_CLEANUP])
208OVS_VSCTL_CLEANUP
1125a1b9
BP
209AT_CLEANUP
210
3b135da3
BP
211AT_SETUP([add-br a, add-br b])
212AT_KEYWORDS([ovs-vsctl])
c75d1511
BP
213OVS_VSCTL_SETUP
214AT_CHECK([RUN_OVS_VSCTL([add-br a], [add-br b])], [0], [], [],
215 [OVS_VSCTL_CLEANUP])
aeee85aa
BP
216AT_CHECK([RUN_OVS_VSCTL([--may-exist add-br a b 9])], [1], [],
217 [ovs-vsctl: "--may-exist add-br a b 9" but a is not a VLAN bridge
218],
219 [OVS_VSCTL_CLEANUP])
8e58fa9a 220CHECK_BRIDGES([a, a, 0], [b, b, 0])
3b135da3
BP
221CHECK_PORTS([a])
222CHECK_IFACES([a])
223CHECK_PORTS([b])
224CHECK_IFACES([b])
c75d1511 225OVS_VSCTL_CLEANUP
3b135da3
BP
226AT_CLEANUP
227
228AT_SETUP([add-br a, add-br b, del-br a])
229AT_KEYWORDS([ovs-vsctl])
c75d1511
BP
230OVS_VSCTL_SETUP
231AT_CHECK([RUN_OVS_VSCTL([add-br a], [add-br b], [del-br a])], [0], [], [],
232 [OVS_VSCTL_CLEANUP])
8e58fa9a 233CHECK_BRIDGES([b, b, 0])
3b135da3
BP
234CHECK_PORTS([b])
235CHECK_IFACES([b])
c75d1511 236OVS_VSCTL_CLEANUP
3b135da3
BP
237AT_CLEANUP
238
28a14bf3
EJ
239AT_SETUP([add-br a, del-br a, add-br a])
240AT_KEYWORDS([ovs-vsctl])
241OVS_VSCTL_SETUP
242AT_CHECK([RUN_OVS_VSCTL_TOGETHER(
243 [add-br a],
244 [del-br a],
245 [add-br a],
246 [set Interface a other_config:key=value],
247 [get Interface a other_config:key])], [0], [
248
249
250
251value
252], [], [OVS_VSCTL_CLEANUP])
253CHECK_BRIDGES([a, a, 0])
254CHECK_PORTS([a])
255CHECK_IFACES([a])
256OVS_VSCTL_CLEANUP
257AT_CLEANUP
258
2792c2ad
BP
259AT_SETUP([add-br a, add-port a a1, add-port a a2])
260AT_KEYWORDS([ovs-vsctl])
c75d1511 261OVS_VSCTL_SETUP
2792c2ad 262AT_CHECK([RUN_OVS_VSCTL(
dfbe07ba 263 [add-br a],
460aad80 264 [--if-exists del-br b],
2792c2ad 265 [add-port a a1],
c75d1511 266 [add-port a a2])], [0], [], [], [OVS_VSCTL_CLEANUP])
2792c2ad
BP
267CHECK_BRIDGES([a, a, 0])
268CHECK_PORTS([a], [a1], [a2])
269CHECK_IFACES([a], [a1], [a2])
c75d1511 270OVS_VSCTL_CLEANUP
2792c2ad
BP
271AT_CLEANUP
272
1125a1b9
BP
273AT_SETUP([add-br a, add-port a a1, add-port a a1])
274AT_KEYWORDS([ovs-vsctl])
c75d1511 275OVS_VSCTL_SETUP
1125a1b9 276AT_CHECK([RUN_OVS_VSCTL(
a128bd8c 277 [add-br a],
c75d1511 278 [add-port a a1])], [0], [], [], [OVS_VSCTL_CLEANUP])
1125a1b9
BP
279AT_CHECK([RUN_OVS_VSCTL([add-port a a1])], [1], [],
280 [ovs-vsctl: cannot create a port named a1 because a port named a1 already exists on bridge a
c75d1511
BP
281], [OVS_VSCTL_CLEANUP])
282OVS_VSCTL_CLEANUP
1125a1b9
BP
283AT_CLEANUP
284
3b135da3
BP
285AT_SETUP([add-br a b, add-port a a1, add-port b b1, del-br a])
286AT_KEYWORDS([ovs-vsctl])
c75d1511 287OVS_VSCTL_SETUP
4d14e30f 288AT_CHECK([RUN_OVS_VSCTL_TOGETHER(
a128bd8c
AW
289 [add-br a],
290 [add-br b],
3b135da3
BP
291 [add-port a a1],
292 [add-port b b1],
460aad80
BP
293 [--if-exists del-port b b2],
294 [del-br a])], [0], [
295
296
297
298
299
300], [], [OVS_VSCTL_CLEANUP])
8e58fa9a 301CHECK_BRIDGES([b, b, 0])
3b135da3
BP
302CHECK_PORTS([b], [b1])
303CHECK_IFACES([b], [b1])
c75d1511 304OVS_VSCTL_CLEANUP
3b135da3
BP
305AT_CLEANUP
306
307AT_SETUP([add-br a, add-bond a bond0 a1 a2 a3])
308AT_KEYWORDS([ovs-vsctl])
c75d1511 309OVS_VSCTL_SETUP
3b135da3 310AT_CHECK([RUN_OVS_VSCTL(
a128bd8c 311 [add-br a],
c75d1511 312 [add-bond a bond0 a1 a2 a3])], [0], [], [], [OVS_VSCTL_CLEANUP])
bb1c67c8
BP
313AT_CHECK([RUN_OVS_VSCTL([--may-exist add-bond a bond0 a3 a1 a2])], [0], [], [],
314 [OVS_VSCTL_CLEANUP])
a128bd8c 315AT_CHECK([RUN_OVS_VSCTL([--may-exist add-bond a bond0 a2 a1])], [1], [],
bb1c67c8
BP
316 [ovs-vsctl: "--may-exist add-bond a bond0 a2 a1" but bond0 actually has interface(s) a1, a2, a3
317],
318 [OVS_VSCTL_CLEANUP])
8e58fa9a 319CHECK_BRIDGES([a, a, 0])
3b135da3
BP
320CHECK_PORTS([a], [bond0])
321CHECK_IFACES([a], [a1], [a2], [a3])
c75d1511 322OVS_VSCTL_CLEANUP
3b135da3
BP
323AT_CLEANUP
324
325AT_SETUP([add-br a b, add-port a a1, add-port b b1, del-port a a1])
326AT_KEYWORDS([ovs-vsctl])
c75d1511 327OVS_VSCTL_SETUP
3b135da3 328AT_CHECK([RUN_OVS_VSCTL(
a128bd8c
AW
329 [add-br a],
330 [add-br b],
18b239f5
BP
331 [add-port a a1 tag=9],
332 [get port a1 tag],
bb1c67c8 333 [--may-exist add-port b b1],
18b239f5
BP
334 [del-port a a1])], [0], [9
335], [], [OVS_VSCTL_CLEANUP])
bb1c67c8
BP
336AT_CHECK([RUN_OVS_VSCTL([--may-exist add-port b b1])], [0], [], [],
337 [OVS_VSCTL_CLEANUP])
89f3c258
BP
338AT_CHECK([RUN_OVS_VSCTL([del-port a])], [1], [],
339 [ovs-vsctl: cannot delete port a because it is the local port for bridge a (deleting this port requires deleting the entire bridge)
340],
341 [OVS_VSCTL_CLEANUP])
25a27ba0
BP
342AT_CHECK([RUN_OVS_VSCTL([--if-exists del-port a])], [0], [], [],
343 [OVS_VSCTL_CLEANUP])
a128bd8c 344AT_CHECK([RUN_OVS_VSCTL([--may-exist add-port a b1])], [1], [],
bb1c67c8
BP
345 [ovs-vsctl: "--may-exist add-port a b1" but b1 is actually attached to bridge b
346],
347 [OVS_VSCTL_CLEANUP])
8e58fa9a 348CHECK_BRIDGES([a, a, 0], [b, b, 0])
3b135da3
BP
349CHECK_PORTS([a])
350CHECK_IFACES([a])
351CHECK_PORTS([b], [b1])
352CHECK_IFACES([b], [b1])
c75d1511 353OVS_VSCTL_CLEANUP
3b135da3
BP
354AT_CLEANUP
355
3d1b9636 356AT_SETUP([add-br a, add-bond a bond0 a1 a2 a3, del-port bond0])
3b135da3 357AT_KEYWORDS([ovs-vsctl])
c75d1511 358OVS_VSCTL_SETUP
4d14e30f 359AT_CHECK([RUN_OVS_VSCTL_TOGETHER(
a128bd8c 360 [add-br a],
18b239f5
BP
361 [add-bond a bond0 a1 a2 a3 tag=9],
362 [get Port bond0 tag],
460aad80
BP
363 [del-port bond0])], [0], [
364
18b239f5 3659
460aad80
BP
366
367], [], [OVS_VSCTL_CLEANUP])
8e58fa9a 368CHECK_BRIDGES([a, a, 0])
3b135da3 369CHECK_PORTS([a])
c75d1511 370OVS_VSCTL_CLEANUP
3b135da3
BP
371AT_CLEANUP
372
457e1eb0
BP
373AT_SETUP([external IDs])
374AT_KEYWORDS([ovs-vsctl])
375OVS_VSCTL_SETUP
fbd8715e 376AT_CHECK([RUN_OVS_VSCTL_ONELINE(
a128bd8c 377 [add-br a],
457e1eb0
BP
378 [add-port a a1],
379 [add-bond a bond0 a2 a3],
380 [br-set-external-id a key0 value0],
e328faad
BP
381 [set port a1 external-ids:key1=value1],
382 [set interface a2 external-ids:key2=value2],
383 [set interface a2 external-ids:key3=value3],
384 [set interface a3 external-ids:key4=value4],
457e1eb0
BP
385 [br-get-external-id a],
386 [br-get-external-id a key0],
387 [br-get-external-id a key1],
388 [br-set-external-id a key0 othervalue],
389 [br-get-external-id a],
390 [br-set-external-id a key0],
391 [br-get-external-id a],
e328faad
BP
392 [get port a1 external-ids],
393 [get interface a2 external-ids],
394 [get interface a3 external-ids])], [0], [
457e1eb0
BP
395
396
397
398
399
400
401
402key0=value0
403value0
404
405
406key0=othervalue
407
408
e328faad
BP
409{"key1"="value1"}
410{"key2"="value2", "key3"="value3"}
411{"key4"="value4"}
457e1eb0
BP
412], [], [OVS_VSCTL_CLEANUP])
413AT_CHECK([RUN_OVS_VSCTL_TOGETHER(
460aad80 414 [br-get-external-id a],
e328faad
BP
415 [get port a1 external-ids],
416 [get interface a2 external-ids],
417 [get interface a3 external-ids])], [0],
457e1eb0 418[
e328faad
BP
419{"key1"="value1"}
420{"key2"="value2", "key3"="value3"}
421{"key4"="value4"}
457e1eb0
BP
422], [], [OVS_VSCTL_CLEANUP])
423CHECK_BRIDGES([a, a, 0])
424CHECK_PORTS([a], [a1], [bond0])
425CHECK_IFACES([a], [a1], [a2], [a3])
426OVS_VSCTL_CLEANUP
427AT_CLEANUP
428
76ce9432
BP
429AT_SETUP([controllers])
430AT_KEYWORDS([controller ovs-vsctl])
431OVS_VSCTL_SETUP
432AT_CHECK([RUN_OVS_VSCTL_TOGETHER(
e44768b7 433 [add-br br0],
76ce9432 434
76ce9432 435 [get-controller br0],
76ce9432 436 [set-controller br0 tcp:4.5.6.7],
76ce9432
BP
437 [get-controller br0],
438
439 [del-controller br0],
76ce9432
BP
440 [get-controller br0],
441
442 [set-controller br0 tcp:8.9.10.11 tcp:5.4.3.2],
76ce9432
BP
443 [get-controller br0])], [0], [
444
76ce9432 445
76ce9432
BP
446tcp:4.5.6.7
447
448
449
76ce9432
BP
450tcp:5.4.3.2\ntcp:8.9.10.11
451], [], [OVS_VSCTL_CLEANUP])
452OVS_VSCTL_CLEANUP
453AT_CLEANUP
454
8e58fa9a 455dnl ----------------------------------------------------------------------
5341d046 456dnl OVS_VSCTL_SETUP_SIMPLE_FAKE_CONF([VLAN])
dfbe07ba
BP
457m4_define([OVS_VSCTL_SETUP_SIMPLE_FAKE_CONF],
458 [AT_CHECK(
459 [RUN_OVS_VSCTL(
460 [add-br xenbr0],
aeee85aa 461 [--may-exist add-br xenbr0],
dfbe07ba 462 [add-port xenbr0 eth0],
bb1c67c8 463 [--may-exist add-port xenbr0 eth0],
5341d046
BP
464 [add-br xapi1 xenbr0 $1],
465 [--may-exist add-br xapi1 xenbr0 $1],
466 [add-port xapi1 eth0.$1])],
dfbe07ba 467 [0], [], [], [OVS_VSCTL_CLEANUP])])
3b135da3 468
5341d046
BP
469dnl OVS_VSCTL_FAKE_BRIDGE_TESTS([VLAN])
470m4_define([OVS_VSCTL_FAKE_BRIDGE_TESTS], [
471AT_BANNER([ovs-vsctl unit tests -- fake bridges (VLAN $1)])
472
473AT_SETUP([simple fake bridge (VLAN $1)])
3b135da3 474AT_KEYWORDS([ovs-vsctl fake-bridge])
c75d1511 475OVS_VSCTL_SETUP
5341d046 476OVS_VSCTL_SETUP_SIMPLE_FAKE_CONF([$1])
aeee85aa 477AT_CHECK([RUN_OVS_VSCTL([--may-exist add-br xapi1])], [1], [],
5341d046 478 [ovs-vsctl: "--may-exist add-br xapi1" but xapi1 is a VLAN bridge for VLAN $1
aeee85aa 479], [OVS_VSCTL_CLEANUP])
5341d046
BP
480AT_CHECK([RUN_OVS_VSCTL([--may-exist add-br xapi1 xxx $1])], [1], [],
481 [ovs-vsctl: "--may-exist add-br xapi1 xxx $1" but xapi1 has the wrong parent xenbr0
aeee85aa
BP
482], [OVS_VSCTL_CLEANUP])
483AT_CHECK([RUN_OVS_VSCTL([--may-exist add-br xapi1 xenbr0 10])], [1], [],
5341d046 484 [ovs-vsctl: "--may-exist add-br xapi1 xenbr0 10" but xapi1 is a VLAN bridge for the wrong VLAN $1
aeee85aa 485], [OVS_VSCTL_CLEANUP])
5dd9826c
BP
486AT_CHECK([RUN_OVS_VSCTL([--may-exist add-br dup xenbr0 $1])], [1], [],
487 [ovs-vsctl: bridge xenbr0 already has a child VLAN bridge xapi1 on VLAN $1
488], [OVS_VSCTL_CLEANUP])
5341d046 489CHECK_BRIDGES([xapi1, xenbr0, $1], [xenbr0, xenbr0, 0])
3b135da3
BP
490CHECK_PORTS([xenbr0], [eth0])
491CHECK_IFACES([xenbr0], [eth0])
5341d046
BP
492CHECK_PORTS([xapi1], [eth0.$1])
493CHECK_IFACES([xapi1], [eth0.$1])
c75d1511 494OVS_VSCTL_CLEANUP
3b135da3
BP
495AT_CLEANUP
496
515d830a
JP
497AT_SETUP([list bridges -- real and fake (VLAN $1)])
498AT_KEYWORDS([ovs-vsctl fake-bridge])
499OVS_VSCTL_SETUP
500OVS_VSCTL_SETUP_SIMPLE_FAKE_CONF([$1])
501AT_CHECK([RUN_OVS_VSCTL_ONELINE([-- list-br])], [0],
502 [xapi1\nxenbr0
503], [], [OVS_VSCTL_CLEANUP])
504AT_CHECK([RUN_OVS_VSCTL_ONELINE([-- --real list-br])], [0],
505 [xenbr0
506], [], [OVS_VSCTL_CLEANUP])
507AT_CHECK([RUN_OVS_VSCTL_ONELINE([-- --fake list-br])], [0],
508 [xapi1
509], [], [OVS_VSCTL_CLEANUP])
510OVS_VSCTL_CLEANUP
511AT_CLEANUP
512
5341d046 513AT_SETUP([simple fake bridge + del-br fake bridge (VLAN $1)])
3b135da3 514AT_KEYWORDS([ovs-vsctl fake-bridge])
c75d1511 515OVS_VSCTL_SETUP
5341d046 516OVS_VSCTL_SETUP_SIMPLE_FAKE_CONF([$1])
dfbe07ba 517AT_CHECK([RUN_OVS_VSCTL([del-br xapi1])], [0], [], [], [OVS_VSCTL_CLEANUP])
8e58fa9a 518CHECK_BRIDGES([xenbr0, xenbr0, 0])
3b135da3
BP
519CHECK_PORTS([xenbr0], [eth0])
520CHECK_IFACES([xenbr0], [eth0])
c75d1511 521OVS_VSCTL_CLEANUP
3b135da3
BP
522AT_CLEANUP
523
5341d046 524AT_SETUP([simple fake bridge + del-br real bridge (VLAN $1)])
3b135da3 525AT_KEYWORDS([ovs-vsctl fake-bridge])
c75d1511 526OVS_VSCTL_SETUP
5341d046 527OVS_VSCTL_SETUP_SIMPLE_FAKE_CONF([$1])
dfbe07ba 528AT_CHECK([RUN_OVS_VSCTL([del-br xenbr0])], [0], [], [], [OVS_VSCTL_CLEANUP])
3b135da3 529CHECK_BRIDGES
c75d1511 530OVS_VSCTL_CLEANUP
3b135da3
BP
531AT_CLEANUP
532
5341d046 533AT_SETUP([simple fake bridge + external IDs (VLAN $1)])
457e1eb0
BP
534AT_KEYWORDS([ovs-vsctl fake-bridge])
535OVS_VSCTL_SETUP
5341d046 536OVS_VSCTL_SETUP_SIMPLE_FAKE_CONF([$1])
457e1eb0 537AT_CHECK([RUN_OVS_VSCTL_TOGETHER(
460aad80 538 [br-set-external-id xenbr0 key0 value0],
457e1eb0
BP
539 [br-set-external-id xapi1 key1 value1],
540 [br-get-external-id xenbr0],
541 [br-get-external-id xenbr0 key0],
542 [br-get-external-id xapi1],
543 [br-get-external-id xapi1 key1])], [0], [
544
545key0=value0
546value0
547key1=value1
548value1
549], [], [OVS_VSCTL_CLEANUP])
5341d046 550CHECK_BRIDGES([xapi1, xenbr0, $1], [xenbr0, xenbr0, 0])
457e1eb0
BP
551CHECK_PORTS([xenbr0], [eth0])
552CHECK_IFACES([xenbr0], [eth0])
5341d046
BP
553CHECK_PORTS([xapi1], [eth0.$1])
554CHECK_IFACES([xapi1], [eth0.$1])
457e1eb0
BP
555OVS_VSCTL_CLEANUP
556AT_CLEANUP
5341d046
BP
557]) # OVS_VSCTL_FAKE_BRIDGE_TESTS
558
559OVS_VSCTL_FAKE_BRIDGE_TESTS([9])
560OVS_VSCTL_FAKE_BRIDGE_TESTS([0])
457e1eb0 561
5341d046 562dnl OVS_VSCTL_SETUP_BOND_FAKE_CONF([VLAN])
dfbe07ba
BP
563m4_define([OVS_VSCTL_SETUP_BOND_FAKE_CONF],
564 [AT_CHECK(
565 [RUN_OVS_VSCTL(
566 [add-br xapi1],
567 [add-bond xapi1 bond0 eth0 eth1],
5341d046
BP
568 [add-br xapi2 xapi1 $1],
569 [add-port xapi2 bond0.$1])],
dfbe07ba 570 [0], [], [], [OVS_VSCTL_CLEANUP])])
3b135da3
BP
571
572AT_SETUP([fake bridge on bond])
573AT_KEYWORDS([ovs-vsctl fake-bridge])
c75d1511 574OVS_VSCTL_SETUP
5341d046 575OVS_VSCTL_SETUP_BOND_FAKE_CONF([11])
8e58fa9a 576CHECK_BRIDGES([xapi1, xapi1, 0], [xapi2, xapi1, 11])
3b135da3
BP
577CHECK_PORTS([xapi1], [bond0])
578CHECK_IFACES([xapi1], [eth0], [eth1])
579CHECK_PORTS([xapi2], [bond0.11])
580CHECK_IFACES([xapi2], [bond0.11])
c75d1511 581OVS_VSCTL_CLEANUP
3b135da3
BP
582AT_CLEANUP
583
584AT_SETUP([fake bridge on bond + del-br fake bridge])
585AT_KEYWORDS([ovs-vsctl fake-bridge])
c75d1511 586OVS_VSCTL_SETUP
5341d046 587OVS_VSCTL_SETUP_BOND_FAKE_CONF([11])
460aad80 588AT_CHECK([RUN_OVS_VSCTL_ONELINE([del-br xapi2])], [0], [
dfbe07ba 589], [], [OVS_VSCTL_CLEANUP])
8e58fa9a 590CHECK_BRIDGES([xapi1, xapi1, 0])
3b135da3
BP
591CHECK_PORTS([xapi1], [bond0])
592CHECK_IFACES([xapi1], [eth0], [eth1])
c75d1511 593OVS_VSCTL_CLEANUP
3b135da3
BP
594AT_CLEANUP
595
596AT_SETUP([fake bridge on bond + del-br real bridge])
597AT_KEYWORDS([ovs-vsctl fake-bridge])
dfbe07ba 598OVS_VSCTL_SETUP
5341d046 599OVS_VSCTL_SETUP_BOND_FAKE_CONF([11])
3b135da3
BP
600AT_CHECK([RUN_OVS_VSCTL([del-br xapi1])])
601CHECK_BRIDGES
c75d1511 602OVS_VSCTL_CLEANUP
3b135da3 603AT_CLEANUP
5c414a2e 604
24b8b259
AE
605dnl ----------------------------------------------------------------------
606AT_BANNER([ovs-vsctl unit tests -- manager commands])
607
608AT_SETUP([managers])
609AT_KEYWORDS([manager ovs-vsctl])
610OVS_VSCTL_SETUP
611AT_CHECK([RUN_OVS_VSCTL_TOGETHER(
612 [del-manager],
613 [get-manager],
614 [set-manager tcp:4.5.6.7],
615 [get-manager],
616 [set-manager tcp:8.9.10.11 tcp:5.4.3.2],
617 [get-manager],
618 [del-manager],
619 [get-manager])], [0], [
620
621
622tcp:4.5.6.7
623
624tcp:5.4.3.2\ntcp:8.9.10.11
625
626
627], [], [OVS_VSCTL_CLEANUP])
628OVS_VSCTL_CLEANUP
629AT_CLEANUP
630
5c414a2e
BP
631dnl ----------------------------------------------------------------------
632AT_BANNER([ovs-vsctl unit tests -- database commands])
633
634AT_SETUP([database commands -- positive checks])
635AT_KEYWORDS([ovs-vsctl])
636OVS_VSCTL_SETUP
c5f341ab 637AT_CHECK(
ff495b63
BP
638 [RUN_OVS_VSCTL_TOGETHER([--id=@br0 create bridge name=br123],
639 [set b br123 name=br0],
c5f341ab 640 [set o . bridges=@br0])],
5c414a2e
BP
641 [0], [stdout], [], [OVS_VSCTL_CLEANUP])
642cp stdout out1
581d7da8 643AT_CHECK([RUN_OVS_VSCTL([list bridge], [get bridge br0 _uuid])],
5c414a2e
BP
644 [0], [stdout], [], [OVS_VSCTL_CLEANUP])
645cp stdout out2
a128bd8c 646AT_CHECK([${PERL} $srcdir/uuidfilt.pl out1 out2], [0],
5c414a2e 647 [[<0>
c5f341ab 648
ff495b63 649
bd76d25d
BP
650_uuid : <0>
651controller : []
652datapath_id : []
653datapath_type : ""
b5cbbcf6 654datapath_version : ""
bd76d25d 655external_ids : {}
31681a5d 656fail_mode : []
bd76d25d 657flood_vlans : []
254750ce 658flow_tables : {}
29089a54 659ipfix : []
dc2b70ba 660mcast_snooping_enable: false
bd76d25d
BP
661mirrors : []
662name : "br0"
663netflow : []
664other_config : {}
665ports : []
7beaa082 666protocols : []
9efd308e
DV
667rstp_enable : false
668rstp_status : {}
bd76d25d 669sflow : []
21f7563c
JP
670status : {}
671stp_enable : false
f40a9b61 672<0>
5c414a2e 673]], [ignore], [test ! -e pid || kill `cat pid`])
9591fefe 674AT_CHECK(
581d7da8 675 [RUN_OVS_VSCTL([--columns=fail_mode,name,datapath_type list bridge])],
9591fefe
BP
676 [0],
677 [[fail_mode : []
678name : "br0"
679datapath_type : ""
680]], [ignore], [test ! -e pid || kill `cat pid`])
0a140468 681AT_CHECK(
581d7da8 682 [RUN_OVS_VSCTL([--columns=fail_mode,name,datapath_type find bridge])],
0a140468
BP
683 [0],
684 [[fail_mode : []
685name : "br0"
686datapath_type : ""
687]], [ignore], [test ! -e pid || kill `cat pid`])
c5f341ab 688AT_CHECK([
581d7da8
AA
689 RUN_OVS_VSCTL_TOGETHER([--id=@br1 create bridge name=br1 datapath_type="foo"],
690 [--id=@br2 create bridge name=br2 external-ids:bar=quux],
c5f341ab 691 [add o . bridges @br1 @br2])],
0a140468
BP
692 [0], [stdout], [], [OVS_VSCTL_CLEANUP])
693AT_CHECK(
581d7da8 694 [RUN_OVS_VSCTL([--columns=name find bridge datapath_type!=foo])], [0], [stdout],
0a140468
BP
695 [ignore], [test ! -e pid || kill `cat pid`])
696AT_CHECK([sed -n '/./p' stdout | sort], [0],
697 [[name : "br0"
698name : "br2"
699]])
5c414a2e
BP
700AT_CHECK(
701 [RUN_OVS_VSCTL(
702 [set bridge br0 \
703 'other_config:datapath_id="0123456789ab"' \
704 'other_config:hwaddr="00:11:22:33:44:55"' \
d3f82921 705 'external-ids={"uuids"="9c45f225-a7cf-439d-976d-83db6271fda1"}' -- \
e44768b7 706 add bridge br0 external_ids '"roles"="local; remote; cloud"'])],
5c414a2e 707 [0], [], [], [OVS_VSCTL_CLEANUP])
e44768b7 708AT_CHECK([RUN_OVS_VSCTL_ONELINE([get bridge br0 other_config external-ids])],
d3f82921 709 [0], [{datapath_id="0123456789ab", hwaddr="00:11:22:33:44:55"}\n{roles="local; remote; cloud", uuids="9c45f225-a7cf-439d-976d-83db6271fda1"}
5c414a2e 710], [], [OVS_VSCTL_CLEANUP])
e44768b7 711AT_CHECK([RUN_OVS_VSCTL([get bridge br0 other_config:hwaddr -- --if-exists get bridge br0 other-config:nonexistent])],
5c414a2e
BP
712 [0], ["00:11:22:33:44:55"
713
714], [], [OVS_VSCTL_CLEANUP])
581d7da8 715AT_CHECK([RUN_OVS_VSCTL([remove bridge br0 other_config hwaddr 'datapath_id=""' -- get bridge br0 other_config])],
5c414a2e
BP
716 [0], [{datapath_id="0123456789ab"}
717], [], [OVS_VSCTL_CLEANUP])
581d7da8 718AT_CHECK([RUN_OVS_VSCTL([remove bridge br0 other_config 'datapath_id="0123456789ab"' -- get bridge br0 other_config])],
5c414a2e
BP
719 [0], [{}
720], [], [OVS_VSCTL_CLEANUP])
581d7da8 721AT_CHECK([RUN_OVS_VSCTL([clear bridge br0 external-ids -- get bridge br0 external_ids])],
5c414a2e
BP
722 [0], [{}
723], [], [OVS_VSCTL_CLEANUP])
581d7da8
AA
724AT_CHECK([RUN_OVS_VSCTL_TOGETHER([destroy bridge br0],
725 [destroy bridge br1],
726 [destroy bridge br2],
c5f341ab 727 [clear o . bridges])],
5c414a2e 728 [0], [stdout], [], [OVS_VSCTL_CLEANUP])
581d7da8 729AT_CHECK([RUN_OVS_VSCTL([list bridge])],
5c414a2e 730 [0], [], [], [OVS_VSCTL_CLEANUP])
581d7da8 731AT_CHECK([RUN_OVS_VSCTL([--if-exists get bridge x datapath_id])],
e99d41f7 732 [0], [], [], [OVS_VSCTL_CLEANUP])
581d7da8 733AT_CHECK([RUN_OVS_VSCTL([--if-exists list bridge x])],
e99d41f7
BP
734 [0], [], [], [OVS_VSCTL_CLEANUP])
735AT_CHECK([RUN_OVS_VSCTL([--if-exists set controller x connection_mode=standalone])],
736 [0], [], [], [OVS_VSCTL_CLEANUP])
737AT_CHECK(
738 [RUN_OVS_VSCTL([--if-exists remove netflow x targets '"1.2.3.4:567"'])],
739 [0], [], [], [OVS_VSCTL_CLEANUP])
740AT_CHECK(
741 [RUN_OVS_VSCTL([--if-exists clear netflow x targets])],
742 [0], [], [], [OVS_VSCTL_CLEANUP])
5c414a2e
BP
743OVS_VSCTL_CLEANUP
744AT_CLEANUP
745
746AT_SETUP([database commands -- negative checks])
747AT_KEYWORDS([ovs-vsctl])
748OVS_VSCTL_SETUP
401d5a6d
BP
749
750AT_CHECK([ovs-vsctl --may-exist],
751 [1], [ignore], [ovs-vsctl: missing command name (use --help for help)
752], [OVS_VSCTL_CLEANUP])
753AT_CHECK([ovs-vsctl --may-exist --],
754 [1], [ignore], [ovs-vsctl: missing command name (use --help for help)
755], [OVS_VSCTL_CLEANUP])
756AT_CHECK([ovs-vsctl -- --may-exist],
757 [1], [ignore], [ovs-vsctl: missing command name (use --help for help)
758], [OVS_VSCTL_CLEANUP])
759
c5f341ab 760AT_CHECK([RUN_OVS_VSCTL([add-br br0])],
5c414a2e 761 [0], [ignore], [], [OVS_VSCTL_CLEANUP])
a128bd8c 762AT_CHECK([RUN_OVS_VSCTL([add-br br1])],
5c414a2e 763 [0], [ignore], [], [OVS_VSCTL_CLEANUP])
a128bd8c 764AT_CHECK([RUN_OVS_VSCTL([set-controller br1 tcp:127.0.0.1])],
5c414a2e 765 [0], [ignore], [], [OVS_VSCTL_CLEANUP])
c5f341ab 766AT_CHECK([
eed8052c 767 RUN_OVS_VSCTL_TOGETHER([--id=@n create netflow targets='"1.2.3.4:567"'],
c5f341ab 768 [set bridge br0 netflow=@n])],
5c414a2e
BP
769 [0], [stdout], [], [OVS_VSCTL_CLEANUP])
770cp stdout netflow-uuid
eed8052c 771AT_CHECK([RUN_OVS_VSCTL([list netflow `cat netflow-uuid`])],
5c414a2e 772 [0], [stdout], [], [OVS_VSCTL_CLEANUP])
a128bd8c 773AT_CHECK([${PERL} $srcdir/uuidfilt.pl netflow-uuid stdout], [0],
5c414a2e 774 [[<0>
c5f341ab 775
bd76d25d
BP
776_uuid : <0>
777active_timeout : 0
778add_id_to_interface : false
779engine_id : []
780engine_type : []
13008eb3 781external_ids : {}
bd76d25d 782targets : ["1.2.3.4:567"]
5c414a2e 783]], [ignore], [test ! -e pid || kill `cat pid`])
a128bd8c 784AT_CHECK([RUN_OVS_VSCTL([list interx x])],
5c414a2e
BP
785 [1], [], [ovs-vsctl: unknown table "interx"
786], [OVS_VSCTL_CLEANUP])
581d7da8 787AT_CHECK([RUN_OVS_VSCTL([list bridge x])],
5c414a2e
BP
788 [1], [], [ovs-vsctl: no row "x" in table Bridge
789], [OVS_VSCTL_CLEANUP])
581d7da8 790AT_CHECK([RUN_OVS_VSCTL([get bridge x datapath_id])],
e99d41f7
BP
791 [1], [], [ovs-vsctl: no row "x" in table Bridge
792], [OVS_VSCTL_CLEANUP])
581d7da8 793AT_CHECK([RUN_OVS_VSCTL([get bridge br0 d])],
5c414a2e
BP
794 [1], [], [ovs-vsctl: Bridge contains more than one column whose name matches "d"
795], [OVS_VSCTL_CLEANUP])
581d7da8 796AT_CHECK([RUN_OVS_VSCTL([get bridge br0 x])],
5c414a2e
BP
797 [1], [], [ovs-vsctl: Bridge does not contain a column whose name matches "x"
798], [OVS_VSCTL_CLEANUP])
581d7da8 799AT_CHECK([RUN_OVS_VSCTL([get bridge br0 :y=z])],
5c414a2e
BP
800 [1], [], [ovs-vsctl: :y=z: missing column name
801], [OVS_VSCTL_CLEANUP])
581d7da8 802AT_CHECK([RUN_OVS_VSCTL([get bridge br0 datapath_id:y=z])],
e89e5374 803 [1], [], [ovs-vsctl: datapath_id:y=z: trailing garbage "=z" in argument
5c414a2e 804], [OVS_VSCTL_CLEANUP])
581d7da8 805AT_CHECK([RUN_OVS_VSCTL([set bridge br0 'datapath_id:y>=z'])],
7db03f7c
BP
806 [1], [], [ovs-vsctl: datapath_id:y>=z: argument does not end in "=" followed by a value.
807], [OVS_VSCTL_CLEANUP])
e99d41f7
BP
808AT_CHECK([RUN_OVS_VSCTL([set controller x connection_mode=standalone])],
809 [1], [], [ovs-vsctl: no row "x" in table Controller
810], [OVS_VSCTL_CLEANUP])
581d7da8 811AT_CHECK([RUN_OVS_VSCTL([wait-until bridge br0 datapath_id:y,z])],
2a9537e2 812 [1], [], [ovs-vsctl: datapath_id:y,z: argument does not end in "=", "!=", "<", ">", "<=", ">=", "{=}", "{!=}", "{<}", "{>}", "{<=}", or "{>=}" followed by a value.
7db03f7c 813], [OVS_VSCTL_CLEANUP])
581d7da8 814AT_CHECK([RUN_OVS_VSCTL([get bridge br0 datapath_id::])],
5c414a2e
BP
815 [1], [], [ovs-vsctl: datapath_id::: trailing garbage ":" in argument
816], [OVS_VSCTL_CLEANUP])
581d7da8 817AT_CHECK([RUN_OVS_VSCTL([get bridge br0 datapath_id:x])],
5c414a2e
BP
818 [1], [], [ovs-vsctl: cannot specify key to get for non-map column datapath_id
819], [OVS_VSCTL_CLEANUP])
581d7da8 820AT_CHECK([RUN_OVS_VSCTL([get bridge br0 external_ids:x])],
5c414a2e
BP
821 [1], [], [ovs-vsctl: no key "x" in Bridge record "br0" column external_ids
822], [OVS_VSCTL_CLEANUP])
581d7da8 823AT_CHECK([RUN_OVS_VSCTL([set bridge br0 flood_vlans=-1])],
bd76d25d 824 [1], [], [ovs-vsctl: constraint violation: -1 is not in the valid range 0 to 4095 (inclusive)
5c414a2e 825], [OVS_VSCTL_CLEANUP])
581d7da8 826AT_CHECK([RUN_OVS_VSCTL([set bridge br0 flood_vlans=4096])],
bd76d25d 827 [1], [], [ovs-vsctl: constraint violation: 4096 is not in the valid range 0 to 4095 (inclusive)
5c414a2e 828], [OVS_VSCTL_CLEANUP])
a128bd8c 829AT_CHECK([RUN_OVS_VSCTL([set c br1 'connection-mode=xyz'])],
bfc96d9b
BP
830 [1], [], [[ovs-vsctl: constraint violation: xyz is not one of the allowed values ([in-band, out-of-band])
831]], [OVS_VSCTL_CLEANUP])
a128bd8c 832AT_CHECK([RUN_OVS_VSCTL([set c br1 connection-mode:x=y])],
5c414a2e
BP
833 [1], [], [ovs-vsctl: cannot specify key to set for non-map column connection_mode
834], [OVS_VSCTL_CLEANUP])
581d7da8 835AT_CHECK([RUN_OVS_VSCTL([add bridge br1 datapath_id x y])],
5c414a2e
BP
836 [1], [], [ovs-vsctl: "add" operation would put 2 values in column datapath_id of table Bridge but the maximum number is 1
837], [OVS_VSCTL_CLEANUP])
a128bd8c 838AT_CHECK([RUN_OVS_VSCTL([remove netflow `cat netflow-uuid` targets '"1.2.3.4:567"'])],
f19f25a4 839 [1], [], [ovs-vsctl: "remove" operation would put 0 values in column targets of table NetFlow but the minimum number is 1
5c414a2e 840], [OVS_VSCTL_CLEANUP])
a128bd8c 841AT_CHECK([RUN_OVS_VSCTL([remove netflow x targets '"1.2.3.4:567"'])],
e99d41f7
BP
842 [1], [], [ovs-vsctl: no row "x" in table NetFlow
843], [OVS_VSCTL_CLEANUP])
844AT_CHECK([RUN_OVS_VSCTL([clear netflow x targets])],
845 [1], [], [ovs-vsctl: no row "x" in table NetFlow
846], [OVS_VSCTL_CLEANUP])
a128bd8c 847AT_CHECK([RUN_OVS_VSCTL([clear netflow `cat netflow-uuid` targets])],
5c414a2e
BP
848 [1], [], [ovs-vsctl: "clear" operation cannot be applied to column targets of table NetFlow, which is not allowed to be empty
849], [OVS_VSCTL_CLEANUP])
581d7da8 850AT_CHECK([RUN_OVS_VSCTL([destroy bridge br2])],
5c414a2e
BP
851 [1], [], [ovs-vsctl: no row "br2" in table Bridge
852], [OVS_VSCTL_CLEANUP])
29089a54 853AT_CHECK([RUN_OVS_VSCTL([add in br1 name x])],
341c4e59
BP
854 [1], [], [ovs-vsctl: cannot modify read-only column name in table Interface
855], [OVS_VSCTL_CLEANUP])
ff495b63 856AT_CHECK([RUN_OVS_VSCTL([set port br0 name=br2])],
341c4e59
BP
857 [1], [], [ovs-vsctl: cannot modify read-only column name in table Port
858], [OVS_VSCTL_CLEANUP])
ff495b63 859AT_CHECK([RUN_OVS_VSCTL([remove bridge br0 name br1])],
341c4e59
BP
860 [1], [], [ovs-vsctl: cannot modify read-only column name in table Bridge
861], [OVS_VSCTL_CLEANUP])
d6d2a5b3
BP
862AT_CHECK([RUN_OVS_VSCTL([remove bridge br1 flood-vlans true])],
863 [1], [], [ovs-vsctl: "true" is not a valid integer
864], [OVS_VSCTL_CLEANUP])
581d7da8 865AT_CHECK([RUN_OVS_VSCTL([clear bridge br1 name])],
341c4e59
BP
866 [1], [], [ovs-vsctl: cannot modify read-only column name in table Bridge
867], [OVS_VSCTL_CLEANUP])
5c414a2e
BP
868OVS_VSCTL_CLEANUP
869AT_CLEANUP
870
2a9537e2
BP
871AT_SETUP([database commands -- conditions])
872AT_KEYWORDS([ovs-vsctl])
0b7140bb 873ON_EXIT([kill `cat pid`])
2a9537e2
BP
874OVS_VSCTL_SETUP
875AT_CHECK(
876 [RUN_OVS_VSCTL_TOGETHER(
877 [add-br br0],
878 [add-br br1], [set bridge br1 flood_vlans=0 other-config:x='""'],
879 [add-br br2], [set bridge br2 flood_vlans=1 other-config:x=y],
880 [add-br br3], [set bridge br3 flood_vlans=0,1 other-config:x=z],
881 [add-br br4], [set bridge br4 flood_vlans=2],
882 [add-br br5], [set bridge br5 flood_vlans=0,2],
883 [add-br br6], [set bridge br6 flood_vlans=1,2],
884 [add-br br7], [set bridge br7 flood_vlans=0,1,2])], [0], [
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899])
900m4_define([VSCTL_CHECK_FIND],
fba6bd1d 901 [AT_CHECK([echo `ovs-vsctl --bare --no-wait -vreconnect:emer --db=unix:socket -- --columns=name find bridge '$1' | sort`], [0], [$2
2a9537e2
BP
902])])
903
904# Arithmetic relational operators without keys.
905VSCTL_CHECK_FIND([flood_vlans=0], [br1])
906VSCTL_CHECK_FIND([flood_vlans=1], [br2])
907VSCTL_CHECK_FIND([flood_vlans=0,2], [br5])
908VSCTL_CHECK_FIND([flood_vlans=0,1,2], [br7])
909VSCTL_CHECK_FIND([flood_vlans=3], [])
910
911VSCTL_CHECK_FIND([flood_vlans!=0], [br0 br2 br3 br4 br5 br6 br7])
912VSCTL_CHECK_FIND([flood_vlans!=1], [br0 br1 br3 br4 br5 br6 br7])
913VSCTL_CHECK_FIND([flood_vlans!=0,2], [br0 br1 br2 br3 br4 br6 br7])
914VSCTL_CHECK_FIND([flood_vlans!=0,1,2], [br0 br1 br2 br3 br4 br5 br6])
915VSCTL_CHECK_FIND([flood_vlans!=3], [br0 br1 br2 br3 br4 br5 br6 br7])
916
917VSCTL_CHECK_FIND([flood_vlans<2], [br0 br1 br2])
918VSCTL_CHECK_FIND([flood_vlans<0,2], [br0 br1 br2 br3 br4])
919VSCTL_CHECK_FIND([flood_vlans>1], [br3 br4 br5 br6 br7])
920VSCTL_CHECK_FIND([flood_vlans>0,1], [br5 br6 br7])
921VSCTL_CHECK_FIND([flood_vlans<=2], [br0 br1 br2 br4])
922VSCTL_CHECK_FIND([flood_vlans<=0,2], [br0 br1 br2 br3 br4 br5])
923VSCTL_CHECK_FIND([flood_vlans>=1], [br2 br3 br4 br5 br6 br7])
924VSCTL_CHECK_FIND([flood_vlans>=0,1], [br3 br5 br6 br7])
925
926# Set relational operators without keys.
927VSCTL_CHECK_FIND([flood_vlans{=}0], [br1])
928VSCTL_CHECK_FIND([flood_vlans{=}1], [br2])
929VSCTL_CHECK_FIND([flood_vlans{=}0,2], [br5])
930VSCTL_CHECK_FIND([flood_vlans{=}0,1,2], [br7])
931VSCTL_CHECK_FIND([flood_vlans{=}3], [])
932
933VSCTL_CHECK_FIND([flood_vlans{!=}0], [br0 br2 br3 br4 br5 br6 br7])
934VSCTL_CHECK_FIND([flood_vlans{!=}1], [br0 br1 br3 br4 br5 br6 br7])
935VSCTL_CHECK_FIND([flood_vlans{!=}0,2], [br0 br1 br2 br3 br4 br6 br7])
936VSCTL_CHECK_FIND([flood_vlans{!=}0,1,2], [br0 br1 br2 br3 br4 br5 br6])
937VSCTL_CHECK_FIND([flood_vlans{!=}3], [br0 br1 br2 br3 br4 br5 br6 br7])
938
939VSCTL_CHECK_FIND([flood_vlans{<}[[]]], [])
940VSCTL_CHECK_FIND([flood_vlans{<=}[[]]], [br0])
941VSCTL_CHECK_FIND([flood_vlans{<}0], [br0])
942VSCTL_CHECK_FIND([flood_vlans{<=}0], [br0 br1])
943VSCTL_CHECK_FIND([flood_vlans{<}1,2], [br0 br2 br4])
944VSCTL_CHECK_FIND([flood_vlans{<=}1,2], [br0 br2 br4 br6])
945
946VSCTL_CHECK_FIND([flood_vlans{>}[[]]], [br1 br2 br3 br4 br5 br6 br7])
947VSCTL_CHECK_FIND([flood_vlans{>=}[[]]], [br0 br1 br2 br3 br4 br5 br6 br7])
948VSCTL_CHECK_FIND([flood_vlans{>}0], [br3 br5 br7])
949VSCTL_CHECK_FIND([flood_vlans{>=}0], [br1 br3 br5 br7])
950VSCTL_CHECK_FIND([flood_vlans{>}0,2], [br7])
951VSCTL_CHECK_FIND([flood_vlans{>=}1,2], [br6 br7])
952VSCTL_CHECK_FIND([flood_vlans{>=}0,2], [br5 br7])
953
954# Arithmetic relational operators with keys.
955VSCTL_CHECK_FIND([other-config:x=""], [br1])
956VSCTL_CHECK_FIND([other-config:x=y], [br2])
957VSCTL_CHECK_FIND([other-config:x=z], [br3])
958
959VSCTL_CHECK_FIND([other-config:x!=""], [br2 br3])
960VSCTL_CHECK_FIND([other-config:x!=y], [br1 br3])
961VSCTL_CHECK_FIND([other-config:x!=z], [br1 br2])
962
963VSCTL_CHECK_FIND([other-config:x>y], [br3])
964VSCTL_CHECK_FIND([other-config:x>=y], [br2 br3])
965VSCTL_CHECK_FIND([other-config:x<y], [br1])
966VSCTL_CHECK_FIND([other-config:x<=y], [br1 br2])
967
968# Set relational operators with keys.
969VSCTL_CHECK_FIND([other-config:x{=}[[]]], [br0 br4 br5 br6 br7])
970VSCTL_CHECK_FIND([other-config:x{=}""], [br1])
971VSCTL_CHECK_FIND([other-config:x{=}y], [br2])
972VSCTL_CHECK_FIND([other-config:x{=}z], [br3])
973
974VSCTL_CHECK_FIND([other-config:x{!=}[[]]], [br1 br2 br3])
975VSCTL_CHECK_FIND([other-config:x{!=}""], [br0 br2 br3 br4 br5 br6 br7])
976VSCTL_CHECK_FIND([other-config:x{!=}y], [br0 br1 br3 br4 br5 br6 br7])
977VSCTL_CHECK_FIND([other-config:x{!=}z], [br0 br1 br2 br4 br5 br6 br7])
978
979VSCTL_CHECK_FIND([other-config:x{<=}[[]]], [br0 br4 br5 br6 br7])
980VSCTL_CHECK_FIND([other-config:x{<=}x], [br0 br4 br5 br6 br7])
981VSCTL_CHECK_FIND([other-config:x{<=}""], [br0 br1 br4 br5 br6 br7])
982VSCTL_CHECK_FIND([other-config:x{<=}y], [br0 br2 br4 br5 br6 br7])
983VSCTL_CHECK_FIND([other-config:x{<=}z], [br0 br3 br4 br5 br6 br7])
984VSCTL_CHECK_FIND([other-config:x{<=}x,y,z], [br0 br2 br3 br4 br5 br6 br7])
985
986VSCTL_CHECK_FIND([other-config:x{<}[[]]], [])
987VSCTL_CHECK_FIND([other-config:x{<}x], [br0 br4 br5 br6 br7])
988VSCTL_CHECK_FIND([other-config:x{<}""], [br0 br4 br5 br6 br7])
989VSCTL_CHECK_FIND([other-config:x{<}y], [br0 br4 br5 br6 br7])
990VSCTL_CHECK_FIND([other-config:x{<}z], [br0 br4 br5 br6 br7])
991
992VSCTL_CHECK_FIND([other-config:x{>=}[[]]], [br0 br1 br2 br3 br4 br5 br6 br7])
993VSCTL_CHECK_FIND([other-config:x{>=}x], [])
994VSCTL_CHECK_FIND([other-config:x{>=}""], [br1])
995VSCTL_CHECK_FIND([other-config:x{>=}y], [br2])
996VSCTL_CHECK_FIND([other-config:x{>=}z], [br3])
997
998VSCTL_CHECK_FIND([other-config:x{>}[[]]], [br1 br2 br3])
999VSCTL_CHECK_FIND([other-config:x{>}x], [])
1000VSCTL_CHECK_FIND([other-config:x{>}""], [])
1001VSCTL_CHECK_FIND([other-config:x{>}y], [])
1002VSCTL_CHECK_FIND([other-config:x{>}z], [])
94c33672 1003OVS_VSCTL_CLEANUP
2a9537e2
BP
1004AT_CLEANUP
1005
7db03f7c
BP
1006AT_SETUP([database commands -- wait-until immediately true])
1007AT_KEYWORDS([ovs-vsctl])
1008OVS_VSCTL_SETUP
1009AT_CHECK([RUN_OVS_VSCTL(
a128bd8c 1010 [add-br br0],
7db03f7c
BP
1011 [add-bond br0 bond0 eth0 eth1],
1012 [set port bond0 bond_updelay=500 other-config:abc=def])],
1013 [0], [], [], [OVS_VSCTL_CLEANUP])
289df16d 1014AT_CHECK([RUN_OVS_VSCTL([[wait-until Open_vSwitch . manager_options=[]]])],
7db03f7c
BP
1015 [0], [], [], [OVS_VSCTL_CLEANUP])
1016AT_CHECK([RUN_OVS_VSCTL([[wait-until Open_vSwitch . bridges!=[]]])],
1017 [0], [], [], [OVS_VSCTL_CLEANUP])
1018AT_CHECK([RUN_OVS_VSCTL([[wait-until Port bond0 other-config:abc=def]])],
1019 [0], [], [], [OVS_VSCTL_CLEANUP])
1020AT_CHECK([RUN_OVS_VSCTL([[wait-until port bond0 'bond_updelay>50' 'other-config:abc>d' 'other-config:abc<e']])],
1021 [0], [], [], [OVS_VSCTL_CLEANUP])
1022OVS_VSCTL_CLEANUP
1023AT_CLEANUP
1024
1025AT_SETUP([database commands -- wait-until must wait])
1026AT_KEYWORDS([ovs-vsctl])
7454ec7a 1027
7db03f7c
BP
1028OVS_VSCTL_SETUP
1029
1030# Start ovs-vsctls in background.
1031(RUN_OVS_VSCTL([[wait-until o . bridges!=[] -- get bridge br10 other-config:abc]])) > stdout1 &
1032(RUN_OVS_VSCTL([[wait-until bridge br1 -- get bridge br1 other-config:abc]])) > stdout2 &
581d7da8 1033(RUN_OVS_VSCTL([[wait-until bridge br1 other-config={abc=def} -- get bridge br1 other-config]])) > stdout3 &
7db03f7c
BP
1034(RUN_OVS_VSCTL([[wait-until port bond0 'bond_updelay>50' -- get port bond0 bond-updelay]])) > stdout4 &
1035
1036# Give the ovs-vsctls a chance to read the database
1037sleep 1
1038
e111e681 1039AT_CHECK([RUN_OVS_VSCTL([add-br br10 -- set bridge br10 other-config:abc=quux])
7db03f7c
BP
1040RUN_OVS_VSCTL([add-br br1 -- set bridge br1 other-config:abc=def -- add-bond br1 bond0 eth0 eth1 -- set port bond0 bond_updelay=500])],
1041 [0], [], [], [OVS_VSCTL_CLEANUP])
1042
1043# Wait for the ovs-vsctls to finish.
1044wait
1045
1046# Check output
1047AT_CHECK([cat stdout1], [0], [quux
1048], [], [OVS_VSCTL_CLEANUP])
1049AT_CHECK([cat stdout2], [0], [def
1050], [], [OVS_VSCTL_CLEANUP])
1051AT_CHECK([cat stdout3], [0], [{abc=def}
1052], [], [OVS_VSCTL_CLEANUP])
1053AT_CHECK([cat stdout4], [0], [500
1054], [], [OVS_VSCTL_CLEANUP])
1055
1056OVS_VSCTL_CLEANUP
1057AT_CLEANUP
1058
aed133bf
BP
1059AT_SETUP([--id option on create, get commands])
1060AT_KEYWORDS([ovs-vsctl])
1061OVS_VSCTL_SETUP
1062AT_CHECK([RUN_OVS_VSCTL([add-br br0],
1063 [add-port br0 eth0],
1064 [add-port br0 eth1])])
1065AT_CHECK(
1066 [RUN_OVS_VSCTL_TOGETHER(
1067 [set bridge br0 mirrors=@m],
1068 [--id=@eth0 get port eth0],
1069 [--id=@eth1 get port eth1],
1070 [--id=@m create mirror name=mymirror select-dst-port=@eth0 select-src-port=@eth0 output-port=@eth1])],
1071 [0], [stdout], [], [OVS_VSCTL_CLEANUP])
1072AT_CHECK(
5c6d0628 1073 [${PERL} $srcdir/uuidfilt.pl stdout], [0], [dnl
aed133bf
BP
1074
1075
1076
1077<0>
1078],
1079 [], [OVS_VSCTL_CLEANUP])
1080AT_CHECK(
1081 [RUN_OVS_VSCTL(
1082 [list port eth0 eth1],
1083 [list mirror],
1084 [list bridge br0])],
1085 [0], [stdout], [], [OVS_VSCTL_CLEANUP])
1086AT_CHECK(
5c6d0628 1087 [sed -n -e '/uuid/p' -e '/name/p' -e '/mirrors/p' -e '/select/p' -e '/output/p' < stdout | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
aed133bf
BP
1088[_uuid : <0>
1089name : "eth0"
1090_uuid : <1>
1091name : "eth1"
1092_uuid : <2>
1093name : mymirror
1094output_port : <1>
1095output_vlan : []
1096select_all : false
1097select_dst_port : [<0>]
1098select_src_port : [<0>]
1099select_vlan : []
1100_uuid : <3>
1101mirrors : [<2>]
1102name : "br0"
1103]],
1104 [], [OVS_VSCTL_CLEANUP])
1105OVS_VSCTL_CLEANUP
1106AT_CLEANUP
1107
c5f341ab
BP
1108AT_SETUP([unreferenced record warnings])
1109AT_KEYWORDS([ovs-vsctl])
1110OVS_VSCTL_SETUP
1111AT_CHECK(
fba6bd1d 1112 [ovs-vsctl -vPATTERN:console:'%c|%p|%m' --no-wait -vreconnect:emer --db=unix:socket \
5c6d0628 1113 -- create Bridge name=br0 | ${PERL} $srcdir/uuidfilt.pl],
c5f341ab
BP
1114 [0], [<0>
1115], [vsctl|WARN|applying "create" command to table Bridge without --id option will have no effect
1116], [OVS_VSCTL_CLEANUP])
1117AT_CHECK(
fba6bd1d 1118 [ovs-vsctl -vPATTERN:console:'%c|%p|%m' --no-wait -vreconnect:emer --db=unix:socket \
5c6d0628 1119 -- --id=@br0 create Bridge name=br0 | ${PERL} $srcdir/uuidfilt.pl],
c5f341ab
BP
1120 [0], [<0>
1121], [vsctl|WARN|row id "@br0" was created but no reference to it was inserted, so it will not actually appear in the database
1122], [OVS_VSCTL_CLEANUP])
1123AT_CHECK(
fba6bd1d 1124 [ovs-vsctl -vPATTERN:console:'%c|%p|%m' --no-wait -vreconnect:emer --db=unix:socket \
c5f341ab
BP
1125 -- --id=@eth0_iface create Interface name=eth0 \
1126 -- --id=@eth0 create Port name=eth0 interfaces=@eth0_iface \
1127 -- --id=@m0 create Mirror name=m0 output_port=@eth0 \
1128 -- --id=@br0 create Bridge name=br0 mirrors=@m0 \
5c6d0628 1129 -- set Open_vSwitch . bridges=@br0 | ${PERL} $srcdir/uuidfilt.pl],
c5f341ab
BP
1130 [0], [<0>
1131<1>
1132<2>
1133<3>
1134], [vsctl|WARN|row id "@eth0" was created but only a weak reference to it was inserted, so it will not actually appear in the database
1135], [OVS_VSCTL_CLEANUP])
1136OVS_VSCTL_CLEANUP
1137AT_CLEANUP
1138
5c414a2e
BP
1139dnl This test really shows a bug -- "create" followed by "list" in
1140dnl the same execution shows the wrong UUID on the "list" command.
1141dnl The bug is documented in ovs-vsctl.8.
1142AT_SETUP([created row UUID is wrong in same execution])
1143AT_KEYWORDS([ovs-vsctl])
1144OVS_VSCTL_SETUP
581d7da8 1145AT_CHECK([RUN_OVS_VSCTL([--id=@br0 create Bridge name=br0 -- add Open_vSwitch . bridges @br0 -- list bridge])],
5c414a2e 1146 [0], [stdout], [], [OVS_VSCTL_CLEANUP])
a128bd8c 1147AT_CHECK([${PERL} $srcdir/uuidfilt.pl stdout], [0],
5c414a2e 1148 [[<0>
bd76d25d
BP
1149_uuid : <1>
1150controller : []
1151datapath_id : []
1152datapath_type : ""
b5cbbcf6 1153datapath_version : ""
bd76d25d 1154external_ids : {}
31681a5d 1155fail_mode : []
bd76d25d 1156flood_vlans : []
254750ce 1157flow_tables : {}
29089a54 1158ipfix : []
dc2b70ba 1159mcast_snooping_enable: false
bd76d25d
BP
1160mirrors : []
1161name : "br0"
1162netflow : []
1163other_config : {}
1164ports : []
7beaa082 1165protocols : []
9efd308e
DV
1166rstp_enable : false
1167rstp_status : {}
bd76d25d 1168sflow : []
21f7563c
JP
1169status : {}
1170stp_enable : false
5c414a2e
BP
1171]], [ignore], [test ! -e pid || kill `cat pid`])
1172OVS_VSCTL_CLEANUP
1173AT_CLEANUP
eeb8467e
AS
1174
1175dnl This test will create a linux-htb QoS record that
1176dnl points to a few queues and use it on a1 and a2 port.
1177dnl It also destroys all records from Qos and Queue table.
1178AT_SETUP([--all option on destroy command])
1179AT_KEYWORDS([ovs-vsctl])
1180OVS_VSCTL_SETUP
1181AT_CHECK([RUN_OVS_VSCTL(
1182 [add-br a],
1183 [add-port a a1],
1184 [add-port a a2])], [0], [], [], [OVS_VSCTL_CLEANUP])
1185CHECK_BRIDGES([a, a, 0])
1186CHECK_PORTS([a], [a1], [a2])
1187CHECK_IFACES([a], [a1], [a2])
1188AT_CHECK([RUN_OVS_VSCTL_TOGETHER(
1189 [set Port a1 qos=@newqos],
1190 [set Port a2 qos=@newqos],
1191 [--id=@newqos create QoS type=linux-htb other-config:max-rate=1000000000 queues=0=@q0,1=@q1],
1192 [--id=@q0 create Queue other-config:min-rate=100000000 other-config:max-rate=100000000],
1193 [--id=@q1 create Queue other-config:min-rate=500000000])], [0], [ignore], [], [OVS_VSCTL_CLEANUP])
1194AT_CHECK([RUN_OVS_VSCTL(
1195 [--columns=other_config,type list Qos])], [0],
1196[other_config : {max-rate="1000000000"}
1197type : linux-htb
1198], [], [OVS_VSCTL_CLEANUP])
1199AT_CHECK([RUN_OVS_VSCTL(
e5251936
GS
1200 [--columns=other_config list Queue | sort | sed '/^$/d'])], [0],
1201[other_config : {max-rate="100000000", min-rate="100000000"}
1202other_config : {min-rate="500000000"}
eeb8467e
AS
1203], [], [OVS_VSCTL_CLEANUP])
1204AT_CHECK([RUN_OVS_VSCTL(
1205 [clear Port a1 qos],
1206 [clear Port a2 qos])], [0], [], [], [OVS_VSCTL_CLEANUP])
1207AT_CHECK([RUN_OVS_VSCTL(
1208 [--columns=qos list Port a1 a2])], [0],
1209[[qos : []
1210
1211qos : []
1212]], [], [OVS_VSCTL_CLEANUP])
1213AT_CHECK([RUN_OVS_VSCTL(
1214 [--all destroy Qos])], [0], [], [], [OVS_VSCTL_CLEANUP])
1215AT_CHECK([RUN_OVS_VSCTL(
1216 [-- list Qos])], [0], [], [], [OVS_VSCTL_CLEANUP])
1217AT_CHECK([RUN_OVS_VSCTL(
1218 [--all destroy Queue])], [0], [], [], [OVS_VSCTL_CLEANUP])
1219AT_CHECK([RUN_OVS_VSCTL(
1220 [-- list Queue])], [0], [], [], [OVS_VSCTL_CLEANUP])
1221OVS_VSCTL_CLEANUP
1222AT_CLEANUP
94a53842
AW
1223
1224dnl ----------------------------------------------------------------------
1225AT_BANNER([ovs-vsctl add-port -- reserved port names])
1226
1227AT_SETUP([add-port -- reserved names 1])
1228OVS_VSWITCHD_START
1229
1230# Test creating all reserved port names
1231m4_foreach(
1232[reserved_name],
1233[[ovs-netdev],
1234[ovs-dummy],
c1fc1411 1235[genev_sys],
a5d4fadd
JG
1236[gre_sys],
1237[gre64_sys],
1238[lisp_sys],
1239[vxlan_sys]],
94a53842
AW
1240[
1241# Try creating the port
c3ccfe98
AZ
1242AT_CHECK([ovs-vsctl add-port br0 reserved_name], [0], [], [dnl
1243ovs-vsctl: Error detected while setting up 'reserved_name'. See ovs-vswitchd log for details.
1244])
94a53842
AW
1245# Detect the warning log message
1246AT_CHECK([sed -n "s/^.*\(|bridge|WARN|.*\)$/\1/p" ovs-vswitchd.log], [0], [dnl
1247|bridge|WARN|could not create interface reserved_name, name is reserved
1248])
1249# Delete the warning log message
1250AT_CHECK([sed "/|bridge|WARN|/d" ovs-vswitchd.log > ovs-vswitchd.log], [0], [], [])
1251# Delete the port
1252AT_CHECK([ovs-vsctl del-port br0 reserved_name], [0], [], [])])
1253OVS_VSWITCHD_STOP
1254AT_CLEANUP
1255
1256AT_SETUP([add-port -- reserved names 2])
1257# Creates all type of tunnel ports
1258OVS_VSWITCHD_START([add-port br0 p1 -- set Interface p1 type=gre \
1259 options:remote_ip=1.1.1.1 ofport_request=1\
1260 -- add-port br0 p2 -- set Interface p2 type=gre64 \
1261 options:local_ip=2.2.2.2 options:remote_ip=1.1.1.1 \
1262 ofport_request=2 \
1263 -- add-port br0 p3 -- set Interface p3 type=lisp \
1264 options:remote_ip=2.2.2.2 ofport_request=3 \
1265 -- add-port br0 p4 -- set Interface p4 type=vxlan \
c1fc1411
JG
1266 options:remote_ip=2.2.2.2 ofport_request=4 \
1267 -- add-port br0 p5 -- set Interface p5 type=geneve \
1268 options:remote_ip=2.2.2.2 ofport_request=5])
94a53842
AW
1269
1270# Test creating all reserved tunnel port names
1271m4_foreach(
1272[reserved_name],
c1fc1411
JG
1273[[genev_sys],
1274[gre_sys],
a5d4fadd
JG
1275[gre64_sys],
1276[lisp_sys],
1277[vxlan_sys]],
94a53842
AW
1278[
1279# Try creating the port
c3ccfe98
AZ
1280AT_CHECK([ovs-vsctl add-port br0 reserved_name], [0], [], [dnl
1281ovs-vsctl: Error detected while setting up 'reserved_name'. See ovs-vswitchd log for details.
1282])
94a53842
AW
1283# Detect the warning log message
1284AT_CHECK([sed -n "s/^.*\(|bridge|WARN|.*\)$/\1/p" ovs-vswitchd.log], [0], [dnl
1285|bridge|WARN|could not create interface reserved_name, name is reserved
1286])
1287# Delete the warning log message
1288AT_CHECK([sed "/|bridge|WARN|/d" ovs-vswitchd.log > ovs-vswitchd.log], [0], [], [])
1289# Delete the port
1290AT_CHECK([ovs-vsctl del-port br0 reserved_name], [0], [], [])])
1291OVS_VSWITCHD_STOP
89f3c258 1292AT_CLEANUP
17fb85a5
BP
1293
1294AT_SETUP([naming in db commands])
1295OVS_VSCTL_SETUP
1296
1297dnl First check that the database commands can refer to row by database UUID.
1298AT_CHECK([RUN_OVS_VSCTL([add-br br0])])
1299uuid=`[]RUN_OVS_VSCTL(get port br0 _uuid)`
1300AT_CHECK([RUN_OVS_VSCTL([get port $uuid name])], [0], ["br0"
1301])
1302
1303dnl Next check that, if a database row is given a name that has the same form
1304dnl as the database UUIDs, the name can still be used to refer to rows.
1305AT_CHECK([RUN_OVS_VSCTL([add-br 0fcd11a1-2ba8-4b38-a358-4bccf2bf3057])])
1306AT_CHECK([RUN_OVS_VSCTL([get interface 0fcd11a1-2ba8-4b38-a358-4bccf2bf3057 type])], [0], [internal
1307])
1308
1309OVS_VSCTL_CLEANUP
1310AT_CLEANUP