diff mbox series

[ovs-dev,6/6] system-tests: Compare I+P and recompute flows.

Message ID 20241114135756.1082588-7-xsimonar@redhat.com
State Changes Requested
Headers show
Series Compare I+P flows with with recompute ones. | expand

Checks

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

Commit Message

Xavier Simonart Nov. 14, 2024, 1:57 p.m. UTC
Signed-off-by: Xavier Simonart <xsimonar@redhat.com>
---
 tests/system-ovn-kmod.at |  15 ++--
 tests/system-ovn.at      | 185 ++++++++++++++++++++-------------------
 2 files changed, 102 insertions(+), 98 deletions(-)
diff mbox series

Patch

diff --git a/tests/system-ovn-kmod.at b/tests/system-ovn-kmod.at
index 45e26631d..204dd3c38 100644
--- a/tests/system-ovn-kmod.at
+++ b/tests/system-ovn-kmod.at
@@ -283,8 +283,7 @@  tcp,orig=(src=192.168.1.200,dst=192.168.1.2,sport=<cleared>,dport=<cleared>),rep
 ])
 NS_CHECK_EXEC([foo1], [nc -z 192.168.1.100 8081])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
-
+OVN_CLEANUP_CONTROLLER([hv1])
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
 
@@ -581,7 +580,7 @@  tcp,orig=(src=fd11::b,dst=fd11::2,sport=<cleared>,dport=<cleared>),reply=(src=fd
 ])
 NS_CHECK_EXEC([foo1], [nc -z fd11::a 8081])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -723,7 +722,7 @@  test_fragmented_traffic
 check ovn-nbctl ls-lb-del public
 check ovn-nbctl lb-del lb1
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -890,7 +889,7 @@  for type in icmp udp tcp; do
     test_$type
 done
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -1009,7 +1008,7 @@  NS_CHECK_EXEC([server], [ip r get fd10::1 | grep -q "mtu 1300"])
 
 ovn-appctl -t ovn-controller vlog/set info
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -1084,7 +1083,7 @@  check cmp frag_test_srv.expected udp_frag_test_srv.rcvd
 check cmp frag_test_client.expected udp_frag_test_c1.recvd
 check cmp frag_test_client.expected udp_frag_test_c2.recvd
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -1156,7 +1155,7 @@  check cmp frag_test_srv.expected udp_frag_test_srv.rcvd
 check cmp frag_test_client.expected udp_frag_test_c1.recvd
 check cmp frag_test_client.expected udp_frag_test_c2.recvd
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
diff --git a/tests/system-ovn.at b/tests/system-ovn.at
index 145399ded..bdcf35828 100644
--- a/tests/system-ovn.at
+++ b/tests/system-ovn.at
@@ -162,7 +162,7 @@  sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [dnl
 icmp,orig=(src=192.168.2.2,dst=192.168.1.2,id=<cleared>,type=8,code=0),reply=(src=192.168.1.2,dst=30.0.0.1,id=<cleared>,type=0,code=0),zone=<cleared>
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -342,7 +342,7 @@  sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [dnl
 icmpv6,orig=(src=fd12::2,dst=fd11::2,id=<cleared>,type=128,code=0),reply=(src=fd11::2,dst=fd30::1,id=<cleared>,type=129,code=0),zone=<cleared>
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -454,7 +454,7 @@  sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [dnl
 icmp,orig=(src=192.168.1.2,dst=172.16.1.2,id=<cleared>,type=8,code=0),reply=(src=172.16.1.2,dst=172.16.1.1,id=<cleared>,type=0,code=0),zone=<cleared>
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -566,7 +566,7 @@  sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [dnl
 icmpv6,orig=(src=fd10::2,dst=fd30::2,id=<cleared>,type=128,code=0),reply=(src=fd30::2,dst=fd30::1,id=<cleared>,type=129,code=0),zone=<cleared>
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -788,7 +788,7 @@  sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [dnl
 icmp,orig=(src=192.168.1.2,dst=172.16.1.3,id=<cleared>,type=8,code=0),reply=(src=172.16.1.3,dst=30.0.0.1,id=<cleared>,type=0,code=0),zone=<cleared>
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -1014,7 +1014,7 @@  sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [dnl
 icmpv6,orig=(src=fd11::2,dst=fd30::3,id=<cleared>,type=128,code=0),reply=(src=fd30::3,dst=fd40::1,id=<cleared>,type=129,code=0),zone=<cleared>
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -1328,7 +1328,7 @@  sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [dnl
 icmpv6,orig=(src=fd11::2,dst=fd30::3,id=<cleared>,type=128,code=0),reply=(src=fd30::3,dst=fd40::1,id=<cleared>,type=129,code=0),zone=<cleared>
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -1610,7 +1610,7 @@  OVS_WAIT_UNTIL([
     test "${n_reset}" = "1"
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -1831,7 +1831,7 @@  if [[ "$bar3_ct" == "20" ]]; then
 else
     AT_CHECK([test $bar3_ct -eq 0])
 fi
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -1939,7 +1939,7 @@  tcp,orig=(src=192.168.1.2,dst=30.0.0.2,sport=<cleared>,dport=<cleared>),reply=(s
 tcp,orig=(src=192.168.1.2,dst=30.0.0.2,sport=<cleared>,dport=<cleared>),reply=(src=192.168.1.5,dst=192.168.1.2,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>)
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -2049,7 +2049,7 @@  tcp,orig=(src=fd01::2,dst=fd03::2,sport=<cleared>,dport=<cleared>),reply=(src=fd
 tcp,orig=(src=fd01::2,dst=fd03::2,sport=<cleared>,dport=<cleared>),reply=(src=fd01::5,dst=fd01::2,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>)
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -2298,7 +2298,7 @@  test "x$ct1 = x$exp_ct1" && test "x$ct2 = x$exp_ct2"
 
 OVS_WAIT_UNTIL([check_est_flows], [check established flows])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -2393,7 +2393,7 @@  for i in $(seq 1 5); do
     NS_CHECK_EXEC([client], [wget 172.16.1.150 -t 5 -T 1 --retry-connrefused -v -o wget$i.log])
 done
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -2550,7 +2550,7 @@  tcp,orig=(src=fd72::2,dst=fd30::2,sport=<cleared>,dport=<cleared>),reply=(src=fd
 tcp,orig=(src=fd72::2,dst=fd30::2,sport=<cleared>,dport=<cleared>),reply=(src=fd12::2,dst=fd72::2,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>)
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -2721,7 +2721,7 @@  test "x$ct1 = x$exp_ct1" && test "x$ct2 = x$exp_ct2"
 ], [0], [dnl
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -2894,7 +2894,7 @@  test "x$ct1 = x$exp_ct1" && test "x$ct2 = x$exp_ct2"
 ], [0], [dnl
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -3113,7 +3113,7 @@  test "x$ct1 = x$exp_ct1" && test "x$ct2 = x$exp_ct2" && test "x$ct3 = x$exp_ct3"
 ], [0], [dnl
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -3256,7 +3256,7 @@  tcp,orig=(src=172.16.1.2,dst=172.16.1.11,sport=<cleared>,dport=<cleared>),reply=
 tcp,orig=(src=172.16.1.2,dst=172.16.1.11,sport=<cleared>,dport=<cleared>),reply=(src=192.168.2.2,dst=172.16.1.2,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>)
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -3399,7 +3399,7 @@  tcp,orig=(src=fd72::2,dst=fd72::11,sport=<cleared>,dport=<cleared>),reply=(src=f
 tcp,orig=(src=fd72::2,dst=fd72::11,sport=<cleared>,dport=<cleared>),reply=(src=fd02::2,dst=fd72::2,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>)
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -3616,7 +3616,7 @@  OVS_WAIT_UNTIL([
     test "${total_pkts}" = "3"
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -3813,7 +3813,7 @@  test_connectivity_from_ext foo1 fd11::2
 # does not have DNAT
 test_connectivity_from_ext bar1 fd12::2
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -3997,7 +3997,7 @@  icmp,orig=(src=172.16.1.1,dst=192.168.2.2,id=<cleared>,type=8,code=0),reply=(src
 icmp,orig=(src=192.168.1.3,dst=172.16.1.4,id=<cleared>,type=8,code=0),reply=(src=172.16.1.4,dst=172.16.1.1,id=<cleared>,type=0,code=0),zone=<cleared>
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -4165,7 +4165,7 @@  icmpv6,orig=(src=fd20::1,dst=fd12::2,id=<cleared>,type=128,code=0),reply=(src=fd
 icmpv6,orig=(src=fd20::1,dst=fd20::4,id=<cleared>,type=128,code=0),reply=(src=fd12::2,dst=fd20::1,id=<cleared>,type=129,code=0),zone=<cleared>
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -4242,7 +4242,8 @@  check ovs-vsctl clear interface ovs-p1 external_ids
 # check conntrack zone is flushed
 OVS_WAIT_WHILE([ovs-appctl dpctl/dump-conntrack zone=$zone_id | grep .])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+# ls1 should not be a local datapath anymore since ovs-p1 binding removed
+OVN_CLEANUP_CONTROLLER([hv1], [], [], [ls1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -4408,7 +4409,7 @@  OVS_WAIT_UNTIL([
     test "${total_queries}" = "2"
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -4632,7 +4633,7 @@  OVS_WAIT_UNTIL([
     test "${n_reset}" = "1"
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -4815,7 +4816,7 @@  ovs-vsctl set interface ovs-sw1-p1 external_ids:iface-id=sw1-p1
 wait_row_count Service_Monitor 2
 wait_row_count Service_Monitor 1 status=online
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -4917,7 +4918,7 @@  ovn-nbctl --wait=hv sync
 NS_CHECK_EXEC([lsp], [nc 88.88.88.88 8080 -z], [0], [ignore], [ignore])
 NS_CHECK_EXEC([lsp], [nc 88.88.88.89 8080 -z], [0], [ignore], [ignore])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -5014,7 +5015,7 @@  ovn-nbctl --wait=hv sync
 NS_CHECK_EXEC([lsp], [nc 8800::0088 8080 -z], [0], [ignore], [ignore])
 NS_CHECK_EXEC([lsp], [nc 8800::0089 8080 -z], [0], [ignore], [ignore])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -5247,7 +5248,7 @@  aef0::3 udp port 90" | uniq | wc -l)
     test $c -ge 1
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -5484,7 +5485,9 @@  aef0::3 udp port 90" | uniq | wc -l)
     test $c -ge 1
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+kill $(pidof tcpdump)
+
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -5607,7 +5610,7 @@  AT_CHECK([
     test $ct_est_count -eq 1
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -5727,7 +5730,7 @@  NS_CHECK_EXEC([sw0-p1-lbc], [nc -z 20.0.0.4 80], [0], [ignore], [ignore])
 # Send the packet to VIP.
 NS_CHECK_EXEC([sw0-p1-lbc], [nc -z 30.0.0.10 80], [0], [ignore], [ignore])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -5836,7 +5839,7 @@  tcp,orig=(src=42.42.42.3,dst=42.42.42.2,sport=<clnt_s_port>,dport=4242),reply=(s
 tcp,orig=(src=42.42.42.3,dst=66.66.66.66,sport=<clnt_s_port>,dport=666),reply=(src=42.42.42.2,dst=42.42.42.3,sport=4242,dport=<clnt_s_port>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>)
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -5945,7 +5948,7 @@  tcp,orig=(src=4242::3,dst=4242::2,sport=<clnt_s_port>,dport=4242),reply=(src=424
 tcp,orig=(src=4242::3,dst=6666::1,sport=<clnt_s_port>,dport=666),reply=(src=4242::2,dst=4242::3,sport=4242,dport=<clnt_s_port>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>)
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -6039,7 +6042,7 @@  NS_CHECK_EXEC([sw0-p1-f], [ping -q -c 3 -i 0.3 -w 2 10.0.0.5 | FORMAT_PING], \
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -6255,7 +6258,7 @@  sed -e 's/mark=[[0-9]]*/mark=<cleared>/' | sort], [0], [dnl
 tcp,orig=(src=172.16.0.1,dst=10.0.0.2,sport=<cleared>,dport=<cleared>),reply=(src=10.0.0.2,dst=172.16.0.1,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=<cleared>,labels=0x401020500000000,protoinfo=(state=<cleared>)
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -6487,7 +6490,7 @@  sed -e 's/mark=[[0-9]]*/mark=<cleared>/' | sort], [0], [dnl
 tcp,orig=(src=fd07::1,dst=fd01::2,sport=<cleared>,dport=<cleared>),reply=(src=fd01::2,dst=fd07::1,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=<cleared>,labels=0x1001020400000000,protoinfo=(state=<cleared>)
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -6536,7 +6539,7 @@  OVS_WAIT_UNTIL([test x$(ovn-nbctl lsp-get-up sw0-port1) = xup])
 ovs-vsctl set interface p1 type=\"\"
 OVS_WAIT_UNTIL([test x$(ovn-nbctl lsp-get-up sw0-port1) = xdown])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1], [], [], [sw0])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -6627,7 +6630,7 @@  sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [dnl
 icmp,orig=(src=192.168.1.2,dst=172.16.1.100,id=<cleared>,type=8,code=0),reply=(src=172.16.1.100,dst=172.16.1.20,id=<cleared>,type=0,code=0),zone=<cleared>
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -6863,7 +6866,7 @@  AT_CHECK([ovn-nbctl set Logical_Switch_Port sw02 options:qos_burst=1000000])
 OVS_WAIT_UNTIL([tc class show dev ovs-public | \
                 grep -q 'class htb .* prio 0 rate 5Gbit ceil 6Gbit burst 125000b cburst 124500b'])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -7063,7 +7066,7 @@  Allowing connections from 1000::a
 wait_column "up" nb:bfd status logical_port=rp-public
 ovn-nbctl destroy bfd $uuid_v6
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -7192,7 +7195,7 @@  AT_CHECK([ovs-appctl dpctl/dump-flows | grep ct_mark | grep -v ipv6 -c], [1], [d
 0
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -7317,7 +7320,7 @@  NS_CHECK_EXEC([vm2], [ping -q -c 3 -i 0.3 -w 2 172.18.2.10 | FORMAT_PING], \
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -7434,7 +7437,7 @@  NS_CHECK_EXEC([vm1], [ping -q -c 3 -i 0.3 -w 2 172.18.2.12 | FORMAT_PING], \
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -7646,7 +7649,7 @@  EOF
 
 OVS_WAIT_UNTIL([test "1" = "$(grep -c "dl_dst=33:33:33:33:33:33" ovn-controller.log)"])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -7789,7 +7792,7 @@  icmp,orig=(src=10.0.0.3,dst=10.0.0.2,id=<cleared>,type=8,code=0),reply=(src=10.0
 icmp,orig=(src=10.0.0.3,dst=10.0.0.2,id=<cleared>,type=8,code=0),reply=(src=10.0.0.2,dst=10.0.0.3,id=<cleared>,type=0,code=0),zone=<cleared>
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -7931,7 +7934,7 @@  icmp,orig=(src=10.0.0.3,dst=10.0.0.2,id=<cleared>,type=8,code=0),reply=(src=10.0
 icmp,orig=(src=10.0.0.3,dst=10.0.0.2,id=<cleared>,type=8,code=0),reply=(src=10.0.0.2,dst=10.0.0.3,id=<cleared>,type=0,code=0),zone=<cleared>
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -8032,7 +8035,7 @@  icmp,orig=(src=10.0.0.2,dst=10.0.0.3,id=<cleared>,type=8,code=0),reply=(src=10.0
 icmp,orig=(src=10.0.0.2,dst=10.0.0.3,id=<cleared>,type=8,code=0),reply=(src=10.0.0.3,dst=10.0.0.2,id=<cleared>,type=0,code=0),zone=<cleared>,labels=0x4d3000000000000000000000000
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -8133,7 +8136,7 @@  icmp,orig=(src=10.0.0.2,dst=10.0.0.3,id=<cleared>,type=8,code=0),reply=(src=10.0
 icmp,orig=(src=10.0.0.2,dst=10.0.0.3,id=<cleared>,type=8,code=0),reply=(src=10.0.0.3,dst=10.0.0.2,id=<cleared>,type=0,code=0),zone=<cleared>,mark=16,labels=0x4d3000000000000000000000000
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -8233,7 +8236,7 @@  check ovn-nbctl --wait=hv sync
 
 AT_CHECK([ip netns exec sw0p1 wget 20.0.0.3 -t 3 -T 1], [0], [ignore], [ignore])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -8590,7 +8593,7 @@  check $PYTHON $srcdir/check_acl_log.py \
     --icmp_code=0
 
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -8719,7 +8722,7 @@  tcp,orig=(src=192.168.2.2,dst=172.16.1.2,sport=<cleared>,dport=<cleared>),reply=
 
 AT_CHECK([ovs-appctl dpctl/flush-conntrack])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -8783,7 +8786,7 @@  NS_CHECK_EXEC([sw0-p1.2], [ping -q -c 3 -i 0.3 -w 2 10.0.0.3 | FORMAT_PING], \
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -8880,7 +8883,7 @@  NS_CHECK_EXEC([ls1p1], [ping6 -q -c 3 -i 0.3 -w 2 1711::1  | FORMAT_PING], \
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -8989,7 +8992,7 @@  OVS_WAIT_UNTIL([
 # Double check we never hit error condition
 AT_CHECK([grep -qE 'Too many active mcast flows' northd/ovn-northd.log], [1])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -9063,7 +9066,7 @@  NS_CHECK_EXEC([vif0], [ping -q -c 3 -i 0.3 -w 1 192.168.20.1 | FORMAT_PING], \
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -9261,7 +9264,7 @@  sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [dnl
 udp,orig=(src=192.168.10.10,dst=192.168.20.20,sport=<cleared>,dport=<cleared>),reply=(src=192.168.20.10,dst=192.168.10.10,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=10
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -9411,7 +9414,7 @@  OVS_WAIT_UNTIL([
     test "${requests}" -ge "6"
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -9562,7 +9565,7 @@  OVS_WAIT_UNTIL([
     test "${requests}" -ge "6"
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -9690,7 +9693,7 @@  OVS_WAIT_UNTIL([
         test "${total_icmp1_pkts}" = "3"
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -9841,7 +9844,7 @@  sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [dnl
 
 AT_CHECK([ovs-appctl dpctl/flush-conntrack])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -9985,7 +9988,7 @@  sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [dnl
 
 AT_CHECK([ovs-appctl dpctl/flush-conntrack])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -10096,7 +10099,7 @@  NS_CHECK_EXEC([ns_ls1p1], [ping -q -c 3 -i 0.3 -w 2 10.89.189.1 | FORMAT_PING],
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -10238,7 +10241,7 @@  NS_CHECK_EXEC([vm1], [ping -q -c 3 -i 0.3 -w 2 10.0.0.2 | FORMAT_PING], \
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -10452,7 +10455,7 @@  check ovn-nbctl --wait=hv lb-del lb1
 
 AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(30.0.0.1) | sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [LB1_CT_ENTRIES])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -10597,7 +10600,7 @@  NS_CHECK_EXEC([ns_ext1], [ping -q -c 3 -i 0.3 -w 2 172.0.0.88 | FORMAT_PING], \
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -10757,7 +10760,7 @@  OVS_WAIT_UNTIL([
         test "${total_icmp1_pkts}" -gt "${total_icmp_pkts}"
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -10927,7 +10930,7 @@  OVS_WAIT_UNTIL([
     test "${total_pkts}" = "4"
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -11060,7 +11063,7 @@  OVS_WAIT_UNTIL([
     test "${total_pkts}" = "3"
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -11553,7 +11556,9 @@  OVS_WAIT_UNTIL([
     test "${n_packets}" = "3"
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+killall tcpdump
+
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -11695,7 +11700,7 @@  acl_test from-lport "" pg
 acl_test from-lport "--apply-after-lb" pg
 acl_test to-lport "" pg
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -11784,7 +11789,7 @@  sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [dnl
 tcp,orig=(src=10.0.0.2,dst=172.16.0.1,sport=<cleared>,dport=<cleared>),reply=(src=192.168.0.2,dst=10.0.0.2,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>)
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -11857,7 +11862,7 @@  NS_CHECK_EXEC([vif0], [ping -q -c 3 -i 0.3 -w 2 fe80::200:ff:fe00:1 | FORMAT_PIN
 
 check_row_count mac_binding 1 mac=\"00:00:00:00:00:02\"
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -11971,7 +11976,7 @@  OVS_WAIT_FOR_OUTPUT([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(172.16.1.151) |
 1
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -12184,7 +12189,7 @@  sctp,orig=(src=172.16.1.2,dst=192.168.2.2,sport=<cleared>,dport=<cleared>),reply
 
 OVS_WAIT_UNTIL([check_est_flows 0xa], [check established flows])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -12263,7 +12268,7 @@  dnl Test the connection originating something that uses the same source port
 dnl as the LB VIP.
 NS_CHECK_EXEC([vm1], [nc -z -p 8080 42.42.42.1 80], 0, [ignore], [ignore])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -12352,7 +12357,7 @@  AT_CHECK([ovs-ofctl dump-flows br-int | grep 'table=OFTABLE_CHK_LB_AFFINITY, n_p
 0
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -12442,7 +12447,7 @@  NS_CHECK_EXEC([sw1-p0], [ping -q -c 3 -i 0.3 -w 2 172.16.1.100 | FORMAT_PING], \
 3 packets transmitted, 3 received, 0% packet loss, time 0ms
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -12556,7 +12561,7 @@  restart_ovsdb_controller_updates $TCP_PORT
 # Check that the MAC_Binding entries have been properly created as SB is now writable.
 wait_row_count MAC_Binding 1 logical_port=lr1-pub ip=172.24.4.100
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -12651,7 +12656,7 @@  zone_id=$(ovn-appctl -t ovn-controller ct-zone-list | grep lr_dnat | cut -d ' '
 AT_CHECK([ovs-appctl dpctl/dump-conntrack | grep -c "zone=$zone_id"], [0], [2
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -12798,7 +12803,7 @@  NS_CHECK_EXEC([sw01], [ip addr show sw01 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'],
 NS_CHECK_EXEC([sw11], [ip addr show sw11 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'], [0], [dnl
 192.168.2.10
 ])
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -12935,7 +12940,7 @@  check ovn-nbctl set logical_router lr options:chassis=hv1
 check_snat
 check_dnat
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -13071,7 +13076,7 @@  check ovn-nbctl set logical_router lr options:chassis=hv1
 check_snat
 check_dnat
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -13287,7 +13292,7 @@  AT_CHECK([for f in $(ls -1 nfcapd.*); do nfdump -o json -r $f; done | grep obser
 "observationPointID" : 3012,
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -13414,7 +13419,7 @@  AT_CHECK([for f in $(ls -1 nfcapd.*); do nfdump -o json -r $f; done | grep obser
 "observationPointID" : 2002,
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -13538,7 +13543,7 @@  AT_CHECK([for f in $(ls -1 nfcapd.*); do nfdump -o json -r $f; done | grep obser
 "observationPointID" : 1003,
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -13660,7 +13665,7 @@  NS_CHECK_EXEC([sw01], [ping -q -c 2 -i 0.2 -w 2 172.16.1.1 | FORMAT_PING],
 ])
 
 AT_CHECK([ovs-vsctl set Open_vSwitch . external-ids:ovn-remote=$SB_PATH])
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -13763,7 +13768,7 @@  AT_CHECK([grep -q "pinctrl_drop_buffered_packets_map" ovn_counters], [0])
 
 AT_CHECK([ovs-vsctl set Open_vSwitch . external-ids:ovn-remote=$SB_PATH])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])
@@ -14104,7 +14109,7 @@  AT_CHECK([ovn-nbctl get logical_router_port rp-sw0 ipv6_prefix | cut -c3-16], [0
 [2001:1db8:3333]
 ])
 
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
+OVN_CLEANUP_CONTROLLER([hv1])
 
 as ovn-sb
 OVS_APP_EXIT_AND_WAIT([ovsdb-server])