Skip to content

Commit

Permalink
tests: Wait for controller exit before restart.
Browse files Browse the repository at this point in the history
In some rare cases, and despite "recent" changes to wait for cleanup
before replying to exit, ovn-controller was still running when trying
to restart it.

Signed-off-by: Xavier Simonart <[email protected]>
Signed-off-by: Dumitru Ceara <[email protected]>
(cherry picked from commit ca52a80)
  • Loading branch information
simonartxavier authored and dceara committed Nov 6, 2024
1 parent c5d851b commit 570b968
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 11 deletions.
9 changes: 9 additions & 0 deletions tests/ovn-macros.at
Original file line number Diff line number Diff line change
Expand Up @@ -1104,3 +1104,12 @@ m4_define([OVN_CHECK_SCAPY_EDNS_CLIENT_SUBNET_SUPPORT],
AT_SKIP_IF([test $HAVE_SCAPY = no])
AT_SKIP_IF([! echo "from scapy.layers.dns import EDNS0ClientSubnet" | python 2>&1 > /dev/null])
])

m4_define([OVN_CONTROLLER_EXIT],
[TMPPID=$(cat $1/ovn-controller.pid)
AT_CHECK([as $1 ovn-appctl -t ovn-controller exit --restart])
# Make sure ovn-controller stopped so that a future restart will not fail.
# Checking debug/status is running is not enough as there might be a small race condition.
echo "Waiting for pid $TMPPID"
OVS_WAIT_WHILE([kill -0 $TMPPID 2>/dev/null])
])
17 changes: 6 additions & 11 deletions tests/ovn.at
Original file line number Diff line number Diff line change
Expand Up @@ -20642,7 +20642,7 @@ echo $expected | ovstest test-ovn expr-to-packets > expected
OVN_CHECK_PACKETS([hv2/vif1-tx.pcap], [expected])

# Stop ovn-controller on hv2 with --restart flag
as hv2 ovs-appctl -t ovn-controller exit --restart
OVN_CONTROLLER_EXIT([hv2])

# Now send the packet again. This time, it should still arrive
OVS_WAIT_UNTIL([as hv1 ovs-appctl -t ovn-controller inject-pkt "$packet"])
Expand Down Expand Up @@ -29329,7 +29329,7 @@ check test "$hvt2" -gt 0
# Kill ovn-controller on chassis hv3, so that it won't update nb_cfg.
# Then wait for 9 out of 10
sleep 1
check as hv3 ovn-appctl -t ovn-controller exit --restart
OVN_CONTROLLER_EXIT([hv3])
wait_for_ports_up
ovn-nbctl --wait=sb sync
wait_row_count Chassis_Private 9 name!=hv3 nb_cfg=2
Expand Down Expand Up @@ -36347,7 +36347,7 @@ check_tunnel_port hv1 br-int [email protected]%192.168.0.1
check_tunnel_port hv2 br-int [email protected]%192.168.0.2

# Stop ovn-controller on hv1
check as hv1 ovn-appctl -t ovn-controller exit --restart
OVN_CONTROLLER_EXIT([hv1])

# The tunnel should remain intact
check_tunnel_port hv1 br-int [email protected]%192.168.0.1
Expand Down Expand Up @@ -36376,7 +36376,7 @@ check_tunnel_port hv2 br-int1 [email protected]%192.168.0.2
check grep -q "Clearing old tunnel port \"ovn-hv1-0\" ([email protected]%192.168.0.2) from bridge \"br-int\"" hv2/ovn-controller.log

# Stop ovn-controller on hv1
check as hv1 ovn-appctl -t ovn-controller exit --restart
OVN_CONTROLLER_EXIT([hv1])

# The tunnel should remain intact
check_tunnel_port hv1 br-int1 [email protected]%192.168.0.1
Expand Down Expand Up @@ -36466,10 +36466,7 @@ prev_id2=$(ovs-vsctl --bare --columns _uuid find port external_ids:ovn-chassis-i
# The hv2 is running we can remove the override file
rm -f ${OVN_SYSCONFDIR}/system-id-override

check ovn-appctl -t ovn-controller exit --restart

# Make sure ovn-controller stopped before restarting it
OVS_WAIT_UNTIL([test x$(ovn-appctl -t ovn-controller debug/status) != "xrunning"])
OVN_CONTROLLER_EXIT([hv1])

# for some reason SSL ovsdb configuration overrides CLI, so
# delete ssl config from ovsdb to give CLI arguments priority
Expand Down Expand Up @@ -37181,9 +37178,7 @@ AT_CHECK([grep -c "NXT_CT_FLUSH_ZONE" hv1/ovs-vswitchd.log], [0], [dnl
])

AS_BOX([Check conversion from UUID - restart])
ovn-appctl -t ovn-controller exit --restart
# Make sure ovn-controller stopped before restarting it
OVS_WAIT_UNTIL([test "$(ovn-appctl -t ovn-controller debug/status)" != "running"])
OVN_CONTROLLER_EXIT([hv1])

replace_with_uuid lr0
replace_with_uuid sw0
Expand Down

0 comments on commit 570b968

Please sign in to comment.