dnl Creates an empty database in the current directory and then starts
dnl an ovsdb-server on it for ovs-vsctl to connect to.
m4_define([OVS_VSCTL_SETUP],
- [OVS_CHECK_LCOV(
- [ovsdb-tool create db $abs_builddir/../vswitchd/vswitch-idl.ovsschema],
- [0], [stdout], [ignore])
- OVS_CHECK_LCOV(
- [[ovsdb-tool transact db \
- '[{"op": "insert",
- "table": "Open_vSwitch",
- "row": {}}]']],
- [0], [ignore], [ignore])
- AT_CHECK([ovsdb-server --detach --pidfile=$PWD/pid --listen=punix:socket --unixctl=$PWD/unixctl db >/dev/null 2>&1], [0], [ignore], [ignore])])
+ [OVSDB_INIT([db])
+ AT_CHECK([ovsdb-server --detach --pidfile=$PWD/pid --remote=punix:socket --unixctl=$PWD/unixctl db >/dev/null 2>&1], [0], [ignore], [ignore])])
dnl OVS_VSCTL_CLEANUP
dnl
dnl
dnl Executes each ovs-vsctl COMMAND.
m4_define([RUN_OVS_VSCTL],
- [m4_foreach([command], [$@], [ovs-vsctl -vreconnect:ANY:emer --db=unix:socket command
+ [m4_foreach([command], [$@], [ovs-vsctl --no-wait -vreconnect:ANY:emer --db=unix:socket -- command
+])])
+m4_define([RUN_OVS_VSCTL_ONELINE],
+ [m4_foreach([command], [$@], [ovs-vsctl --no-wait -vreconnect:ANY:emer --db=unix:socket --oneline -- command
])])
dnl RUN_OVS_VSCTL_TOGETHER(COMMAND, ...)
dnl
dnl Executes each ovs-vsctl COMMAND in a single run of ovs-vsctl.
m4_define([RUN_OVS_VSCTL_TOGETHER],
- [ovs-vsctl -vreconnect:ANY:emer --db=unix:socket m4_join([ -- ], $@)])
+ [ovs-vsctl --no-wait -vreconnect:ANY:emer --db=unix:socket --oneline dnl
+m4_foreach([command], [$@], [ -- command])])
dnl CHECK_BRIDGES([BRIDGE, PARENT, VLAN], ...)
dnl
# (This particular test is interesting with --oneline because it returns
# an integer instead of a string and that can cause type mismatches inside
# python if not done carefully.)
- AT_CHECK([RUN_OVS_VSCTL([--oneline br-to-vlan $1])], [0], [$3
+ AT_CHECK([RUN_OVS_VSCTL_ONELINE([br-to-vlan $1])], [0], [$3
], [], [OVS_VSCTL_CLEANUP])
# Check multiple queries in a single run.
dnl Check that the bridges appear on list-br, with --oneline.
AT_CHECK(
- [RUN_OVS_VSCTL([--oneline list-br])],
+ [RUN_OVS_VSCTL_ONELINE([list-br])],
[0],
[m4_join([\n], m4_foreach([brinfo], [$@], [m4_car(brinfo),]))
],
dnl Check ports with --oneline.
AT_CHECK(
- [RUN_OVS_VSCTL([--oneline list-ports $1])],
+ [RUN_OVS_VSCTL_ONELINE([list-ports $1])],
[0],
[m4_join([\n], m4_shift($@))
],
[RUN_OVS_VSCTL([list-ifaces $1])],
[0],
[m4_foreach([iface], m4_cdr($@), [iface
-])])
+])],
+ [],
+ [OVS_VSCTL_CLEANUP])
AT_CHECK([RUN_OVS_VSCTL([iface-to-br $1])], [1], [],
[ovs-vsctl: no interface named $1
],
AT_KEYWORDS([ovs-vsctl])
OVS_VSCTL_SETUP
AT_CHECK([RUN_OVS_VSCTL(
- [add-br a],
+ [add-br a],
+ [--if-exists del-br b],
[add-port a a1],
[add-port a a2])], [0], [], [], [OVS_VSCTL_CLEANUP])
CHECK_BRIDGES([a, a, 0])
[add-br b],
[add-port a a1],
[add-port b b1],
- [del-br a])], [0], [], [], [OVS_VSCTL_CLEANUP])
+ [--if-exists del-port b b2],
+ [del-br a])], [0], [
+
+
+
+
+
+], [], [OVS_VSCTL_CLEANUP])
CHECK_BRIDGES([b, b, 0])
CHECK_PORTS([b], [b1])
CHECK_IFACES([b], [b1])
AT_CHECK([RUN_OVS_VSCTL_TOGETHER(
[add-br a],
[add-bond a bond0 a1 a2 a3],
- [del-port bond0])], [0], [], [], [OVS_VSCTL_CLEANUP])
+ [del-port bond0])], [0], [
+
+
+], [], [OVS_VSCTL_CLEANUP])
CHECK_BRIDGES([a, a, 0])
CHECK_PORTS([a])
OVS_VSCTL_CLEANUP
AT_CLEANUP
-m4_define([ovs_vsctl_disabled_tests], [
+AT_SETUP([external IDs])
+AT_KEYWORDS([ovs-vsctl])
+OVS_VSCTL_SETUP
+AT_CHECK([RUN_OVS_VSCTL_TOGETHER(
+ [add-br a],
+ [add-port a a1],
+ [add-bond a bond0 a2 a3],
+ [br-set-external-id a key0 value0],
+ [port-set-external-id a1 key1 value1],
+ [iface-set-external-id a2 key2 value2],
+ [iface-set-external-id a2 key3 value3],
+ [iface-set-external-id a3 key4 value4],
+ [br-get-external-id a],
+ [br-get-external-id a key0],
+ [br-get-external-id a key1],
+ [br-set-external-id a key0 othervalue],
+ [br-get-external-id a],
+ [br-set-external-id a key0],
+ [br-get-external-id a],
+ [port-get-external-id a1],
+ [iface-get-external-id a2],
+ [iface-get-external-id a3])], [0], [
+
+
+
+
+
+
+
+key0=value0
+value0
+
+
+key0=othervalue
+
+
+key1=value1
+key2=value2\nkey3=value3
+key4=value4
+], [], [OVS_VSCTL_CLEANUP])
+AT_CHECK([RUN_OVS_VSCTL_TOGETHER(
+ [br-get-external-id a],
+ [port-get-external-id a1],
+ [iface-get-external-id a2],
+ [iface-get-external-id a3])], [0],
+[
+key1=value1
+key2=value2\nkey3=value3
+key4=value4
+], [], [OVS_VSCTL_CLEANUP])
+CHECK_BRIDGES([a, a, 0])
+CHECK_PORTS([a], [a1], [bond0])
+CHECK_IFACES([a], [a1], [a2], [a3])
+OVS_VSCTL_CLEANUP
+AT_CLEANUP
+
dnl ----------------------------------------------------------------------
AT_BANNER([ovs-vsctl unit tests -- fake bridges])
-m4_define([SIMPLE_FAKE_CONF], [dnl
-bridge.xenbr0.port=eth0
-bridge.xenbr0.port=eth0.9
-bridge.xenbr0.port=xapi1
-bridge.xenbr0.port=xenbr0
-iface.xapi1.fake-bridge=true
-iface.xapi1.internal=true
-vlan.eth0.9.tag=9
-vlan.xapi1.tag=9
-])
+m4_define([OVS_VSCTL_SETUP_SIMPLE_FAKE_CONF],
+ [AT_CHECK(
+ [RUN_OVS_VSCTL(
+ [add-br xenbr0],
+ [add-port xenbr0 eth0],
+ [add-br xapi1 xenbr0 9],
+ [add-port xapi1 eth0.9])],
+ [0], [], [], [OVS_VSCTL_CLEANUP])])
AT_SETUP([simple fake bridge])
AT_KEYWORDS([ovs-vsctl fake-bridge])
OVS_VSCTL_SETUP
-AT_CHECK([RUN_OVS_VSCTL(
- [add-br xenbr0],
- [add-port xenbr0 eth0],
- [add-br xapi1 xenbr0 9],
- [add-port xapi1 eth0.9])])
-AT_CHECK([cat conf], [0], [SIMPLE_FAKE_CONF])
-CHECK_BRIDGES([xenbr0, xenbr0, 0], [xapi1, xenbr0, 9])
+OVS_VSCTL_SETUP_SIMPLE_FAKE_CONF
+CHECK_BRIDGES([xapi1, xenbr0, 9], [xenbr0, xenbr0, 0])
CHECK_PORTS([xenbr0], [eth0])
CHECK_IFACES([xenbr0], [eth0])
CHECK_PORTS([xapi1], [eth0.9])
AT_SETUP([simple fake bridge + del-br fake bridge])
AT_KEYWORDS([ovs-vsctl fake-bridge])
OVS_VSCTL_SETUP
-AT_DATA([conf], [SIMPLE_FAKE_CONF])
-AT_CHECK([RUN_OVS_VSCTL([del-br xapi1])])
-AT_CHECK([cat conf], [0], [dnl
-bridge.xenbr0.port=eth0
-bridge.xenbr0.port=xenbr0
-])
+OVS_VSCTL_SETUP_SIMPLE_FAKE_CONF
+AT_CHECK([RUN_OVS_VSCTL([del-br xapi1])], [0], [], [], [OVS_VSCTL_CLEANUP])
CHECK_BRIDGES([xenbr0, xenbr0, 0])
CHECK_PORTS([xenbr0], [eth0])
CHECK_IFACES([xenbr0], [eth0])
AT_SETUP([simple fake bridge + del-br real bridge])
AT_KEYWORDS([ovs-vsctl fake-bridge])
OVS_VSCTL_SETUP
-AT_DATA([conf], [SIMPLE_FAKE_CONF])
-AT_CHECK([RUN_OVS_VSCTL([del-br xenbr0])])
-AT_CHECK([cat conf], [0], [])
+OVS_VSCTL_SETUP_SIMPLE_FAKE_CONF
+AT_CHECK([RUN_OVS_VSCTL([del-br xenbr0])], [0], [], [], [OVS_VSCTL_CLEANUP])
CHECK_BRIDGES
OVS_VSCTL_CLEANUP
AT_CLEANUP
-m4_define([BOND_FAKE_CONF], [dnl
-bonding.bond0.slave=eth0
-bonding.bond0.slave=eth1
-bridge.xapi1.port=bond0
-bridge.xapi1.port=bond0.11
-bridge.xapi1.port=xapi1
-bridge.xapi1.port=xapi2
-iface.xapi2.fake-bridge=true
-iface.xapi2.internal=true
-vlan.bond0.11.tag=11
-vlan.xapi2.tag=11
-])
+AT_SETUP([simple fake bridge + external IDs])
+AT_KEYWORDS([ovs-vsctl fake-bridge])
+OVS_VSCTL_SETUP
+OVS_VSCTL_SETUP_SIMPLE_FAKE_CONF
+AT_CHECK([RUN_OVS_VSCTL_TOGETHER(
+ [br-set-external-id xenbr0 key0 value0],
+ [br-set-external-id xapi1 key1 value1],
+ [br-get-external-id xenbr0],
+ [br-get-external-id xenbr0 key0],
+ [br-get-external-id xapi1],
+ [br-get-external-id xapi1 key1])], [0], [
+
+key0=value0
+value0
+key1=value1
+value1
+], [], [OVS_VSCTL_CLEANUP])
+CHECK_BRIDGES([xapi1, xenbr0, 9], [xenbr0, xenbr0, 0])
+CHECK_PORTS([xenbr0], [eth0])
+CHECK_IFACES([xenbr0], [eth0])
+CHECK_PORTS([xapi1], [eth0.9])
+CHECK_IFACES([xapi1], [eth0.9])
+OVS_VSCTL_CLEANUP
+AT_CLEANUP
+
+m4_define([OVS_VSCTL_SETUP_BOND_FAKE_CONF],
+ [AT_CHECK(
+ [RUN_OVS_VSCTL(
+ [add-br xapi1],
+ [add-bond xapi1 bond0 eth0 eth1],
+ [add-br xapi2 xapi1 11],
+ [add-port xapi2 bond0.11])],
+ [0], [], [], [OVS_VSCTL_CLEANUP])])
AT_SETUP([fake bridge on bond])
AT_KEYWORDS([ovs-vsctl fake-bridge])
OVS_VSCTL_SETUP
-AT_CHECK([RUN_OVS_VSCTL(
- [add-br xapi1],
- [add-bond xapi1 bond0 eth0 eth1],
- [add-br xapi2 xapi1 11],
- [add-port xapi2 bond0.11])])
-AT_CHECK([cat conf], [0], [BOND_FAKE_CONF])
+OVS_VSCTL_SETUP_BOND_FAKE_CONF
CHECK_BRIDGES([xapi1, xapi1, 0], [xapi2, xapi1, 11])
CHECK_PORTS([xapi1], [bond0])
CHECK_IFACES([xapi1], [eth0], [eth1])
AT_SETUP([fake bridge on bond + del-br fake bridge])
AT_KEYWORDS([ovs-vsctl fake-bridge])
OVS_VSCTL_SETUP
-AT_DATA([conf], [BOND_FAKE_CONF])
-AT_CHECK([RUN_OVS_VSCTL([--oneline del-br xapi2])], [0], [
-])
+OVS_VSCTL_SETUP_BOND_FAKE_CONF
+AT_CHECK([RUN_OVS_VSCTL_ONELINE([del-br xapi2])], [0], [
+], [], [OVS_VSCTL_CLEANUP])
CHECK_BRIDGES([xapi1, xapi1, 0])
CHECK_PORTS([xapi1], [bond0])
CHECK_IFACES([xapi1], [eth0], [eth1])
AT_SETUP([fake bridge on bond + del-br real bridge])
AT_KEYWORDS([ovs-vsctl fake-bridge])
-AT_DATA([conf], [BOND_FAKE_CONF])
+OVS_VSCTL_SETUP
+OVS_VSCTL_SETUP_BOND_FAKE_CONF
AT_CHECK([RUN_OVS_VSCTL([del-br xapi1])])
CHECK_BRIDGES
OVS_VSCTL_CLEANUP
AT_CLEANUP
-])