Otherwise potential sanitizer reported errors might go unnoticed.

Reported-at: 
https://mail.openvswitch.org/pipermail/ovs-dev/2025-November/427811.html
Reported-by: Lucas Vargas Dias <[email protected]>
Signed-off-by: Dumitru Ceara <[email protected]>
---
 tests/ovn-macros.at           |   18 +
 tests/ovn-northd.at           |  215 ++++++-
 tests/ovn.at                  |    9 +-
 tests/system-common-macros.at |    9 +-
 tests/system-ovn-kmod.at      |   90 +--
 tests/system-ovn.at           | 1089 ++++-----------------------------
 6 files changed, 341 insertions(+), 1089 deletions(-)

diff --git a/tests/ovn-macros.at b/tests/ovn-macros.at
index cc16fe0298..214cb9b4bb 100644
--- a/tests/ovn-macros.at
+++ b/tests/ovn-macros.at
@@ -179,6 +179,24 @@ m4_define([OVN_WAIT_REMOTE_OUTPUT_FLOWS],
 m4_define([OVN_WAIT_REMOTE_INPUT_FLOWS],
   [ovn_wait_remote_input_flows "$1" "$2" "__file__:__line__"])
 
+# OVN_CLEANUP_NORTHD
+#
+# Gracefully terminate all central OVN daemons: NB, SB and ovn-northd.
+m4_define([OVN_CLEANUP_NORTHD],[
+    as ovn-sb
+    OVS_APP_EXIT_AND_WAIT([ovsdb-server])
+
+    as ovn-nb
+    OVS_APP_EXIT_AND_WAIT([ovsdb-server])
+
+    as northd
+    OVS_APP_EXIT_AND_WAIT([ovn-northd])
+
+    if test -d northd-backup; then
+        as northd-backup
+        OVS_APP_EXIT_AND_WAIT([ovn-northd])
+    fi
+])
 
 # OVN_CLEANUP_VSWITCH(sim)
 #
diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at
index 448bc66ae6..f6eadc4b56 100644
--- a/tests/ovn-northd.at
+++ b/tests/ovn-northd.at
@@ -185,6 +185,7 @@ check_row_count HA_Chassis 0
 check_row_count Gateway_Chassis 0
 check_row_count Ha_Chassis_Group 0
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -200,6 +201,7 @@ check ovn-sbctl chassis-add hv1 geneve 127.0.0.1
 check ovn-sbctl lsp-bind S1-vm1 hv1
 wait_row_count nb:Logical_Switch_Port 1 name=S1-vm1 'up=true'
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -217,6 +219,7 @@ check ovn-nbctl --wait=sb lsp-set-type S2-p2 switch 
peer=S1-p1
 AT_CHECK([test x`ovn-nbctl lsp-get-up S1-p1` = xup])
 AT_CHECK([test x`ovn-nbctl lsp-get-up S2-p2` = xup])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -231,6 +234,7 @@ check ovn-nbctl ls-add S1
 check ovn-nbctl --wait=sb lsp-add-router-port S1 S1-R1 R1-S1
 AT_CHECK([test x`ovn-nbctl lsp-get-up S1-R1` = xup])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -249,6 +253,7 @@ check ovn-nbctl --wait=sb lsp-add-router-port S1 S1-R1 R1-S1
 check ovn-sbctl lsp-bind S1-R1 gw1
 AT_CHECK([test x`ovn-nbctl lsp-get-up S1-R1` = xup])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -266,6 +271,7 @@ check ovn-nbctl ls-add S1
 check ovn-nbctl --wait=sb lsp-add-router-port S1 S1-R1 R1-S1
 AT_CHECK([test x`ovn-nbctl lsp-get-up S1-R1` = xup])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -309,6 +315,7 @@ check ovn-nbctl --wait=sb sync
 
 wait_row_count nb:Logical_Router_Port 0 name=lrp1 status:hosting-chassis=ch1
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -321,6 +328,7 @@ check ovn-nbctl lrp-add ro lrp0 00:00:00:00:00:01 
192.168.1.1/24
 check ovn-nbctl --wait=sb set logical_router_port lrp0 external_ids=test=123
 check_column "test=123" sb:Port_Binding external_ids logical_port=lrp0
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -430,6 +438,7 @@ AT_CHECK_UNQUOTED([ovn-sbctl get Port_Binding ${uuid} 
options:ipv6_ra_prefixes],
 [1], [], [ovn-sbctl: no key "ipv6_ra_prefixes" in Port_Binding record 
"${uuid}" column options
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -464,13 +473,7 @@ check ovn-nbctl --wait=sb lsp-add sw p3
 # northd created with default unixctl path successfully created port_binding 
entry
 check_row_count Port_Binding 1 logical_port=p3
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
-
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -806,13 +809,7 @@ wait_row_count HA_Chassis_Group 0
 wait_row_count Port_Binding 0 logical_port=sw0-pext2 'chassis!=[[]]'
 check_row_count HA_Chassis 0
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
-
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -905,6 +902,7 @@ ovn-sbctl list logical_flow >> after_change_active
 AT_CHECK([as northd diff before_change_active after_change_active], [0], [dnl
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -949,6 +947,7 @@ ovn-sbctl list logical_flow >> after_restart
 AT_CHECK([as northd diff before_restart after_restart], [0], [dnl
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -985,6 +984,7 @@ wait_row_count Datapath_Binding 2
 dp2=$(fetch_column Datapath_Binding _uuid external_ids:name=sw1)
 wait_column "$dp1 $dp2" Logical_DP_Group datapaths
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -1019,6 +1019,7 @@ wait_row_count Datapath_Binding 2
 dp2=$(fetch_column Datapath_Binding _uuid external_ids:name=sw1)
 wait_column "$dp1 $dp2" Logical_DP_Group datapaths
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -1041,6 +1042,7 @@ wait_row_count Port_Binding 1 logical_port=cr-R1-S1 
options:redirect-type=bridge
 
 check ovn-nbctl lrp-set-redirect-type R1-S1 overlay
 wait_row_count Port_Binding 1 logical_port=cr-R1-S1 
options:redirect-type=overlay
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -1122,6 +1124,7 @@ echo "IPv6: stateless with match"
 check ovn-nbctl --wait=sb --match="udp" --stateless lr-nat-add R1 
dnat_and_snat fd01::1 fd11::2
 check_flow_match_sets 2 0 0 0 0 1 1
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -1171,6 +1174,7 @@ AT_CHECK([grep 'ct_[s]dnat.*172\.16\.1\.2.*3000' 
sbflows3], [1])
 
 check ovn-nbctl lr-nat-del R1 dnat_and_snat  172.16.1.1
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -1414,12 +1418,13 @@ AT_CHECK([grep -e "lr_out_snat" crflows6 | 
ovn_strip_lflows], [0], [dnl
   table=??(lr_out_snat        ), priority=35   , match=(ip && ip4.src == 
50.0.0.11 && ip4.dst == $disallowed_range), action=(next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
 OVN_FOR_EACH_NORTHD_NO_HV([
 AT_SETUP([check Load balancer health check and Service Monitor sync])
-ovn_start ovn-northd
+ovn_start
 check ovn-nbctl lb-add lb1 10.0.0.10:80 10.0.0.3:80,20.0.0.3:80
 
 check ovn-nbctl --wait=sb set load_balancer . ip_port_mappings:10.0.0.3=sw0-p1
@@ -1678,6 +1683,7 @@ OVS_WAIT_FOR_OUTPUT(
   table=??(ls_in_lb           ), priority=120  , match=(ct.new && ip4.dst == 
10.0.0.10 && reg1[[16..23]] == 6 && reg1[[0..15]] == 80), action=(reg0 = 0; 
reject { outport <-> inport; next(pipeline=egress,table=??);};)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -1753,6 +1759,7 @@ AT_CHECK([grep "lr_in_unsnat" sbflows | 
ovn_strip_lflows], [0], [dnl
   table=??(lr_in_unsnat       ), priority=90   , match=(ip && ip4.dst == 
192.168.2.4), action=(ct_snat;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -1839,6 +1846,7 @@ AT_CHECK([grep "lr_in_ip_input" sbflows | grep 'ip.\.dst 
== {' | grep drop | ovn
   table=??(lr_in_ip_input     ), priority=60   , match=(ip6.dst == 
{fe80::200:ff:fe00:20}), action=(drop;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -1860,6 +1868,7 @@ AT_CHECK([ovn-sbctl lflow-list lr0 | grep lr_in_unsnat | 
ovn_strip_lflows], [0],
   table=??(lr_in_unsnat       ), priority=110  , match=(ip4 && ip4.dst == 
192.168.2.3), action=(ct_snat;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -1888,6 +1897,7 @@ lr_uuid=$(ovn-nbctl get Logical_Router . _uuid)
 echo nb_uuid="$nb_uuid" lr_uuid="$lr_uuid"
 AT_CHECK([test "${nb_uuid}" = "${lr_uuid}"])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -1912,6 +1922,7 @@ AT_CHECK([ovn-nbctl --wait=sb sync], [0])
 check_column 1 Port_Binding tunnel_key logical_port=lsp1
 check_column 2 Port_Binding tunnel_key logical_port=lsp2
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -1940,6 +1951,7 @@ AT_CHECK([ovn-nbctl --wait=sb sync], [0])
 
 check_row_count HA_Chassis_Group 0
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -1990,6 +2002,7 @@ lsp2
 check ovn-nbctl --wait=sb clear Port_Group pg_test ports
 AT_CHECK([test 0 = $(ovn-sbctl --columns _uuid list Port_Group | grep uuid 
-c)])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -2017,6 +2030,7 @@ check ovn-nbctl --wait=sb ls-del ls1
 wait_row_count Port_Group 1
 check_row_count Port_Group 1 name=${ls2_key}_pg_test
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -2245,6 +2259,7 @@ action=(eth.dst = eth.src; eth.src = 00:00:00:00:00:02; 
arp.op = 2; /* ARP reply
 # xreg0[[0..47]] isn't used anywhere else.
 AT_CHECK([ovn-sbctl lflow-list | grep "xreg0\[[0..47\]]" | grep -vE 
'lr_in_admission|lr_in_ip_input'], [1], [])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -2358,6 +2373,7 @@ check ovn-nbctl --wait=sb sync
 AT_CHECK([ovn-sbctl lflow-list | grep "ls_out_pre_lb.*priority=100" | grep 
reg0 | ovn_strip_lflows], [0], [dnl
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -2375,6 +2391,7 @@ AT_CHECK([ovn-sbctl lflow-list | grep arp | grep 
10\.0\.0\.1], [1], [ignore])
 check ovn-nbctl --wait=sb set NB_Global . options:ignore_lsp_down=true
 AT_CHECK([ovn-sbctl lflow-list | grep arp | grep 10\.0\.0\.1], [0], [ignore])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -2449,6 +2466,7 @@ sw1flows3:  table=??(ls_out_acl_eval    ), priority=2003 
, match=(reg0[[10]] ==
 sw1flows3:  table=??(ls_out_acl_eval    ), priority=2003 , match=(reg0[[9]] == 
1 && (outport == @pg0 && ip6 && udp)), action=(reg8[[18]] = 1; next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -2580,6 +2598,7 @@ check ovn-nbctl --wait=sb remove logical_switch $sw0 acls 
$acl2
 check_meter_by_name meter_me meter_me__${acl3}
 check_meter_by_name NOT meter_me__${acl1} meter_me__${acl2}
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -2685,6 +2704,7 @@ check_row_count sb:Mirror 0
 check_column "" sb:Port_Binding mirror_rules logical_port=sw0-port1
 check_column "" sb:Port_Binding mirror_rules logical_port=sw0-port2
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -2803,6 +2823,7 @@ AT_CHECK([ovn-sbctl lflow-list ls | grep -e 
ls_in_acl_hint -e ls_out_acl_hint -e
 ])
 
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -2850,6 +2871,7 @@ AT_CHECK(
   [ovn-nbctl --wait=sb set logical-switch ls1 
other-config:requested-tnl-key=2])
 get_tunnel_keys
 AT_CHECK([test $ls2 = 3])
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -2870,6 +2892,7 @@ AT_CHECK([test 100 = $(ovn-sbctl get datapath_binding lr0 
tunnel_key)])
 AT_CHECK(
   [ovn-nbctl --wait=sb set logical-router lr1 options:requested-tnl-key=100])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -2929,6 +2952,7 @@ AT_CHECK(
 get_tunnel_keys
 AT_CHECK([test $lsp02 = 3 && test $ls1 = 123])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 OVN_FOR_EACH_NORTHD_NO_HV([
@@ -2962,6 +2986,7 @@ check ovn-nbctl set NB_Global . options:vxlan_mode=false
 check_row_count nb:Logical_Switch 4097
 wait_row_count sb:Datapath_Binding 4097
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -2992,6 +3017,7 @@ wait_row_count sb:Datapath_Binding 4095
 
 OVS_WAIT_UNTIL([grep "all datapath tunnel ids exhausted" 
northd/ovn-northd.log])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -3023,6 +3049,7 @@ wait_row_count sb:Port_Binding 2048
 
 OVS_WAIT_UNTIL([grep "all port tunnel ids exhausted" northd/ovn-northd.log])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -3047,6 +3074,7 @@ AT_CHECK([test "$(get_max_tunid)" -eq 1023])
 check ovn-nbctl --wait=sb clear logical-switch LS other-config
 AT_CHECK([test "$(get_max_tunid)" -eq 4095])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -3122,6 +3150,7 @@ AT_CHECK_UNQUOTED([ovn-sbctl --bare --columns 
_uuid,datapaths find Logical_DP_Gr
 $(cat sw_sb_uuids | sort)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -3389,6 +3418,7 @@ AT_CHECK_UNQUOTED([ovn-sbctl --bare --columns 
_uuid,datapaths find Logical_DP_Gr
                     | grep -A1 $lbg0_dp_group | tail -1], [0], [dnl
 $sw1_sb_uuid
 ])
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -3461,6 +3491,7 @@ AT_CHECK([ovn-sbctl lflow-list sw0 | grep ls_in_hairpin | 
ovn_strip_lflows], [0]
   table=??(ls_in_hairpin      ), priority=1    , match=((reg0[[6]] == 1 || 
reg0[[12]] == 1)), action=(eth.dst <-> eth.src; outport = inport; 
flags.loopback = 1; output;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -3591,6 +3622,7 @@ sed 's/reg8\[[0..15\]] == [[0-9]]*/reg8\[[0..15\]] == 
<cleared>/' | ovn_strip_lf
   table=??(lr_in_policy_ecmp  ), priority=150  , match=(reg8[[0..15]] == 
<cleared>), action=(next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -3618,6 +3650,7 @@ AT_CHECK([grep "lr_in_policy[[^_]]" lr0flows2 | 
ovn_strip_lflows | sort], [0], [
   table=??(lr_in_policy       ), priority=201  , match=(reg9[[16..31]] == 1 && 
(1)), action=(reg8[[0..15]] = 0; next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -3651,6 +3684,7 @@ AT_CHECK([grep "lr_in_policy[[^_]]" lr0flows | 
ovn_strip_lflows | sort], [0], [d
   table=??(lr_in_policy       ), priority=100  , match=(ip4.src == 
42.42.42.42), action=(reg0 = 3.3.3.3; reg5 = 2.2.2.1; eth.src = 
00:00:00:00:00:02; outport = "lrp2"; flags.loopback = 1; reg8[[0..15]] = 0; 
reg9[[9]] = 1; next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -3791,6 +3825,7 @@ ct_lb_mark {
 };
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -3933,6 +3968,7 @@ ct_lb_mark {
 };
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -3988,6 +4024,7 @@ AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal 
ls "${flow}"], [0], [dn
 output("lsp2");
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -4134,6 +4171,7 @@ check as northd ovn-appctl -t ovn-northd 
inc-engine/clear-stats
 bfd_route_policy_uuid=$(fetch_column nb:bfd _uuid logical_port=r0-sw9)
 AT_CHECK([ovn-nbctl list logical_router_policy | sed s/,//g | grep -q 
"$bfd_route_policy_uuid"])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -4312,6 +4350,7 @@ check ovn-nbctl --wait=hv ls-copp-add copp0 sw2
 ls2_copp_uuid=$(ovn-nbctl get Logical_Switch sw2 copp)
 AT_CHECK([test "$ls2_copp_uuid" = "$copp_uuid"])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -4330,6 +4369,7 @@ check ovn-nbctl --wait=sb sync
 
 AT_CHECK([grep -qE 'duplicate logical port p1' northd/ovn-northd.log], [0])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -4348,6 +4388,7 @@ check ovn-nbctl --wait=sb sync
 
 AT_CHECK([grep -qE 'duplicate logical router port p1' northd/ovn-northd.log], 
[0])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -4363,6 +4404,7 @@ check ovn-nbctl --wait=sb sync
 
 AT_CHECK([grep -qE 'duplicate logical.*port p1' northd/ovn-northd.log], [0])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -4637,6 +4679,7 @@ AT_CHECK([grep "lr_out_post_undnat" lr0flows | 
ovn_strip_lflows], [0], [dnl
   table=??(lr_out_post_undnat ), priority=50   , match=(ip && ct.new), 
action=(ct_commit { } ; next; )
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -4679,6 +4722,7 @@ check ovn-nbctl clear logical_switch_port sw0-p1 
ha_chassis_group -- set logical
 wait_row_count ha_chassis_group 0
 check_column "" Port_Binding chassis logical_port=sw0-p1
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -4741,6 +4785,7 @@ wait_row_count FDB 0
 
 ovn-sbctl list FDB
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -4913,6 +4958,7 @@ AT_CHECK([ovn-sbctl dump-flows sw0 | grep "ls_in_lb " | 
ovn_strip_lflows ], [0],
   table=??(ls_in_lb           ), priority=110  , match=(ct.trk && ct.est && 
!ct.rpl && reg0[[19]] == 1 && ip6), action=(xxreg1 = ct_ip6_dst(); 
reg2[[0..15]] = ct_tp_dst(); next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -5018,6 +5064,7 @@ AT_CHECK([grep "ls_out_stateful" sw0flows | 
ovn_strip_lflows], [0], [dnl
   table=??(ls_out_stateful    ), priority=110  , match=(reg0[[1]] == 1 && 
reg0[[13]] == 0 && reg8[[21]] == 1), action=(ct_commit { ct_mark.blocked = 0; 
ct_mark.allow_established = reg0[[20]]; ct_label.acl_id = reg2[[16..31]]; 
ct_label.nf_group = 1; ct_label.nf_group_id = reg0[[22..29]]; }; next;)
   table=??(ls_out_stateful    ), priority=110  , match=(reg0[[1]] == 1 && 
reg0[[13]] == 1 && reg8[[21]] == 1), action=(ct_commit { ct_mark.blocked = 0; 
ct_mark.allow_established = reg0[[20]]; ct_mark.obs_stage = reg8[[19..20]]; 
ct_mark.obs_collector_id = reg8[[8..15]]; ct_label.obs_point_id = reg9; 
ct_label.acl_id = reg2[[16..31]]; ct_label.nf_group = 1; ct_label.nf_group_id = 
reg0[[22..29]]; }; next;)
 ])
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -5063,6 +5110,7 @@ AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --ct new 
ls "$flow" | grep -e ls_
     ct_commit { ct_mark.blocked = 0; ct_mark.allow_established = reg0[[20]]; 
ct_mark.obs_stage = reg8[[19..20]]; ct_mark.obs_collector_id = reg8[[8..15]]; 
ct_label.obs_point_id = reg9; ct_label.acl_id = reg2[[16..31]]; 
ct_label.nf_group = 0; ct_label.nf_group_id = 0; };
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -5146,6 +5194,7 @@ AT_CHECK([grep -c "ct.inv" sw0flows], [0], [dnl
 2
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -5199,7 +5248,7 @@ cp $PKIDIR/$key $key
 cp $PKIDIR/$cert $cert
 check ovn-nbctl --wait=sb sync
 
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -5233,6 +5282,7 @@ check ovn-nbctl --wait=sb sync
 
 AT_CHECK([ovn_trace --minimal 'inport == "sw1-port1" && eth.src == 
50:54:00:00:00:03 && eth.dst == 00:00:00:00:ff:02 && ip4.dst == 42.42.42.42 && 
ip4.src == 11.0.0.2 && ip.ttl == 64' | grep "output(\"sw0-port1\")"], [1], 
[ignore])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -5266,6 +5316,7 @@ check ovn-nbctl --wait=sb sync
 
 AT_CHECK([ovn_trace --minimal 'inport == "sw1-port1" && eth.src == 
50:54:00:00:00:03 && eth.dst == 00:00:00:00:ff:02 && ip6.dst == fd42::42 && 
ip6.src == fd11::2 && ip.ttl == 64' | grep "output(\"sw0-port1\")"], [1], 
[ignore])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -5313,6 +5364,7 @@ AT_CHECK([grep -w "ls_in_dhcp_options" sw0flows | 
ovn_strip_lflows], [0], [dnl
   table=??(ls_in_dhcp_options ), priority=100  , match=(inport == "sw0-port1" 
&& eth.src == 50:54:00:00:00:01 && (ip4.src == {10.0.0.2, 0.0.0.0} && ip4.dst 
== {10.0.0.1, 255.255.255.255}) && udp.src == 68 && udp.dst == 67), 
action=(reg0[[3]] = put_dhcp_opts(offerip = 10.0.0.2, hostname = "bar", 
lease_time = 3600, netmask = 255.255.255.0, router = 10.0.0.1, server_id = 
10.0.0.1); next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -5579,6 +5631,7 @@ check ovn-nbctl --wait=sb clear logical_router_port 
ro2-sw ha_chassis_group
 
 check_lflows 0
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -5795,6 +5848,7 @@ AT_CHECK([grep "ls_in_l2_lkup" ls1_lflows | 
ovn_strip_lflows], [0], [dnl
 AT_CHECK([grep "ls_in_l2_lkup" ls1_lflows | grep "192.168.4.100" | grep -v 
clone | grep "_MC_flood" -c], [1], [0
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -6620,6 +6674,7 @@ AT_CHECK([ovn-sbctl dump-flows lr0 | grep "lr_in_dnat" | 
ovn_strip_lflows], [0],
   table=??(lr_in_dnat         ), priority=70   , match=(ct.rel && !ct.est && 
!ct.new && !ct.rpl && ct_mark.skip_snat == 1), action=(flags.skip_snat_for_lb = 
1; ct_commit_nat;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -6641,6 +6696,7 @@ check ovn-nbctl --wait=sb sync
 check_row_count Load_Balancer 1
 check test "$nlb" == "$(fetch_column Load_Balancer _uuid)"
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -6668,6 +6724,7 @@ AT_CHECK([ovn-sbctl --columns=tags list logical_flow | 
grep lsp0 -c], [0], [dnl
 3
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -6966,6 +7023,7 @@ check ovn-nbctl --wait=sb sync
 ovn-sbctl dump-flows lr0 > lr0flows
 AT_CHECK([grep -E "lr_out_post_snat.*ct_commit_nat" lr0flows], [1])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])])
 
@@ -7122,6 +7180,7 @@ AT_CHECK([grep -e "(lr_in_ip_routing   ).*3.3.0.0" 
lr0flows | sed 's/table=../ta
   table=??(lr_in_ip_routing   ), priority=133  , match=(reg7 == 0 && ip4.dst 
== 3.3.0.0/16 && udp), action=(ip.ttl--; flags.loopback = 1; reg8[[0..15]] = 1; 
reg8[[16..31]] = select(values=(1, 2); 
hash_fields="ip_dst,ip_proto,ip_src,udp_dst,udp_src");)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -7176,6 +7235,7 @@ AT_CHECK([grep -e "lr_in_arp_request" lr0flows | 
ovn_strip_lflows], [0], [dnl
   table=??(lr_in_arp_request  ), priority=200  , match=(eth.dst == 
00:00:00:00:00:00 && reg9[[9]] == 0 && xxreg0 == 2001:db8::20), action=(nd_ns { 
eth.dst = 33:33:ff:00:00:20; ip6.dst = ff02::1:ff00:20; nd.target = 
2001:db8::20; output; }; output;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -7252,6 +7312,7 @@ AT_CHECK([grep lr_in_gw_redirect lrflows | grep cr-DR | 
ovn_strip_lflows], [0],
   table=??(lr_in_gw_redirect  ), priority=50   , match=(outport == "DR-S3"), 
action=(outport = "cr-DR-S3"; next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -7344,6 +7405,7 @@ AT_CHECK([grep lr_in_gw_redirect lrflows | grep lrp1 | 
ovn_strip_lflows], [0], [
 
 wait_row_count Port_Binding 1 logical_port=cr-lrp1 
options:always-redirect="true"
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -7390,13 +7452,14 @@ check ovn-nbctl --wait=sb set logical_switch_port 
S1-vm2 \
 
 wait_row_count Port_binding 1 logical-port=S1-vm2 requested_chassis=$ch2_uuid
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
 
 OVN_FOR_EACH_NORTHD_NO_HV([
 AT_SETUP([check options: force_fdb_lookup for LSP])
-ovn_start NORTHD_TYPE
+ovn_start
 check ovn-nbctl ls-add S1
 check ovn-nbctl --wait=sb lsp-add S1 S1-vm1
 check ovn-nbctl --wait=sb lsp-add S1 S1-localnet
@@ -7428,13 +7491,14 @@ AT_CHECK([grep -e "ls_in_.*_fdb.*S1-vm1" S1flows | 
ovn_strip_lflows], [0], [dnl
 #Verify the flows for a non-default port type (localnet port)
 AT_CHECK([grep -e "ls_in_.*_fdb.*S1-localnet" S1flows], [1], [])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
 
 OVN_FOR_EACH_NORTHD_NO_HV([
 AT_SETUP([check options:pkt_clone_type for LSP])
-ovn_start NORTHD_TYPE
+ovn_start
 check ovn-nbctl ls-add S1
 check ovn-nbctl --wait=sb lsp-add S1 S1-vm1
 check ovn-nbctl --wait=sb lsp-add S1 S1-vm2
@@ -7468,12 +7532,13 @@ AT_CHECK([grep -e "ls_in_l2_lkup.*S1-vm1" S1flows | 
ovn_strip_lflows], [0], [dnl
   table=??(ls_in_l2_lkup      ), priority=50   , match=(eth.dst == 
50:54:00:00:00:01), action=(outport = "S1-vm1"; output;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
 OVN_FOR_EACH_NORTHD_NO_HV([
 AT_SETUP([implicit unknown addresses on switch-switch LSPs])
-ovn_start NORTHD_TYPE
+ovn_start
 check ovn-nbctl ls-add S1
 check ovn-nbctl lsp-add S1 S1-vm
 check ovn-nbctl lsp-set-addresses S1-vm "50:54:00:00:00:01 192.168.0.1"
@@ -7543,6 +7608,7 @@ AT_CHECK([grep -E "ls_.*fdb.*S1-" S1flows | 
ovn_strip_lflows], [0], [dnl
   table=??(ls_in_put_fdb      ), priority=100  , match=(inport == "S1-S2" && 
reg0[[11]] == 0), action=(put_fdb(inport, eth.src); next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -7563,6 +7629,7 @@ AT_CHECK([ovn-sbctl --id=@dp create Datapath_Binding 
nb_uuid=$ls1_uuid type=logi
 # northd should delete one of the datapaths in the end
 wait_row_count Datapath_Binding 1
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -7606,6 +7673,7 @@ AT_CHECK_UNQUOTED([ovn_trace --minimal "${flow}" --lb-dst 
42.42.42.42:4242], [0]
 ct_dnat /* assuming no un-dnat entry, so no change */ /* default (use --ct to 
customize) */;
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -7673,6 +7741,7 @@ AT_CHECK([grep -e "(lr_in_ip_routing   ).*outport" 
lr0flows | ovn_strip_lflows],
   table=??(lr_in_ip_routing   ), priority=518  , match=(inport == "lrp2" && 
ip6.dst == fe80::/64), action=(ip.ttl--; reg8[[0..15]] = 0; xxreg0 = ip6.dst; 
xxreg1 = fe80::200:ff:fe00:201; eth.src = 00:00:00:00:02:01; outport = "lrp2"; 
flags.loopback = 1; reg9[[9]] = 0; next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -7704,6 +7773,7 @@ check ovn-nbctl --wait=sb lsp-set-options S1-R1 
router-port=R1-S1 nat-addresses=
 
 AT_CHECK([ovn-sbctl get Port_Binding S1-R1 nat_addresses |grep -q 
172.16.1.10], [1])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -7736,6 +7806,7 @@ check ovn-nbctl --wait=sb lr-nat-add R1 snat 172.16.1.4 
10.0.0.0/24
 AT_CHECK([ovn-sbctl get Port_Binding S1-R1 nat_addresses | grep -q 
172.16.1.1], [1])
 AT_CHECK([ovn-sbctl get Port_Binding S1-R1 nat_addresses | grep -q 
172.16.1.4], [0])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -7766,6 +7837,7 @@ check ovn-nbctl --wait=sb set Logical_Switch S1 \
 
 AT_CHECK([ovn-sbctl lflow-list S1 | grep ls_in_l2_lkup | grep -q 
'match=(eth.mcast && (arp.op == 1 || nd_ns)), action=(outport = "_MC_flood_l2"; 
output;)'], [1])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -8017,6 +8089,7 @@ check ovn-nbctl --wait=sb sync
 check_log_flows_count 0 out
 check_log_flows_count 0 in
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -8061,6 +8134,7 @@ AT_CHECK([grep -e 'lr_in_ip_routing   ' lrflows | grep -e 
'igmp' -e 'mld' | ovn_
   table=??(lr_in_ip_routing   ), priority=10550, match=(eth.src == 
00:00:00:00:00:02 && igmp), action=(drop;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -8256,6 +8330,7 @@ AT_CHECK([grep -e "ls_in_stateful" lsflows | 
ovn_strip_lflows], [0], [dnl
   table=??(ls_in_stateful     ), priority=110  , match=(reg0[[1]] == 1 && 
reg0[[13]] == 1 && reg8[[21]] == 1), action=(ct_commit { ct_mark.blocked = 0; 
ct_mark.allow_established = reg0[[20]]; ct_mark.obs_stage = reg8[[19..20]]; 
ct_mark.obs_collector_id = reg8[[8..15]]; ct_label.obs_point_id = reg9; 
ct_label.acl_id = reg2[[16..31]]; ct_label.nf_group = 1; ct_label.nf_group_id = 
reg0[[22..29]]; }; next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -8448,6 +8523,7 @@ check ovn-nbctl --wait=sb lr-nat-del DR dnat_and_snat
 AT_CHECK([ovn-sbctl dump-flows DR | grep -e lr_in_unsnat -e lr_out_snat -e 
lr_in_dnat -e lr_out_undnat | grep ct_snat| wc -l], [0], [0
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -8485,6 +8561,7 @@ check_row_count Static_MAC_Binding 1 logical_port=lr0-p1 
ip=192.168.10.100 mac="
 check ovn-nbctl --wait=sb set Static_MAC_Binding $mb_uuid ip=192.168.10.200
 check_row_count Static_MAC_Binding 1 logical_port=lr0-p1 ip=192.168.10.200 
mac="00\:00\:22\:33\:55\:66"
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -8506,6 +8583,7 @@ check ovn-nbctl lrp-del lr-lrp -- lr-del lr -- lr-add lr 
-- lrp-add lr lr-lrp 00
 wait_row_count sb:Static_MAC_Binding 1
 check ovn-nbctl --wait=sb sync
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -8533,6 +8611,7 @@ AT_CHECK([cat lrflows | grep -e lr_in_lookup_neighbor -e 
lr_in_learn_neighbor |
   table=??(lr_in_lookup_neighbor), priority=100  , match=(nd_ns), 
action=(reg9[[2]] = lookup_nd(inport, ip6.src, nd.sll); next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -9232,6 +9311,7 @@ AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal 
ls "${flow}"], [0], [dn
 ct_next(ct_state=new|trk);
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -9276,6 +9356,7 @@ AT_CHECK([as northd ovn-appctl -t ovn-northd 
parallel-build/set-n-threads 1 2],
 ovn-appctl: ovn-northd: server returned an error
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -9344,6 +9425,7 @@ check ovn-nbctl --wait=sb sync
 ovn-sbctl dump-flows | DUMP_FLOWS_SORTED > flows3
 AT_CHECK([diff flows1 flows3])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -9557,6 +9639,7 @@ ovn_strip_lflows ], [0], [dnl
   table=??(ls_out_check_port_sec), priority=100  , match=(eth.mcast), 
action=(reg0[[15]] = 0; next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -9591,6 +9674,7 @@ AT_CHECK([ovn-sbctl dump-flows ls0 | grep -e 
'ls_in_\(put\|lookup\)_fdb' | ovn_s
   table=??(ls_in_put_fdb      ), priority=0    , match=(1), action=(next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -9679,6 +9763,7 @@ AT_CHECK([grep "ls_in_lb " S1flows | ovn_strip_lflows], 
[0], [dnl
 
 check_column "" sb:load_balancer datapaths name=lb0
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -9714,6 +9799,7 @@ AT_CHECK([grep "lr_in_arp_resolve" R1flows | grep 
priority=90 | ovn_strip_lflows
   table=??(lr_in_arp_resolve  ), priority=90   , match=(outport == "R1-PUB" && 
ip6.src == 1000::3 && is_chassis_resident("S0-P0")), action=(get_nd(outport, 
xxreg0); next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -9898,12 +9984,13 @@ AT_CHECK([grep "lr_in_dnat " R1flows_2lbs | 
ovn_strip_lflows], [0], [dnl
 ])
 
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
 OVN_FOR_EACH_NORTHD_NO_HV([
 AT_SETUP([check options:disable_arp_nd_rsp for LSP])
-ovn_start NORTHD_TYPE
+ovn_start
 check ovn-nbctl ls-add S1
 check ovn-nbctl --wait=sb lsp-add S1 S1-vm1
 check ovn-nbctl --wait=sb lsp-set-addresses S1-vm1 "50:54:00:00:00:010 
192.168.0.10 fd00::10"
@@ -9929,6 +10016,7 @@ AT_CHECK([grep -e "ls_in_arp_rsp" S1flows | 
ovn_strip_lflows], [0], [dnl
   table=??(ls_in_arp_rsp      ), priority=0    , match=(1), action=(next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -10033,6 +10121,7 @@ check ovn-nbctl --wait=sb sync
 AT_CHECK([as northd ovn-appctl -t ovn-northd inc-engine/show-stats 
sync_to_sb_addr_set recompute], [0], [0
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -10287,6 +10376,7 @@ dnl Expect both ACLs on sw1 and sw2
 check_acl_lflows 1 1 1 1
 CHECK_NO_CHANGE_AFTER_RECOMPUTE
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -10415,6 +10505,7 @@ AT_CHECK([ovn-sbctl dump-flows | grep "ls_in_acl" | 
grep "match=(1)"  | ovn_stri
   table=??(ls_in_acl_sample   ), priority=0    , match=(1), action=(next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -10460,6 +10551,7 @@ check ovn-nbctl destroy Chassis_Template_Var hv2
 check ovn-nbctl --wait=sb sync
 check_row_count sb:Chassis_Template_Var 0
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -10488,6 +10580,7 @@ AT_CHECK([as northd ovn-appctl -t ovn-northd 
debug/chassis-features-list | grep
 mac_binding_timestamp: true
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -10510,6 +10603,7 @@ AT_CHECK([fetch_column sb:Port_Binding options 
logical_port=public |grep -q 'qos
 check ovn-nbctl --wait=sb set Logical_Switch_Port public 
options:qos_min_rate=200000 options:network_name=phys
 AT_CHECK([fetch_column sb:Port_Binding options logical_port=public |grep -q 
'qos_physical_network=phys'])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -10545,6 +10639,7 @@ AT_CHECK([ovn-sbctl lflow-list ls | grep qos | 
ovn_strip_lflows], [0], [dnl
   table=??(ls_out_qos         ), priority=103  , match=(ip4), action=(ip.dscp 
= 17; pkt.mark = 18; next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -10671,6 +10766,7 @@ acl_test from-lport "" pg ls_in_acl_eval 
ls_in_acl_action
 acl_test from-lport "--apply-after-lb" pg ls_in_acl_after_lb_eval 
ls_in_acl_after_lb_action
 acl_test to-lport "" pg ls_out_acl_eval ls_out_acl_action
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -10717,6 +10813,7 @@ acl_test from-lport "" pg ls_in_acl_eval
 acl_test from-lport "--apply-after-lb" pg ls_in_acl_after_lb_eval
 acl_test to-lport "" pg ls_out_acl_eval
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -10777,6 +10874,7 @@ AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --ct new 
s1 "$flow" | grep -e ls_
     ct_commit { ct_mark.blocked = 0; ct_mark.allow_established = reg0[[20]]; 
ct_label.acl_id = reg2[[16..31]]; ct_label.nf_group = 0; ct_label.nf_group_id = 
0; };
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -10836,6 +10934,7 @@ AT_CHECK([ovn-sbctl lflow-list sw | grep ls_out_pre_lb 
| grep priority=110 | gre
   table=??(ls_out_pre_lb      ), priority=110  , match=(ip && outport == 
"sw-ln"), action=(flags.pkt_sampled = 0; ct_clear; next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -10859,6 +10958,7 @@ check ovn-nbctl --wait=sb lsp-set-type p1 external
 sb_lb_recomp=$(as northd ovn-appctl -t ovn-northd inc-engine/show-stats 
sync_to_sb_lb recompute)
 AT_CHECK([test x$sb_lb_recomp != x0])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -11014,6 +11114,7 @@ check ovn-nbctl --wait=hv lsp-del lsp0-1
 check_recompute_counter 0 0
 CHECK_NO_CHANGE_AFTER_RECOMPUTE
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -11222,6 +11323,7 @@ dnl Only triggers recompute of the sync_meters and 
lflow nodes.
 check_recompute_counter 0 1 1
 CHECK_NO_CHANGE_AFTER_RECOMPUTE(1)
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -11273,6 +11375,7 @@ AT_CHECK([grep "lr_in_gw_redirect" R1flows |sed 
s'/table=../table=??/' |sort], [
   table=??(lr_in_gw_redirect  ), priority=50   , match=(outport == "R1-PUB"), 
action=(outport = "cr-R1-PUB"; next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -11340,6 +11443,7 @@ check_column $remote_chassis_uuid Port_Binding chassis 
logical_port=sw0-r1
 check ovn-nbctl --wait=hv lsp-set-type sw0-r1 router
 check_column '' Port_Binding chassis logical_port=sw0-r1
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -11982,6 +12086,7 @@ check ovn-nbctl --wait=sb lb-add lb4 10.0.0.40:4040 
10.0.40.40:4050 \
 check_engine_stats northd norecompute compute
 CHECK_NO_CHANGE_AFTER_RECOMPUTE
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -12035,6 +12140,7 @@ AT_CHECK([as northd ovn-appctl -t ovn-northd status], 
[0], [dnl
 Status: active
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -12160,6 +12266,7 @@ AT_CHECK([ovn-sbctl dump-flows S1 | grep pre_acl | 
ovn_strip_lflows], [0], [dnl
   table=??(ls_out_pre_acl     ), priority=110  , match=(nd || nd_rs || nd_ra 
|| mldv1 || mldv2 || (udp && udp.src == 546 && udp.dst == 547)), action=(next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -12202,6 +12309,7 @@ check_engine_stats lflow recompute nocompute
 check_engine_stats sync_to_sb_lb recompute compute
 CHECK_NO_CHANGE_AFTER_RECOMPUTE
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -12455,6 +12563,7 @@ AT_CHECK([echo $dpgrp_dps | grep $sw3_uuid], [0], 
[ignore])
 AT_CHECK([echo $dpgrp_dps | grep $sw4_uuid], [0], [ignore])
 AT_CHECK([echo $dpgrp_dps | grep $sw5_uuid], [0], [ignore])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -12766,12 +12875,13 @@ ovn-nbctl: constraint violation: -2 is not in the 
valid range 0 to 4294967295 (i
 ])
 check_row_count nb:QoS 0
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
 OVN_FOR_EACH_NORTHD_NO_HV([
 AT_SETUP([check DHCP RELAY])
-ovn_start NORTHD_TYPE
+ovn_start
 
 check ovn-nbctl ls-add ls0
 check ovn-nbctl lsp-add ls0 ls0-port1
@@ -12835,6 +12945,7 @@ AT_CAPTURE_FILE([lflows])
 AT_CHECK([grep -e "DHCP_RELAY_" lflows | sed 's/table=../table=??/'], [0], [dnl
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -12850,6 +12961,7 @@ check ovn-nbctl --wait=hv sync
 flow_desc=$(fetch_column Logical_flow flow_desc match='"outport == \"none\""')
 AT_CHECK([test "$flow_desc" != ""])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -13023,6 +13135,7 @@ check_engine_stats fdb_aging recompute nocompute
 check_engine_stats northd recompute nocompute
 check_engine_stats lflow recompute nocompute
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 
 OVN_FOR_EACH_NORTHD_NO_HV([
@@ -13041,6 +13154,7 @@ check_engine_stats lflow recompute nocompute
 check_engine_stats global_config recompute nocompute
 CHECK_NO_CHANGE_AFTER_RECOMPUTE
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -13065,6 +13179,7 @@ AT_CHECK([ovn-sbctl lflow-list | grep 
ls_in_l2_unknown.*sample | ovn_strip_lflow
   table=??(ls_in_l2_unknown   ), priority=50   , match=(outport == "none"), 
action=(sample(probability=65535,collector_set=123,obs_domain=42,obs_point=$cookie);
 /* drop */)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -13284,6 +13399,7 @@ AT_CHECK_UNQUOTED([ovn_trace --ct est --ct est ls 
"$flow" | TRACE_FILTER], [0],
     reg9 = 0;
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -13558,6 +13674,7 @@ AT_CHECK_UNQUOTED([ovn_trace --ct est --ct est ls 
"$flow" | TRACE_FILTER], [0],
     reg9 = 0;
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -13618,6 +13735,7 @@ action=(flags.pkt_sampled = 1; 
sample(probability=20000,collector_set=100,obs_do
 action=(flags.pkt_sampled = 1; 
sample(probability=10000,collector_set=100,obs_domain=42,obs_point=reg3); next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -13670,6 +13788,7 @@ AT_CHECK([ovn-sbctl dump-flows lr | grep lr_in_dnat | 
ovn_strip_lflows], [0], [d
   table=??(lr_in_dnat         ), priority=320  , match=(ip && ip4.dst == 
10.0.0.100 && (udp)), action=(flags.loopback = 1; ct_dnat(10.0.0.20);)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -14119,6 +14238,7 @@ AT_CHECK([grep -Fe "172.168.0.110" -e "172.168.0.120" 
-e "10.0.0.3" -e "20.0.0.3
   table=??(ls_in_l2_lkup      ), priority=80   , match=(flags[[1]] == 0 && 
arp.op == 1 && arp.tpa == 172.168.0.120), action=(clone {outport = 
"public-lr0"; output; }; outport = "_MC_flood_l2"; output;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -14219,6 +14339,7 @@ check ovn-nbctl --wait=sb set logical_router_port lr-ls 
options:routing-protocol
 check ovn-nbctl --wait=sb set logical_router_port lr-ls 
options:routing-protocols=BGP,BFD
 check_no_redirect
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -14324,6 +14445,7 @@ AT_CHECK([grep "lr_out_snat" lr1flows | 
ovn_strip_lflows], [0], [dnl
   table=??(lr_out_snat        ), priority=160  , match=(ip4 && ((ip4.src == 
172.16.0.103) || (ip4.src == 172.16.0.102) || (ip4.src == 172.16.0.101)) && 
(inport == "lr1_public" || outport == "lr1_public") && 
is_chassis_resident("cr-lr1_public") && tcp), action=(ip4.src = 30.0.0.1; next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -14429,6 +14551,7 @@ AT_CHECK([grep "lr_out_snat" lr1flows | 
ovn_strip_lflows], [0], [dnl
   table=??(lr_out_snat        ), priority=160  , match=(ip6 && ((ip6.src == 
2001:db8:aaaa:3::103) || (ip6.src == 2001:db8:aaaa:3::102) || (ip6.src == 
2001:db8:aaaa:3::101)) && (inport == "lr1_public" || outport == "lr1_public") 
&& is_chassis_resident("cr-lr1_public") && tcp), action=(ip6.src = 
2001:db8:cccc::1; next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -14512,6 +14635,7 @@ AT_CHECK([grep "lr_in_dnat" lr1flows | ovn_strip_lflows 
| grep "30.0.0.1"], [0],
   table=??(lr_in_dnat         ), priority=110  , match=(ct.new && !ct.rel && 
ip4 && ip4.dst == 30.0.0.1 && is_chassis_resident("cr-lr1_public")), 
action=(ct_lb_mark(backends=172.16.0.103,172.16.0.102,172.16.0.101);)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -14573,6 +14697,7 @@ check_engine_stats bfd_sync norecompute compute
 check_engine_stats sync_to_sb_lb norecompute compute
 check_engine_stats sync_to_sb_pb norecompute compute
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -14655,6 +14780,7 @@ check_uuid ovn-sbctl create RBAC_Role name=custom-role 
permissions:Load_Balancer
 OVS_WAIT_UNTIL([rbr_match_builtin])
 check rbr_match_custom
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 
 OVN_FOR_EACH_NORTHD_NO_HV([
@@ -14716,6 +14842,7 @@ AT_CHECK([ovn-sbctl lflow-list S2 | grep 
ls_in_acl_action | grep priority=500 |
   table=??(ls_in_acl_action   ), priority=500  , match=(reg8[[30..31]] == 0), 
action=(reg8[[30..31]] = 1; next(pipeline=ingress,table=??);)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -14803,7 +14930,7 @@ AT_CLEANUP
 
 OVN_FOR_EACH_NORTHD_NO_HV([
 AT_SETUP([Transit router - remote ports])
-ovn_start NORTHD_TYPE
+ovn_start
 
 check ovn-sbctl chassis-add hv2 geneve 192.168.0.12 \
     -- set chassis hv2 other_config:is-remote=true
@@ -14849,6 +14976,7 @@ check ovn-nbctl --wait=sb sync
 # Removing "is-remote" from hv4 should change the tr-az4 back to patch port
 check_row_count Port_Binding 1 logical_port=tr-az4 type=patch
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -14989,6 +15117,7 @@ AT_CHECK([ovn-sbctl lflow-list sw | grep 
ls_out_acl_eval | grep priority=2002 |
   table=??(ls_out_acl_eval    ), priority=2002 , match=((ip)), action=(next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -15059,6 +15188,7 @@ check_row_count Advertised_Route 1 logical_port=$pb3
 check ovn-nbctl --wait=sb lr-del lr0
 check_row_count Advertised_Route 0
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -15126,6 +15256,7 @@ check_row_count Advertised_Route 1
 check_column 2001:db8:1::/64 Advertised_Route ip_prefix \
     datapath=$datapath logical_port=$sw1
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -15294,6 +15425,7 @@ AT_CHECK([grep -w "lr_in_ip_routing" lr0flows | 
ovn_strip_lflows], [0], [dnl
   table=??(lr_in_ip_routing   ), priority=518  , match=(inport == "lr0-sw0" && 
ip6.dst == fe80::/64), action=(ip.ttl--; reg8[[0..15]] = 0; xxreg0 = ip6.dst; 
xxreg1 = fe80::200:ff:fe00:ff01; eth.src = 00:00:00:00:ff:01; outport = 
"lr0-sw0"; flags.loopback = 1; reg9[[9]] = 0; next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -15425,6 +15557,7 @@ AT_CHECK([grep -w "lr_in_ip_routing" lr0flows | sed -e 
's/reg8\[[0..15\]] = [[12
   table=??(lr_in_ip_routing   ), priority=518  , match=(inport == "lr0-sw1" && 
ip6.dst == fe80::/64), action=(ip.ttl--; reg8[[0..15]] = 0; xxreg0 = ip6.dst; 
xxreg1 = fe80::200:ff:fe00:ff02; eth.src = 00:00:00:00:ff:02; outport = 
"lr0-sw1"; flags.loopback = 1; reg9[[9]] = 0; next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -15452,6 +15585,7 @@ check ovn-nbctl --wait=sb                             \
        -- lrp-add lr lrp 00:00:00:00:00:01 1.1.1.1/24
 check_row_count Learned_Route 0
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -15553,6 +15687,7 @@ check_row_count Advertised_Route 5 tracked_port!='[[]]'
 check_column $sw0sw1 Advertised_Route tracked_port \
     datapath=$datapath logical_port=$sw0 ip_prefix=10.0.0.42
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -15586,6 +15721,7 @@ AT_CHECK([fetch_column sb:Port_Binding options 
logical_port=lr0-sw0 | grep -q 'd
 AT_CHECK([fetch_column sb:Port_Binding options logical_port=lr0-sw0 | grep -q 
'dynamic-routing-vrf-name=myvrf'])
 AT_CHECK([fetch_column sb:Port_Binding options logical_port=lr0-sw0 | grep -q 
'dynamic-routing-port-name=myif'])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -15649,6 +15785,7 @@ check_column 1.1.1.1 Advertised_Route ip_prefix \
     tracked_port=$int_lrp_pb
 check_row_count Advertised_Route 1
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -15878,6 +16015,7 @@ check_engine_compute group_ecmp_route recompute
 check_engine_compute lflow recompute
 CHECK_NO_CHANGE_AFTER_RECOMPUTE
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -16144,6 +16282,7 @@ AT_CHECK([grep "lr_out_snat" lr0flows | 
ovn_strip_lflows], [0], [dnl
   table=??(lr_out_snat        ), priority=25   , match=(ip && ip4.src == 
10.0.0.0/24 && (!ct.trk || !ct.rpl)), action=(ct_snat(172.168.0.10);)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -16309,6 +16448,7 @@ check ovn-nbctl lr-del lr0 -- lr-del dr
 check ovn-nbctl --wait=sb sync
 check_row_count Advertised_Route 0
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -16474,6 +16614,7 @@ check ovn-nbctl lr-del lr0 -- lr-del dr
 check ovn-nbctl --wait=sb sync
 check_row_count Advertised_Route 0
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -16601,6 +16742,7 @@ check_row_count Advertised_Route 3
 check ovn-nbctl --wait=sb lr-del lr0
 check_row_count Advertised_Route 0
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -16728,6 +16870,7 @@ check_row_count Advertised_Route 3
 check ovn-nbctl --wait=sb lr-del lr0
 check_row_count Advertised_Route 0
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -16789,6 +16932,7 @@ dnl advertised for each lr-ext.
 n_advertised_routes=$((2 * ($n_ext_rtrs + 1)))
 check_row_count Advertised_Route $n_advertised_routes
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -16836,6 +16980,7 @@ check_row_count Port_Binding 1 logical_port=lrp0 
options:peer{not-in}lrp1
 check_row_count Port_Binding 1 logical_port=lrp1 options:peer{not-in}lrp2
 check_row_count Port_Binding 1 logical_port=lrp2 options:peer{not-in}lrp0
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -16852,6 +16997,7 @@ check ovn-nbctl --wait=sb sync \
 
 check grep -q "Bad configuration: The peer of the switch port 'ls-lrp1' (LRP 
peer: 'lrp1') has its own peer configuration: 'lrp0'" northd/ovn-northd.log
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -16965,6 +17111,7 @@ AT_CHECK([grep -E flags.network_id lrflows | 
ovn_strip_lflows], [0], [dnl
   table=??(lr_out_snat        ), priority=110  , 
match=(flags.force_snat_for_lb == 1 && flags.network_id == 9 && ip4 && outport 
== "lrp-server"), action=(ct_snat(6.5.1.1);)
   table=??(lr_out_snat        ), priority=110  , 
match=(flags.force_snat_for_lb == 1 && flags.network_id == 9 && ip6 && outport 
== "lrp-server"), action=(ct_snat(ff01::b);)
 ])
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -16992,6 +17139,7 @@ AT_CHECK([ovn_strip_lflows < lrflows | grep 
priority=105 | grep -c "flags.force_
 1
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -17045,6 +17193,7 @@ check_column "$mirrorrule1uuid" nb:Mirror mirror_rules 
mirror_rules="$mirrorrule
 check ovn-nbctl mirror-rule-del mirror1
 check_column "$mirrorrule1uuid" nb:Mirror mirror_rules mirror_rules=""
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -17233,6 +17382,7 @@ AT_CHECK([grep -e "ls_out_pre_acl" lflow-list | 
ovn_strip_lflows], [0], [dnl
   table=??(ls_out_pre_acl     ), priority=110  , match=(eth.src == 
$svc_monitor_mac), action=(next;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -17313,6 +17463,7 @@ AT_CHECK([cat trace | grep output], [0], [dnl
     output("sw0-p1");
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -17379,6 +17530,7 @@ check_engine_stats northd norecompute compute
 check_engine_stats lflow norecompute compute
 CHECK_NO_CHANGE_AFTER_RECOMPUTE
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -17419,12 +17571,13 @@ call_seq=`grep -E \
 
 AT_CHECK([echo $call_seq | grep -qE "^I*uuI*$"], [0])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
 OVN_FOR_EACH_NORTHD_NO_HV([
 AT_SETUP([enable-stateless-acl-with-lb usage])
-ovn_start ovn-northd
+ovn_start
 
 AS_BOX([Create logical switches and ports.])
 check ovn-nbctl ls-add sw0
@@ -17535,6 +17688,7 @@ AT_CHECK([grep -E 'ls_in_pre_stateful' sw1flows | 
ovn_strip_lflows], [0], [dnl
   table=??(ls_in_pre_stateful ), priority=120  , match=(reg0[[2]] == 1 && 
ip4.dst == 10.0.0.5), action=(reg4 = 10.0.0.5; ct_lb_mark;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -17674,6 +17828,7 @@ check_engine_stats sync_meters norecompute compute
 CHECK_NO_CHANGE_AFTER_RECOMPUTE
 check as northd ovn-appctl -t ovn-northd inc-engine/clear-stats
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -17719,6 +17874,7 @@ check ovn-nbctl --wait=sb lr-del lr1
 check_engine_stats datapath_logical_router norecompute compute
 CHECK_NO_CHANGE_AFTER_RECOMPUTE
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -17746,6 +17902,7 @@ check ovn-nbctl --wait=sb ls-del sw0
 check_engine_stats datapath_logical_switch norecompute compute
 CHECK_NO_CHANGE_AFTER_RECOMPUTE
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -17803,6 +17960,7 @@ check ovn-nbctl --wait=sb sync
 check_engine_stats datapath_sync recompute nocompute
 CHECK_NO_CHANGE_AFTER_RECOMPUTE
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -17855,6 +18013,7 @@ check ovn-nbctl --wait=sb lr-del lr0
 check_engine_stats datapath_synced_logical_switch norecompute compute
 check_engine_stats datapath_synced_logical_router norecompute compute
 CHECK_NO_CHANGE_AFTER_RECOMPUTE
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -17934,12 +18093,13 @@ check ovn-nbctl set load_balancer lb1_ipv4 
ip_port_mappings:192.168.0.1=lport1:1
 check_row_count sb:Service_Monitor 0
 
 OVS_WAIT_UNTIL([grep "Empty AZ name specified" northd/ovn-northd.log])
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
 OVN_FOR_EACH_NORTHD_NO_HV([
 AT_SETUP([LS dynamic-routing-fdb-prefer-local])
-ovn_start ovn-northd
+ovn_start
 
 AS_BOX([Create logical switch.])
 check ovn-nbctl --wait=sb  ls-add ls-evpn
@@ -17993,6 +18153,7 @@ AT_CHECK([grep 'ls_in_l2_unknown' lflows | 
ovn_strip_lflows], [0], [dnl
   table=??(ls_in_l2_unknown   ), priority=50   , match=(outport == "none" && 
remote_outport == "none"), action=(drop;)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -18252,6 +18413,7 @@ ct_next(ct_state=new|trk) {
 };
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -18442,6 +18604,7 @@ AT_CHECK(
   table=??(ls_out_network_function), priority=99   , match=(reg8[[21]] == 1 && 
reg8[[22]] == 1 && reg0[[22..29]] == 1), action=(outport = "child-4"; 
reg8[[23]] = 1; next(pipeline=ingress, table=??);)
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
@@ -18518,12 +18681,13 @@ AT_CHECK([ovn-sbctl lflow-list ls1 | grep 
ls_in_arp_rsp | grep "eth.dst == 00:00
 AT_CHECK([ovn-sbctl lflow-list ls1 | grep ls_in_arp_rsp | grep "ip6.dst == 
fd01::1" | ovn_strip_lflows], [0], [dnl
 ])
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
 OVN_FOR_EACH_NORTHD_NO_HV([
 AT_SETUP([LS EVPN Advertised_MAC_Binding sync])
-ovn_start ovn-northd
+ovn_start
 
 AS_BOX([Create logical switch])
 check ovn-nbctl ls-add ls-evpn                                          \
@@ -18556,5 +18720,6 @@ check_row_count Advertised_MAC_Binding 1
 check ovn-nbctl --wait=sb clear logical_switch ls-evpn other_config
 check_row_count Advertised_MAC_Binding 0
 
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
diff --git a/tests/ovn.at b/tests/ovn.at
index 0a36713683..30560f8837 100644
--- a/tests/ovn.at
+++ b/tests/ovn.at
@@ -9508,14 +9508,7 @@ AT_CHECK([ovn-nbctl list Logical-Switch-Port | grep 
192.10.2.127], [1])
 AT_CHECK([ovn-nbctl list Logical-Switch-Port | grep 192.10.2.128], [1])
 AT_CHECK([ovn-nbctl list Logical-Switch-Port | grep 192.10.2.180], [1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 AT_CLEANUP
 ])
 
diff --git a/tests/system-common-macros.at b/tests/system-common-macros.at
index 7cdd7e1c15..52d420a571 100644
--- a/tests/system-common-macros.at
+++ b/tests/system-common-macros.at
@@ -337,14 +337,7 @@ AT_CHECK([ovn-nbctl get logical_router_port rp-sw0 
ipv6_prefix | cut -c3-15], [0
 
 OVS_APP_EXIT_AND_WAIT([ovn-controller])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/.*error receiving.*/d
diff --git a/tests/system-ovn-kmod.at b/tests/system-ovn-kmod.at
index 061f92c93b..4e264cca8b 100644
--- a/tests/system-ovn-kmod.at
+++ b/tests/system-ovn-kmod.at
@@ -292,14 +292,7 @@ dnl offload may not work.
 AT_CHECK([ovs-appctl dpctl/dump-flows | grep 'ct_tuple4' | grep '+est'], [1], 
[ignore])
 
 OVN_CLEANUP_CONTROLLER([hv1])
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -590,14 +583,7 @@ NS_CHECK_EXEC([foo1], [nc -z fd11::a 8081])
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -749,14 +735,7 @@ done
 # Avoid checking flows on public due to different ct-zone allocation for 
cr-ports in I+P/recompute.
 OVN_CLEANUP_CONTROLLER([hv1], [], [], [public])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -900,14 +879,7 @@ ovn-appctl -t ovn-controller vlog/set info
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["
@@ -972,14 +944,7 @@ check cmp frag_test_client.expected udp_frag_test_c2.recvd
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -1041,14 +1006,7 @@ check cmp frag_test_client.expected 
udp_frag_test_c2.recvd
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -1256,14 +1214,7 @@ 
icmpv6,orig=(src=fd20::1,dst=fd20::4,id=<cleared>,type=128,code=0),reply=(src=fd
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -1514,14 +1465,7 @@ 
icmpv6,orig=(src=fd11::3,dst=fd20::4,id=<cleared>,type=128,code=0),reply=(src=fd
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -1605,14 +1549,7 @@ check cmp client_tcp.log tcp.expected
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -1730,14 +1667,7 @@ ovs-appctl revalidator/resume
 
 OVS_APP_EXIT_AND_WAIT([ovn-controller])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
diff --git a/tests/system-ovn.at b/tests/system-ovn.at
index 76f73d96e6..1023b3afd0 100644
--- a/tests/system-ovn.at
+++ b/tests/system-ovn.at
@@ -164,14 +164,7 @@ 
icmp,orig=(src=192.168.2.2,dst=192.168.1.2,id=<cleared>,type=8,code=0),reply=(sr
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -344,14 +337,7 @@ 
icmpv6,orig=(src=fd12::2,dst=fd11::2,id=<cleared>,type=128,code=0),reply=(src=fd
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -456,14 +442,7 @@ 
icmp,orig=(src=192.168.1.2,dst=172.16.1.2,id=<cleared>,type=8,code=0),reply=(src
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -568,14 +547,7 @@ 
icmpv6,orig=(src=fd10::2,dst=fd30::2,id=<cleared>,type=128,code=0),reply=(src=fd
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -790,14 +762,7 @@ 
icmp,orig=(src=192.168.1.2,dst=172.16.1.3,id=<cleared>,type=8,code=0),reply=(src
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -1016,14 +981,7 @@ 
icmpv6,orig=(src=fd11::2,dst=fd30::3,id=<cleared>,type=128,code=0),reply=(src=fd
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -1330,14 +1288,7 @@ 
icmpv6,orig=(src=fd11::2,dst=fd30::3,id=<cleared>,type=128,code=0),reply=(src=fd
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -1612,14 +1563,7 @@ OVS_WAIT_UNTIL([
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d"])
@@ -1833,14 +1777,7 @@ else
 fi
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d"])
@@ -2082,14 +2019,7 @@ AT_CHECK([test $bar3_ct -gt 0])
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d"])
@@ -2190,14 +2120,7 @@ 
tcp,orig=(src=192.168.1.2,dst=30.0.0.2,sport=<cleared>,dport=<cleared>),reply=(s
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d"])
@@ -2300,14 +2223,7 @@ 
tcp,orig=(src=fd01::2,dst=fd03::2,sport=<cleared>,dport=<cleared>),reply=(src=fd
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d"])
@@ -2549,14 +2465,7 @@ OVS_WAIT_UNTIL([check_est_flows], [check established 
flows])
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -2641,14 +2550,7 @@ done
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -2798,14 +2700,7 @@ 
tcp,orig=(src=fd72::2,dst=fd30::2,sport=<cleared>,dport=<cleared>),reply=(src=fd
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -2969,14 +2864,7 @@ test "x$ct1 = x$exp_ct1" && test "x$ct2 = x$exp_ct2"
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -3142,14 +3030,7 @@ test "x$ct1 = x$exp_ct1" && test "x$ct2 = x$exp_ct2"
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -3363,14 +3244,7 @@ test "x$ct1 = x$exp_ct1" && test "x$ct2 = x$exp_ct2" && 
test "x$ct3 = x$exp_ct3"
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -3506,14 +3380,7 @@ 
tcp,orig=(src=172.16.1.2,dst=172.16.1.11,sport=<cleared>,dport=<cleared>),reply=
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -3649,14 +3516,7 @@ 
tcp,orig=(src=fd72::2,dst=fd72::11,sport=<cleared>,dport=<cleared>),reply=(src=f
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -3832,14 +3692,7 @@ OVS_WAIT_UNTIL([
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -3995,14 +3848,7 @@ NS_CHECK_CONNECTIVITY_V6([alice1], [bar1], [fd12::2])
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -4178,14 +4024,7 @@ 
icmp,orig=(src=192.168.1.3,dst=172.16.1.4,id=<cleared>,type=8,code=0),reply=(src
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -4345,14 +4184,7 @@ 
icmpv6,orig=(src=fd20::1,dst=fd20::4,id=<cleared>,type=128,code=0),reply=(src=fd
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -4423,14 +4255,7 @@ OVS_WAIT_WHILE([ovs-appctl dpctl/dump-conntrack 
zone=$zone_id | grep .])
 # 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])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -4589,14 +4414,7 @@ OVS_WAIT_UNTIL([
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -4807,14 +4625,7 @@ OVS_WAIT_UNTIL([
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -4984,14 +4795,7 @@ wait_row_count Service_Monitor 1 status=online
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -5083,14 +4887,7 @@ NS_CHECK_EXEC([lsp], [nc 88.88.88.89 8080 -z], [0], 
[ignore], [ignore])
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -5233,14 +5030,7 @@ AT_CHECK([ovs-appctl dpctl/dump-conntrack 
zone=$zone_lsp1_id | FORMAT_CT(192.168
 
 OVS_APP_EXIT_AND_WAIT([ovn-controller])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -5327,14 +5117,7 @@ NS_CHECK_EXEC([lsp], [nc 8800::0089 8080 -z], [0], 
[ignore], [ignore])
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -5554,14 +5337,7 @@ aef0::3 udp port 90" | uniq | wc -l)
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -5787,14 +5563,7 @@ kill $(pidof tcpdump)
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -5907,14 +5676,7 @@ AT_CHECK([
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -6021,14 +5783,7 @@ NS_CHECK_EXEC([sw0-p1-lbc], [nc -z 30.0.0.10 80], [0], 
[ignore], [ignore])
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -6128,14 +5883,7 @@ 
tcp,orig=(src=42.42.42.3,dst=66.66.66.66,sport=<clnt_s_port>,dport=666),reply=(s
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -6235,14 +5983,7 @@ 
tcp,orig=(src=4242::3,dst=6666::1,sport=<clnt_s_port>,dport=666),reply=(src=4242
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -6329,14 +6070,7 @@ NS_CHECK_EXEC([sw0-p1-f], [ping -q -c 3 -i 0.3 -w 2 
10.0.0.5 | FORMAT_PING], \
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -6545,14 +6279,7 @@ 
tcp,orig=(src=172.16.0.1,dst=10.0.0.2,sport=<cleared>,dport=<cleared>),reply=(sr
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -6777,14 +6504,7 @@ 
tcp,orig=(src=fd07::1,dst=fd01::2,sport=<cleared>,dport=<cleared>),reply=(src=fd
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -6826,14 +6546,7 @@ OVS_WAIT_UNTIL([test x$(ovn-nbctl lsp-get-up sw0-port1) 
= xdown])
 
 OVN_CLEANUP_CONTROLLER([hv1], [], [], [sw0])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -6914,14 +6627,7 @@ 
icmp,orig=(src=192.168.1.2,dst=172.16.1.100,id=<cleared>,type=8,code=0),reply=(s
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/.*error receiving.*/d
@@ -7144,14 +6850,7 @@ OVS_WAIT_UNTIL([tc class show dev ovs-public | \
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/.*error receiving.*/d
@@ -7354,14 +7053,7 @@ check ovn-nbctl destroy bfd $uuid_v6
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/.*error receiving.*/d
@@ -7488,14 +7180,7 @@ AT_CHECK([ovs-appctl dpctl/dump-flows | grep ct_mark | 
grep -v ipv6 -c], [1], [d
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -7607,14 +7292,7 @@ NS_CHECK_EXEC([vm2], [ping -q -c 3 -i 0.3 -w 2 
172.18.2.10 | FORMAT_PING], \
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/.*error receiving.*/d
@@ -7713,14 +7391,7 @@ NS_CHECK_EXEC([vm1], [ping -q -c 3 -i 0.3 -w 2 
172.18.2.12 | FORMAT_PING], \
 # Avoid checking flows on ls-pub due to different ct-zone allocation for 
cr-ports in I+P/recompute.
 OVN_CLEANUP_CONTROLLER([hv1], [], [], [ls-pub])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -7923,14 +7594,7 @@ OVS_WAIT_UNTIL([test "1" = "$(grep -c 
"dl_dst=33:33:33:33:33:33" ovn-controller.
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/.*error receiving.*/d
@@ -8066,14 +7730,7 @@ 
icmp,orig=(src=10.0.0.3,dst=10.0.0.2,id=<cleared>,type=8,code=0),reply=(src=10.0
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -8208,14 +7865,7 @@ 
icmp,orig=(src=10.0.0.3,dst=10.0.0.2,id=<cleared>,type=8,code=0),reply=(src=10.0
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -8309,14 +7959,7 @@ 
icmp,orig=(src=10.0.0.2,dst=10.0.0.3,id=<cleared>,type=8,code=0),reply=(src=10.0
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -8410,14 +8053,7 @@ 
icmp,orig=(src=10.0.0.2,dst=10.0.0.3,id=<cleared>,type=8,code=0),reply=(src=10.0
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -8504,14 +8140,7 @@ AT_CHECK([ip netns exec sw0p1 wget 20.0.0.3 -t 3 -T 1], 
[0], [ignore], [ignore])
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -8861,14 +8490,7 @@ check $PYTHON $srcdir/check_acl_log.py \
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -8990,14 +8612,7 @@ AT_CHECK([ovs-appctl dpctl/flush-conntrack])
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -9052,14 +8667,7 @@ NS_CHECK_EXEC([sw0-p1.2], [ping -q -c 3 -i 0.3 -w 2 
10.0.0.3 | FORMAT_PING], \
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -9141,14 +8749,7 @@ NS_CHECK_EXEC([ls1p1], [ping6 -q -c 3 -i 0.3 -w 2 
1711::1  | FORMAT_PING], \
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -9250,14 +8851,7 @@ AT_CHECK([grep -qE 'Too many active IPv4 mcast flows' 
northd/ovn-northd.log], [1
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -9319,14 +8913,7 @@ NS_CHECK_EXEC([vif0], [ping -q -c 3 -i 0.3 -w 1 
192.168.20.1 | FORMAT_PING], \
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -9521,14 +9108,7 @@ 
udp,orig=(src=192.168.10.10,dst=192.168.20.20,sport=<cleared>,dport=<cleared>),r
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -9665,14 +9245,7 @@ OVS_WAIT_UNTIL([
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -9810,14 +9383,7 @@ OVS_WAIT_UNTIL([
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -9935,14 +9501,7 @@ OVS_WAIT_UNTIL([
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -10086,14 +9645,7 @@ AT_CHECK([ovs-appctl dpctl/flush-conntrack])
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -10230,14 +9782,7 @@ AT_CHECK([ovs-appctl dpctl/flush-conntrack])
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -10326,14 +9871,7 @@ NS_CHECK_EXEC([ns_ls1p1], [ping -q -c 3 -i 0.3 -w 2 
10.89.189.1 | FORMAT_PING],
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -10468,14 +10006,7 @@ NS_CHECK_EXEC([vm1], [ping -q -c 3 -i 0.3 -w 2 
10.0.0.2 | FORMAT_PING], \
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -10682,14 +10213,7 @@ AT_CHECK([ovs-appctl dpctl/dump-conntrack | 
FORMAT_CT(30.0.0.1) | sed -e 's/zone
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -10823,14 +10347,7 @@ NS_CHECK_EXEC([ns_ext1], [ping -q -c 3 -i 0.3 -w 2 
172.0.0.88 | FORMAT_PING], \
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -10977,14 +10494,7 @@ OVS_WAIT_UNTIL([
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -11145,14 +10655,7 @@ OVS_WAIT_UNTIL([
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -11278,14 +10781,7 @@ OVS_WAIT_UNTIL([
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -11611,14 +11107,7 @@ TMPPID=$(cat $OVS_RUNDIR/ovn-controller.pid)
 check ovs-appctl -t ovn-controller exit --restart
 OVS_WAIT_WHILE([kill -0 $TMPPID 2>/dev/null])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 AT_CLEANUP
 ])
@@ -11773,14 +11262,7 @@ killall tcpdump
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -11915,14 +11397,7 @@ acl_test to-lport "" pg
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -11995,14 +11470,7 @@ 
tcp,orig=(src=10.0.0.2,dst=172.16.0.1,sport=<cleared>,dport=<cleared>),reply=(sr
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -12065,14 +11533,7 @@ check_row_count mac_binding 1 mac=\"00:00:00:00:00:02\"
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -12179,14 +11640,7 @@ OVS_WAIT_FOR_OUTPUT([ovs-appctl dpctl/dump-conntrack | 
FORMAT_CT(172.16.1.151) |
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -12392,14 +11846,7 @@ OVS_WAIT_UNTIL([check_est_flows 0xa], [check 
established flows])
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -12477,14 +11924,7 @@ AT_CHECK([ovs-ofctl dump-flows br-int | grep 
'table=OFTABLE_CHK_LB_AFFINITY, n_p
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -12567,14 +12007,7 @@ NS_CHECK_EXEC([sw1-p0], [ping -q -c 3 -i 0.3 -w 2 
172.16.1.100 | FORMAT_PING], \
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -12677,14 +12110,7 @@ wait_row_count MAC_Binding 1 logical_port=lr1-pub 
ip=172.24.4.100
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -12769,14 +12195,7 @@ AT_CHECK([ovs-appctl dpctl/dump-conntrack | grep -c 
"zone=$zone_id"], [0], [2
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -12913,14 +12332,7 @@ NS_CHECK_EXEC([sw11], [ip addr show sw11 | grep -oP 
'(?<=inet\s)\d+(\.\d+){3}'],
 ])
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/.*error receiving.*/d
@@ -13047,14 +12459,7 @@ check_dnat
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -13180,14 +12585,7 @@ check_dnat
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -13393,14 +12791,7 @@ AT_CHECK([for f in $(ls -1 nfcapd.*); do nfdump -o 
json -r $f; done | grep obser
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -13520,14 +12911,7 @@ AT_CHECK([for f in $(ls -1 nfcapd.*); do nfdump -o 
json -r $f; done | grep obser
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -13644,14 +13028,7 @@ AT_CHECK([for f in $(ls -1 nfcapd.*); do nfdump -o 
json -r $f; done | grep obser
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -13765,14 +13142,7 @@ AT_CHECK([for f in $(ls -1 nfcapd.*); do nfdump -o 
json -r $f; done | grep obser
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -13885,14 +13255,7 @@ OVS_WAIT_UNTIL([ovs-ofctl dump-ipfix-flow br-int | 
grep 'id 200' | grep -q 'samp
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -14004,14 +13367,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])
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/.*error receiving.*/d
@@ -14104,14 +13460,7 @@ AT_CHECK([ovs-vsctl set Open_vSwitch . 
external-ids:ovn-remote=$SB_PATH])
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/.*error receiving.*/d
@@ -14251,14 +13600,7 @@ NS_CHECK_EXEC([bar1], [echo "TCP test" | nc -w 1 
--send-only 172.16.1.100 2222])
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/.*error receiving.*/d
@@ -14398,14 +13740,7 @@ NS_CHECK_EXEC([bar1], [echo "TCP test" | nc -w 1 
--send-only 172.16.1.100 2222])
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/.*error receiving.*/d
@@ -14471,14 +13806,7 @@ AT_CHECK([grep -c "NXT_CT_FLUSH_ZONE" 
ovs-vswitchd.log], [0], [dnl
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/.*error receiving.*/d
@@ -14580,14 +13908,7 @@ AT_CHECK([ovn-nbctl get logical_router_port rp-sw0 
ipv6_prefix | cut -c3-15], [0
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/.*error receiving.*/d
@@ -14779,14 +14100,7 @@ sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [dnl
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -14934,14 +14248,7 @@ NS_CHECK_EXEC([bob], [ping -q -c 3 -i 0.3 -w 2 
10.42.0.10 | FORMAT_PING], \
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -15082,14 +14389,7 @@ NS_CHECK_EXEC([bob], [ping -q -c 3 -i 0.3 -w 2 
10.42.0.10 | FORMAT_PING], \
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -15200,14 +14500,7 @@ NS_CHECK_EXEC([vm1], [ping -q -c 3 -i 0.3 -w 2 
172.18.1.12 | FORMAT_PING], \
 # Avoid checking flows on ls-pub due to different ct-zone allocation for 
cr-ports in I+P/recompute.
 OVN_CLEANUP_CONTROLLER([hv1], [], [], [ls-pub])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -15269,14 +14562,7 @@ NS_CHECK_EXEC([foo], [arping -q -c 3 172.16.1.100])
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -15534,14 +14820,7 @@ sed -e 's/mark=[[0-9]]*/mark=<cleared>/' | sort], [0], 
[dnl
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/.*error receiving.*/d
@@ -15798,14 +15077,7 @@ sed -e 's/mark=[[0-9]]*/mark=<cleared>/' | sort], [0], 
[dnl
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/.*error receiving.*/d
@@ -16292,14 +15564,7 @@ blackhole 198.51.100.0/24 proto ovn metric 1000
 OVN_CLEANUP_CONTROLLER([hv1])
 AT_CHECK([ip vrf | grep -q ovnvrf1338], [1], [])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/.*error receiving.*/d
@@ -16639,14 +15904,7 @@ check ovn-nbctl --wait=hv set Logical_Router_Port 
internet-phys \
 OVN_CLEANUP_CONTROLLER([hv1])
 AT_CHECK([ip vrf | grep -q ovnvrf1337], [1], [])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/.*error receiving.*/d
@@ -16796,14 +16054,7 @@ OVN_CLEANUP_CONTROLLER([hv1])
 AT_CHECK([ip link | grep -q ovnvrf$vrf:.*UP], [1])
 AT_CHECK([test `ip route show table $vrf | wc -l` -eq 1], [1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -16956,14 +16207,7 @@ OVN_CLEANUP_CONTROLLER([hv1])
 AT_CHECK([ip link | grep -q ovnvrf1001:.*UP], [1])
 AT_CHECK([test `ip -6 route show table 1001 | wc -l` -eq 1], [1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -17186,14 +16430,7 @@ OVN_CLEANUP_CONTROLLER([hv1], [], [], [ls-join])
 AT_CHECK([ip link | grep -q ovnvrf$vrf:.*UP], [1])
 AT_CHECK([test `ip route show table $vrf | wc -l` -eq 1], [1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -17411,14 +16648,7 @@ OVN_CLEANUP_CONTROLLER([hv1], [], [], [ls-join])
 AT_CHECK([ip link | grep -q ovnvrf1003:.*UP], [1])
 AT_CHECK([test `ip -6 route show table 1003 | wc -l` -eq 2], [1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -17582,14 +16812,7 @@ dnl Ensure system resources are cleaned up.
 AT_CHECK([ip link | grep -q ovnvrf$vrf:.*UP], [1])
 AT_CHECK([test `ip route show table $vrf | wc -l` -eq 1], [1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -17672,14 +16895,7 @@ check_row_count Learned_Route 2
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -17770,14 +16986,7 @@ check ovn-nbctl --wait=hv lr-del lr
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -17904,14 +17113,7 @@ OVS_WAIT_UNTIL([
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -17973,14 +17175,7 @@ AT_CHECK([test $lflow_run_end == $lflow_run])
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP()
@@ -18118,14 +17313,7 @@ 
tcp,orig=(src=172.16.1.2,dst=192.168.2.2,sport=<cleared>,dport=<cleared>),reply=
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -18237,14 +17425,7 @@ 
icmp,orig=(src=192.168.1.2,dst=192.168.1.1,id=<cleared>,type=8,code=0),reply=(sr
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -18380,14 +17561,7 @@ check ovn-nbctl lb-del lb1
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -18870,14 +18044,7 @@ check ovn-nbctl --wait=hv lr-del lr
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -18960,14 +18127,7 @@ NS_CHECK_EXEC([vm1], [nc 30.0.0.2 80 -z])
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
@@ -19268,14 +18428,7 @@ validate_nf_with_traffic "server" "client" 
"fd00:192:168:1::10" "IPv6 Outbound"
 
 OVN_CLEANUP_CONTROLLER([hv1])
 
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP_NORTHD
 
 as
 OVS_TRAFFIC_VSWITCHD_STOP(["/.*error receiving.*/d
-- 
2.51.0

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to