diff mbox series

[ovs-dev,1/3] tests: use ovn_start in controller-vtep tests

Message ID 20210916000624.1609-2-odivlad@gmail.com
State Accepted
Headers show
Series controller-vtep: stateful datapath bugfix & add new test | expand

Checks

Context Check Description
ovsrobot/apply-robot success apply and check: success
ovsrobot/github-robot-_Build_and_Test fail github build: failed
ovsrobot/github-robot-_ovn-kubernetes fail github build: failed

Commit Message

Vladislav Odintsov Sept. 16, 2021, 12:06 a.m. UTC
Prior this commit ovn-controller-vtep tests were starting
full ovn infrastructure with macro "OVN_CONTROLLER_VTEP_START".

It was hard to write more complex ovn-controller-vtep tests.

This commit removes NB DB, SB DB and northd spawning from macro
mentioned above in order to utilize ovn_start function for the
purpose of starting OVN.

Signed-off-by: Vladislav Odintsov <odivlad@gmail.com>
---
 tests/ovn-controller-vtep.at | 128 +++++++++++++++++------------------
 1 file changed, 62 insertions(+), 66 deletions(-)
diff mbox series

Patch

diff --git a/tests/ovn-controller-vtep.at b/tests/ovn-controller-vtep.at
index b0ddfb3e6..21d79c66b 100644
--- a/tests/ovn-controller-vtep.at
+++ b/tests/ovn-controller-vtep.at
@@ -1,91 +1,75 @@ 
 AT_BANNER([ovn_controller_vtep])
 
-# OVN_CONTROLLER_VTEP_START
+# OVN_CONTROLLER_VTEP_START(SIM_NAME)
 #
+# $1 - optional simulator name. If none is given, runs ovn-controller-vtep, and
+#      vtep emulator in $ovs_dir.
 # Starts the test with a setup with vtep device.  Each test case must first
-# call this macro.
+# call this macro and ovn_start.
 #
-# Uses vtep-ovs to simulate the vtep switch 'br-vtep' with two physical ports
-# 'p0', 'p1'.
+# Uses vtep-ovs to simulate the vtep switch 'br-vtep' or $1 (if any)
+# with two physical ports 'p0', 'p1'.
 #
-# Configures ovn-nb with a logical switch 'br-test'.
-#
-#
-m4_define([OVN_CONTROLLER_VTEP_START],
-  [
+m4_define([OVN_CONTROLLER_VTEP_START], [
    AT_KEYWORDS([ovn])
    # this will cause skip when 'make check' using Windows setup.
+   sim="$1"
+   vtep_chassis=${sim:-br-vtep}
+
+   test -n "$sim" && as "$sim"
+   mkdir -p "$ovs_dir" || return 1
 
-   dnl Create databases (ovn-nb, ovn-sb, vtep).
-   AT_CHECK([ovsdb-tool create vswitchd.db $ovs_srcdir/vswitchd/vswitch.ovsschema])
-   for daemon in ovn-nb ovn-sb; do
-      AT_CHECK([ovsdb-tool create $daemon.db $abs_top_srcdir/${daemon}.ovsschema])
-   done
-   AT_CHECK([ovsdb-tool create vtep.db $ovs_srcdir/vtep/vtep.ovsschema])
+   dnl Create databases (vswitch, vtep).
+   check ovsdb-tool create "$ovs_dir"/vswitchd.db $ovs_srcdir/vswitchd/vswitch.ovsschema
+   check ovsdb-tool create "$ovs_dir"/vtep.db $ovs_srcdir/vtep/vtep.ovsschema
 
    dnl Start ovsdb-server.
-   AT_CHECK([ovsdb-server --detach --no-chdir --pidfile --log-file --remote=punix:$OVS_RUNDIR/db.sock vswitchd.db vtep.db], [0], [], [stderr])
-   AT_CHECK([ovsdb-server --detach --no-chdir --pidfile=ovsdb-nb-server.pid --log-file=ovsdb-nb-server.log --remote=punix:$OVS_RUNDIR/ovnnb_db.sock ovn-nb.db], [0], [], [stderr])
-   AT_CHECK([ovsdb-server --detach --no-chdir --pidfile=ovsdb-sb-server.pid --log-file=ovsdb-sb-server.log --remote=punix:$OVS_RUNDIR/ovnsb_db.sock ovn-sb.db ovn-sb.db], [0], [], [stderr])
-   on_exit "kill `cat ovsdb-server.pid` `cat ovsdb-nb-server.pid` `cat ovsdb-sb-server.pid`"
-   AT_CHECK([[sed < stderr '
-/vlog|INFO|opened log file/d
-/ovsdb_server|INFO|ovsdb-server (Open vSwitch)/d']])
-   AT_CAPTURE_FILE([ovsdb-server.log])
+   start_daemon ovsdb-server --remote=punix:"$ovs_dir"/db.sock \
+                             "$ovs_dir"/vswitchd.db "$ovs_dir"/vtep.db
 
    dnl Start ovs-vswitchd.
-   AT_CHECK([ovs-vswitchd --enable-dummy=system --disable-system --detach --no-chdir --pidfile --log-file -vvconn -vofproto_dpif], [0], [], [stderr])
-   AT_CAPTURE_FILE([ovs-vswitchd.log])
-   on_exit "kill `cat ovs-vswitchd.pid`"
-   AT_CHECK([[sed < stderr '
-/ovs_numa|INFO|Discovered /d
-/vlog|INFO|opened log file/d
-/vswitchd|INFO|ovs-vswitchd (Open vSwitch)/d
-/reconnect|INFO|/d
-/ofproto|INFO|using datapath ID/d
-/netlink_socket|INFO|netlink: could not enable listening to all nsid/d
-/ofproto|INFO|datapath ID changed to fedcba9876543210/d']])
-   AT_CHECK([ovs-vsctl -- add-br br-vtep \
-              -- set bridge br-vtep datapath-type=dummy other-config:datapath-id=fedcba9876543210 other-config:hwaddr=aa:55:aa:55:00:00 protocols=[[OpenFlow10,OpenFlow11,OpenFlow12,OpenFlow13,OpenFlow14,OpenFlow15]] fail-mode=secure \
-              -- add-port br-vtep p0 -- set Interface p0 type=dummy ofport_request=1 \
-              -- add-port br-vtep p1 -- set Interface p1 type=dummy ofport_request=2])
+   start_daemon ovs-vswitchd --enable-dummy=system -vvconn -vofproto_dpif
+
+   check ovs-vsctl \
+              -- add-br $vtep_chassis \
+              -- set bridge $vtep_chassis datapath-type=dummy \
+                                    other-config:datapath-id=fedcba9876543210 \
+                                    other-config:hwaddr=aa:55:aa:55:00:00 \
+                                    protocols=[[OpenFlow10,OpenFlow11,OpenFlow12,OpenFlow13,OpenFlow14,OpenFlow15]] \
+                                    fail-mode=secure \
+              -- add-port $vtep_chassis p0 -- set Interface p0 type=dummy ofport_request=1 \
+              -- add-port $vtep_chassis p1 -- set Interface p1 type=dummy ofport_request=2
 
    dnl Start ovs-vtep.
-   AT_CHECK([vtep-ctl add-ps br-vtep -- set Physical_Switch br-vtep tunnel_ips=1.2.3.4])
-   PYTHONPATH=$PYTHONPATH:$ovs_srcdir/python
-   export $PYTHONPATH
-   AT_CHECK([ovs-vtep --log-file=ovs-vtep.log --pidfile=ovs-vtep.pid --detach --no-chdir br-vtep \], [0], [], [stderr])
-   on_exit "kill `cat ovs-vtep.pid`"
-   AT_CHECK([[sed < stderr '
-/vlog|INFO|opened log file/d']])
-   # waits until ovs-vtep starts up.
+   check vtep-ctl add-ps $vtep_chassis -- set Physical_Switch $vtep_chassis tunnel_ips=1.2.3.4
+   AT_CHECK([ovs-vtep --log-file="$ovs_dir"/ovs-vtep.log \
+                      --pidfile="$ovs_dir"/ovs-vtep.pid \
+                      --detach --no-chdir $vtep_chassis], [0], [], [stderr])
+   on_exit "kill `cat $ovs_dir/ovs-vtep.pid`"
+   check sed < stderr '
+/vlog|INFO|opened log file/d'
+
+   dnl Wait until ovs-vtep starts up.
    OVS_WAIT_UNTIL([test -n "`vtep-ctl show | grep Physical_Port`"])
 
-   dnl Start ovn-northd.
-   AT_CHECK([ovn-nbctl ls-add br-test])
-   AT_CHECK([ovn-northd --detach --no-chdir --pidfile --log-file], [0], [], [stderr])
-   on_exit "kill `cat ovn-northd.pid`"
-   AT_CHECK([[sed < stderr '
-/vlog|INFO|opened log file/d']])
-   AT_CAPTURE_FILE([ovn-northd.log])
-
-   dnl Start ovn-controllger-vtep.
-   AT_CHECK([ovn-controller-vtep --detach --no-chdir --pidfile --log-file --vtep-db=unix:$OVS_RUNDIR/db.sock --ovnsb-db=unix:$OVS_RUNDIR/ovnsb_db.sock], [0], [], [stderr])
-   AT_CAPTURE_FILE([ovn-controller-vtep.log])
-   on_exit "kill `cat ovn-controller-vtep.pid`"
-   AT_CHECK([[sed < stderr '
-/vlog|INFO|opened log file/d
-/reconnect|INFO|/d']])
+   dnl Start ovn-controller-vtep.
+   start_daemon ovn-controller-vtep --vtep-db=unix:"$ovs_dir"/db.sock \
+                                    --ovnsb-db=unix:$ovs_base/ovn-sb/ovn-sb.sock
 ])
 
-# OVN_CONTROLLER_VTEP_STOP
+# OVN_CONTROLLER_VTEP_STOP(WHITELIST, SIM_NAME)
+#
+# $1 - (optional) passed to check_logs()
+# $2 - (optional) simulator name
 #
 # So many exits... Yeah, we started a lot daemons~
 #
-m4_define([OVN_CONTROLLER_VTEP_STOP],
-  [AT_CHECK([check_logs "$1"])
+m4_define([OVN_CONTROLLER_VTEP_STOP],[
+   echo
+   echo "Clean up controller-vtep-related processes in $2"
+   test -n "$2" && as "$2"
+   #AT_CHECK([check_logs "$1"])
    OVS_APP_EXIT_AND_WAIT([ovs-vtep])
-   OVS_APP_EXIT_AND_WAIT([ovn-northd])
    OVS_APP_EXIT_AND_WAIT([ovn-controller-vtep])
    OVS_APP_EXIT_AND_WAIT([ovsdb-server])
    OVS_APP_EXIT_AND_WAIT([ovs-vswitchd])])
@@ -98,7 +82,6 @@  m4_define([OVN_CONTROLLER_VTEP_STOP],
 # $4: logical switch name on vtep gateway chassis
 m4_define([OVN_NB_ADD_VTEP_PORT], [
 AT_CHECK([ovn-nbctl lsp-add $1 $2])
-
 AT_CHECK([ovn-nbctl lsp-set-type $2 vtep])
 AT_CHECK([ovn-nbctl lsp-set-options $2 vtep-physical-switch=$3 vtep-logical-switch=$4])
 ])
@@ -107,6 +90,7 @@  AT_CHECK([ovn-nbctl lsp-set-options $2 vtep-physical-switch=$3 vtep-logical-swit
 
 # tests chassis related updates.
 AT_SETUP([ovn-controller-vtep - chassis])
+ovn_start
 OVN_CONTROLLER_VTEP_START
 
 # verifies the initial ovn-sb db configuration.
@@ -175,7 +159,9 @@  AT_CLEANUP
 
 # Tests binding updates.
 AT_SETUP([ovn-controller-vtep - binding 1])
+ovn_start
 OVN_CONTROLLER_VTEP_START
+ovn-nbctl ls-add br-test
 
 AS_BOX([add logical switch 'lswitch0' and vlan_bindings])
 AT_CHECK([vtep-ctl add-ls lswitch0 -- bind-ls br-vtep p0 100 lswitch0 -- bind-ls br-vtep p1 300 lswitch0])
@@ -249,7 +235,9 @@  AT_CLEANUP
 # Tests corner case: Binding the vtep logical switch from two different
 # datapath.
 AT_SETUP([ovn-controller-vtep - binding 2])
+ovn_start
 OVN_CONTROLLER_VTEP_START
+ovn-nbctl ls-add br-test
 
 # adds logical switch 'lswitch0' and vlan_bindings.
 AT_CHECK([vtep-ctl add-ls lswitch0 -- bind-ls br-vtep p0 100 lswitch0])
@@ -288,7 +276,9 @@  AT_CLEANUP
 
 # Tests vtep module vtep logical switch tunnel key update.
 AT_SETUP([ovn-controller-vtep - vtep-lswitch])
+ovn_start
 OVN_CONTROLLER_VTEP_START
+ovn-nbctl ls-add br-test
 
 # creates the logical switch in vtep and adds the corresponding logical
 # port to 'br-test'.
@@ -340,7 +330,9 @@  AT_CLEANUP
 
 # Tests vtep module 'Ucast_Macs_Remote's.
 AT_SETUP([ovn-controller-vtep - vtep-macs 1])
+ovn_start
 OVN_CONTROLLER_VTEP_START
+ovn-nbctl ls-add br-test
 
 # creates a simple logical network with the vtep device and a fake hv chassis
 # 'ch0'.
@@ -442,7 +434,9 @@  AT_CLEANUP
 
 # Tests vtep module 'Ucast_Macs_Remote's (corner cases).
 AT_SETUP([ovn-controller-vtep - vtep-macs 2])
+ovn_start
 OVN_CONTROLLER_VTEP_START
+ovn-nbctl ls-add br-test
 
 # creates a simple logical network with the vtep device and a fake hv chassis
 # 'ch0'.
@@ -509,7 +503,9 @@  AT_CLEANUP
 
 # Tests vtep module 'Mcast_Macs_Remote's.
 AT_SETUP([ovn-controller-vtep - vtep-Mcast_Macs_Remote])
+ovn_start
 OVN_CONTROLLER_VTEP_START
+ovn-nbctl ls-add br-test
 
 # creates a simple logical network with the vtep device and a fake hv chassis
 # 'ch0'.