-AT_BANNER([ovn_controller_gw])
+AT_BANNER([ovn-sbctl])
# OVN_SBCTL_TEST_START
m4_define([OVN_SBCTL_TEST_START],
- [OVS_RUNDIR=`pwd`; export OVS_RUNDIR
- OVS_LOGDIR=`pwd`; export OVS_LOGDIR
- OVS_DBDIR=`pwd`; export OVS_DBDIR
- OVS_SYSCONFDIR=`pwd`; export OVS_SYSCONFDIR
-
- dnl Create databases (ovn-nb, ovn-sb).
+ [dnl Create databases (ovn-nb, ovn-sb).
+ AT_KEYWORDS([ovn])
for daemon in ovn-nb ovn-sb; do
AT_CHECK([ovsdb-tool create $daemon.db $abs_top_srcdir/${daemon%%-*}/${daemon}.ovsschema])
done
dnl Start ovsdb-server.
AT_CHECK([ovsdb-server --detach --no-chdir --pidfile --log-file --remote=punix:$OVS_RUNDIR/db.sock ovn-nb.db ovn-sb.db], [0], [], [stderr])
- ON_EXIT_UNQUOTED([kill `cat ovsdb-server.pid`])
+ on_exit "kill `cat ovsdb-server.pid`"
AT_CHECK([[sed < stderr '
/vlog|INFO|opened log file/d
/ovsdb_server|INFO|ovsdb-server (Open vSwitch)/d']])
dnl Start ovn-northd.
AT_CHECK([ovn-northd --detach --pidfile --log-file --ovnnb-db=unix:$OVS_RUNDIR/db.sock --ovnsb-db=unix:$OVS_RUNDIR/db.sock], [0], [], [stderr])
- ON_EXIT_UNQUOTED([kill `cat ovn-northd.pid`])
+ on_exit "kill `cat ovn-northd.pid`"
AT_CHECK([[sed < stderr '
/vlog|INFO|opened log file/d']])
AT_CAPTURE_FILE([ovn-northd.log])
# OVN_SBCTL_TEST_STOP
m4_define([OVN_SBCTL_TEST_STOP],
- [AT_CHECK([check_logs $1])
+ [# removes all 'Broken pipe' warning logs from ovsdb-server.log. this is in
+ # that *ctl command (e.g. ovn-nbctl) exits right after committing the change
+ # to database. however, in reaction, some daemon (e.g. ovn-controller-vtep)
+ # may immediately update the database. this later update may cause database
+ # sending update back to *ctl command if *ctl has not proceeded to exit yet.
+ # and if *ctl command exits before database calling send, the send from
+ # database will fail with 'Broken pipe' error.
+ AT_CHECK([check_logs "$1
+/Broken pipe/d"])
AT_CHECK([ovs-appctl -t ovn-northd exit])
AT_CHECK([ovs-appctl -t ovsdb-server exit])])
-# ovn-sbctl test.
+dnl ---------------------------------------------------------------------
+
+AT_SETUP([ovn-sbctl - chassis commands])
+OVN_SBCTL_TEST_START
+ovn_init_db ovn-sb
+
+AT_CHECK([ovn-sbctl chassis-add ch0 geneve 1.2.3.4])
+AT_CHECK([ovn-sbctl -f csv -d bare --no-headings --columns ip,type list encap | sort],
+ [0], [dnl
+1.2.3.4,geneve
+])
+
+AT_CHECK([ovn-sbctl chassis-add ch1 stt,geneve,vxlan 1.2.3.5])
+AT_CHECK([ovn-sbctl -f csv -d bare --no-headings --columns ip,type list encap | sort],
+ [0], [dnl
+1.2.3.4,geneve
+1.2.3.5,geneve
+1.2.3.5,stt
+1.2.3.5,vxlan
+])
+
+AT_CHECK([ovn-sbctl chassis-del ch0])
+AT_CHECK([ovn-sbctl -f csv -d bare --no-headings --columns ip,type list encap | sort],
+ [0], [dnl
+1.2.3.5,geneve
+1.2.3.5,stt
+1.2.3.5,vxlan
+])
+
+OVN_SBCTL_TEST_STOP
+AT_CLEANUP
+
+dnl ---------------------------------------------------------------------
+
AT_SETUP([ovn-sbctl - test])
OVN_SBCTL_TEST_START
AT_CHECK([ovn-nbctl lswitch-add br-test])
AT_CHECK([ovn-nbctl lport-add br-test vif0])
-AT_CHECK([ovn-nbctl lport-set-macs vif0 f0:ab:cd:ef:01:02])
+AT_CHECK([ovn-nbctl lport-set-addresses vif0 f0:ab:cd:ef:01:02])
AT_CHECK([ovn-sbctl chassis-add ch0 stt 1.2.3.5])
AT_CHECK([ovn-sbctl lport-bind vif0 ch0])
Chassis "ch0"
Encap stt
ip: "1.2.3.5"
+ Port_Binding "vif0"
+])
+
+# adds another 'vif1'
+AT_CHECK([ovn-nbctl lport-add br-test vif1])
+AT_CHECK([ovn-nbctl lport-set-addresses vif1 f0:ab:cd:ef:01:03])
+AT_CHECK([ovn-sbctl lport-bind vif1 ch0])
+
+AT_CHECK([ovn-sbctl show | sed 's/vif[[0-9]]/vif/'], [0], [dnl
+Chassis "ch0"
+ Encap stt
+ ip: "1.2.3.5"
+ Port_Binding "vif"
+ Port_Binding "vif"
+])
+
+# deletes 'vif1'
+AT_CHECK([ovn-nbctl lport-del vif1])
+
+AT_CHECK([ovn-sbctl show], [0], [dnl
+Chassis "ch0"
+ Encap stt
+ ip: "1.2.3.5"
+ Port_Binding "vif0"
])
uuid=$(ovn-sbctl --columns=_uuid list Chassis ch0 | cut -d ':' -f2 | tr -d ' ')