On 3/14/25 11:08 AM, Ales Musil wrote:
> On Thu, Mar 13, 2025 at 9:33 AM Xavier Simonart <xsimo...@redhat.com> wrote:
> 
>> Signed-off-by: Xavier Simonart <xsimo...@redhat.com>
>>
>> ---
>> v2: - Rebased on origin/main.
>>     - Use OVN_CLEANUP_CONTROLLER for new tests.
>> ---
>>  tests/system-ovn-kmod.at |  22 ++--
>>  tests/system-ovn.at      | 233 ++++++++++++++++++++-------------------
>>  2 files changed, 133 insertions(+), 122 deletions(-)
>>
>> diff --git a/tests/system-ovn-kmod.at b/tests/system-ovn-kmod.at
>> index 5b010a1a2..df00f99f7 100644
>> --- a/tests/system-ovn-kmod.at
>> +++ b/tests/system-ovn-kmod.at
>> @@ -283,8 +283,7 @@
>> tcp,orig=(src=192.168.1.200,dst=192.168.1.2,sport=<cleared>,dport=<cleared>),rep
>>  ])
>>  NS_CHECK_EXEC([foo1], [nc -z 192.168.1.100 8081])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> -
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>>
>> @@ -581,7 +580,7 @@
>> tcp,orig=(src=fd11::b,dst=fd11::2,sport=<cleared>,dport=<cleared>),reply=(src=fd
>>  ])
>>  NS_CHECK_EXEC([foo1], [nc -z fd11::a 8081])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -723,7 +722,7 @@ test_fragmented_traffic
>>  check ovn-nbctl ls-lb-del public
>>  check ovn-nbctl lb-del lb1
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -890,7 +889,8 @@ for type in icmp udp tcp; do
>>      test_$type
>>  done
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +# 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])
>> @@ -1009,7 +1009,7 @@ NS_CHECK_EXEC([server], [ip r get fd10::1 | grep -q
>> "mtu 1300"])
>>
>>  ovn-appctl -t ovn-controller vlog/set info
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -1084,7 +1084,7 @@ check cmp frag_test_srv.expected
>> udp_frag_test_srv.rcvd
>>  check cmp frag_test_client.expected udp_frag_test_c1.recvd
>>  check cmp frag_test_client.expected udp_frag_test_c2.recvd
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -1156,7 +1156,7 @@ check cmp frag_test_srv.expected
>> udp_frag_test_srv.rcvd
>>  check cmp frag_test_client.expected udp_frag_test_c1.recvd
>>  check cmp frag_test_client.expected udp_frag_test_c2.recvd
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -1371,7 +1371,7 @@
>> icmpv6,orig=(src=fd11::3,dst=fd20::4,id=<cleared>,type=128,code=0),reply=(src=fd
>>
>>  
>> icmpv6,orig=(src=fd20::1,dst=fd20::4,id=<cleared>,type=128,code=0),reply=(src=fd12::2,dst=fd20::1,id=<cleared>,type=129,code=0),zone=<cleared>
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -1629,7 +1629,7 @@ sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [dnl
>>
>>  
>> icmpv6,orig=(src=fd11::3,dst=fd20::4,id=<cleared>,type=128,code=0),reply=(src=fd12::2,dst=fd11::3,id=<cleared>,type=129,code=0),zone=<cleared>
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -1720,7 +1720,7 @@ NS_CHECK_EXEC([mgmt], [(echo "Hello TCP"; sleep 3) |
>> nc -s 172.16.100.2 -o clien
>>  check cmp server_tcp.log tcp.expected
>>  check cmp client_tcp.log tcp.expected
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> diff --git a/tests/system-ovn.at b/tests/system-ovn.at
>> index fb8184cd9..55d71248b 100644
>> --- a/tests/system-ovn.at
>> +++ b/tests/system-ovn.at
>> @@ -162,7 +162,7 @@ sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [dnl
>>
>>  
>> icmp,orig=(src=192.168.2.2,dst=192.168.1.2,id=<cleared>,type=8,code=0),reply=(src=192.168.1.2,dst=30.0.0.1,id=<cleared>,type=0,code=0),zone=<cleared>
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -342,7 +342,7 @@ sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [dnl
>>
>>  
>> icmpv6,orig=(src=fd12::2,dst=fd11::2,id=<cleared>,type=128,code=0),reply=(src=fd11::2,dst=fd30::1,id=<cleared>,type=129,code=0),zone=<cleared>
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -454,7 +454,7 @@ sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [dnl
>>
>>  
>> icmp,orig=(src=192.168.1.2,dst=172.16.1.2,id=<cleared>,type=8,code=0),reply=(src=172.16.1.2,dst=172.16.1.1,id=<cleared>,type=0,code=0),zone=<cleared>
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -566,7 +566,7 @@ sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [dnl
>>
>>  
>> icmpv6,orig=(src=fd10::2,dst=fd30::2,id=<cleared>,type=128,code=0),reply=(src=fd30::2,dst=fd30::1,id=<cleared>,type=129,code=0),zone=<cleared>
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -788,7 +788,7 @@ sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [dnl
>>
>>  
>> icmp,orig=(src=192.168.1.2,dst=172.16.1.3,id=<cleared>,type=8,code=0),reply=(src=172.16.1.3,dst=30.0.0.1,id=<cleared>,type=0,code=0),zone=<cleared>
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -1014,7 +1014,7 @@ sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [dnl
>>
>>  
>> icmpv6,orig=(src=fd11::2,dst=fd30::3,id=<cleared>,type=128,code=0),reply=(src=fd30::3,dst=fd40::1,id=<cleared>,type=129,code=0),zone=<cleared>
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -1328,7 +1328,7 @@ sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [dnl
>>
>>  
>> icmpv6,orig=(src=fd11::2,dst=fd30::3,id=<cleared>,type=128,code=0),reply=(src=fd30::3,dst=fd40::1,id=<cleared>,type=129,code=0),zone=<cleared>
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -1610,7 +1610,7 @@ OVS_WAIT_UNTIL([
>>      test "${n_reset}" = "1"
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -1831,7 +1831,7 @@ if [[ "$bar3_ct" == "20" ]]; then
>>  else
>>      AT_CHECK([test $bar3_ct -eq 0])
>>  fi
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -2078,7 +2078,7 @@ AT_CHECK([test $bar1_ct -gt 0])
>>  AT_CHECK([test $bar2_ct -gt 0])
>>  AT_CHECK([test $bar3_ct -gt 0])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -2186,7 +2186,7 @@
>> tcp,orig=(src=192.168.1.2,dst=30.0.0.2,sport=<cleared>,dport=<cleared>),reply=(s
>>
>>  
>> tcp,orig=(src=192.168.1.2,dst=30.0.0.2,sport=<cleared>,dport=<cleared>),reply=(src=192.168.1.5,dst=192.168.1.2,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>)
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -2296,7 +2296,7 @@
>> tcp,orig=(src=fd01::2,dst=fd03::2,sport=<cleared>,dport=<cleared>),reply=(src=fd
>>
>>  
>> tcp,orig=(src=fd01::2,dst=fd03::2,sport=<cleared>,dport=<cleared>),reply=(src=fd01::5,dst=fd01::2,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>)
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -2545,7 +2545,7 @@ test "x$ct1 = x$exp_ct1" && test "x$ct2 = x$exp_ct2"
>>
>>  OVS_WAIT_UNTIL([check_est_flows], [check established flows])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -2640,7 +2640,7 @@ for i in $(seq 1 5); do
>>      NS_CHECK_EXEC([client], [wget 172.16.1.150 -t 5 -T 1
>> --retry-connrefused -v -o wget$i.log])
>>  done
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -2797,7 +2797,7 @@
>> tcp,orig=(src=fd72::2,dst=fd30::2,sport=<cleared>,dport=<cleared>),reply=(src=fd
>>
>>  
>> tcp,orig=(src=fd72::2,dst=fd30::2,sport=<cleared>,dport=<cleared>),reply=(src=fd12::2,dst=fd72::2,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>)
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -2968,7 +2968,7 @@ test "x$ct1 = x$exp_ct1" && test "x$ct2 = x$exp_ct2"
>>  ], [0], [dnl
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -3141,7 +3141,7 @@ test "x$ct1 = x$exp_ct1" && test "x$ct2 = x$exp_ct2"
>>  ], [0], [dnl
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -3362,7 +3362,7 @@ test "x$ct1 = x$exp_ct1" && test "x$ct2 = x$exp_ct2"
>> && test "x$ct3 = x$exp_ct3"
>>  ], [0], [dnl
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -3505,7 +3505,7 @@
>> tcp,orig=(src=172.16.1.2,dst=172.16.1.11,sport=<cleared>,dport=<cleared>),reply=
>>
>>  
>> tcp,orig=(src=172.16.1.2,dst=172.16.1.11,sport=<cleared>,dport=<cleared>),reply=(src=192.168.2.2,dst=172.16.1.2,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>)
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -3648,7 +3648,7 @@
>> tcp,orig=(src=fd72::2,dst=fd72::11,sport=<cleared>,dport=<cleared>),reply=(src=f
>>
>>  
>> tcp,orig=(src=fd72::2,dst=fd72::11,sport=<cleared>,dport=<cleared>),reply=(src=fd02::2,dst=fd72::2,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>)
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -3865,7 +3865,7 @@ OVS_WAIT_UNTIL([
>>      test "${total_pkts}" = "3"
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -4062,7 +4062,7 @@ test_connectivity_from_ext foo1 fd11::2
>>  # does not have DNAT
>>  test_connectivity_from_ext bar1 fd12::2
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -4246,7 +4246,7 @@
>> icmp,orig=(src=172.16.1.1,dst=192.168.2.2,id=<cleared>,type=8,code=0),reply=(src
>>
>>  
>> icmp,orig=(src=192.168.1.3,dst=172.16.1.4,id=<cleared>,type=8,code=0),reply=(src=172.16.1.4,dst=172.16.1.1,id=<cleared>,type=0,code=0),zone=<cleared>
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -4414,7 +4414,7 @@
>> icmpv6,orig=(src=fd20::1,dst=fd12::2,id=<cleared>,type=128,code=0),reply=(src=fd
>>
>>  
>> icmpv6,orig=(src=fd20::1,dst=fd20::4,id=<cleared>,type=128,code=0),reply=(src=fd12::2,dst=fd20::1,id=<cleared>,type=129,code=0),zone=<cleared>
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -4491,7 +4491,8 @@ check ovs-vsctl clear interface ovs-p1 external_ids
>>  # check conntrack zone is flushed
>>  OVS_WAIT_WHILE([ovs-appctl dpctl/dump-conntrack zone=$zone_id | grep .])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +# ls1 should not be a local datapath anymore since ovs-p1 binding removed
>> +OVN_CLEANUP_CONTROLLER([hv1], [], [], [ls1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -4657,7 +4658,7 @@ OVS_WAIT_UNTIL([
>>      test "${total_queries}" = "2"
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -4881,7 +4882,7 @@ OVS_WAIT_UNTIL([
>>      test "${n_reset}" = "1"
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -5064,7 +5065,7 @@ ovs-vsctl set interface ovs-sw1-p1
>> external_ids:iface-id=sw1-p1
>>  wait_row_count Service_Monitor 2
>>  wait_row_count Service_Monitor 1 status=online
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -5166,7 +5167,7 @@ check ovn-nbctl --wait=hv sync
>>  NS_CHECK_EXEC([lsp], [nc 88.88.88.88 8080 -z], [0], [ignore], [ignore])
>>  NS_CHECK_EXEC([lsp], [nc 88.88.88.89 8080 -z], [0], [ignore], [ignore])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -5263,7 +5264,7 @@ check ovn-nbctl --wait=hv sync
>>  NS_CHECK_EXEC([lsp], [nc 8800::0088 8080 -z], [0], [ignore], [ignore])
>>  NS_CHECK_EXEC([lsp], [nc 8800::0089 8080 -z], [0], [ignore], [ignore])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -5496,7 +5497,7 @@ aef0::3 udp port 90" | uniq | wc -l)
>>      test $c -ge 1
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -5733,7 +5734,9 @@ aef0::3 udp port 90" | uniq | wc -l)
>>      test $c -ge 1
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +kill $(pidof tcpdump)
>> +
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -5856,7 +5859,7 @@ AT_CHECK([
>>      test $ct_est_count -eq 1
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -5976,7 +5979,7 @@ NS_CHECK_EXEC([sw0-p1-lbc], [nc -z 20.0.0.4 80],
>> [0], [ignore], [ignore])
>>  # Send the packet to VIP.
>>  NS_CHECK_EXEC([sw0-p1-lbc], [nc -z 30.0.0.10 80], [0], [ignore], [ignore])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -6085,7 +6088,7 @@
>> tcp,orig=(src=42.42.42.3,dst=42.42.42.2,sport=<clnt_s_port>,dport=4242),reply=(s
>>
>>  
>> tcp,orig=(src=42.42.42.3,dst=66.66.66.66,sport=<clnt_s_port>,dport=666),reply=(src=42.42.42.2,dst=42.42.42.3,sport=4242,dport=<clnt_s_port>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>)
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -6194,7 +6197,7 @@
>> tcp,orig=(src=4242::3,dst=4242::2,sport=<clnt_s_port>,dport=4242),reply=(src=424
>>
>>  
>> tcp,orig=(src=4242::3,dst=6666::1,sport=<clnt_s_port>,dport=666),reply=(src=4242::2,dst=4242::3,sport=4242,dport=<clnt_s_port>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>)
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -6288,7 +6291,7 @@ NS_CHECK_EXEC([sw0-p1-f], [ping -q -c 3 -i 0.3 -w 2
>> 10.0.0.5 | FORMAT_PING], \
>>  3 packets transmitted, 3 received, 0% packet loss, time 0ms
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -6504,7 +6507,7 @@ sed -e 's/mark=[[0-9]]*/mark=<cleared>/' | sort],
>> [0], [dnl
>>
>>  
>> tcp,orig=(src=172.16.0.1,dst=10.0.0.2,sport=<cleared>,dport=<cleared>),reply=(src=10.0.0.2,dst=172.16.0.1,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=<cleared>,labels=0x401020500000000,protoinfo=(state=<cleared>)
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -6736,7 +6739,7 @@ sed -e 's/mark=[[0-9]]*/mark=<cleared>/' | sort],
>> [0], [dnl
>>
>>  
>> tcp,orig=(src=fd07::1,dst=fd01::2,sport=<cleared>,dport=<cleared>),reply=(src=fd01::2,dst=fd07::1,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=<cleared>,labels=0x1001020400000000,protoinfo=(state=<cleared>)
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -6785,7 +6788,7 @@ OVS_WAIT_UNTIL([test x$(ovn-nbctl lsp-get-up
>> sw0-port1) = xup])
>>  ovs-vsctl set interface p1 type=\"\"
>>  OVS_WAIT_UNTIL([test x$(ovn-nbctl lsp-get-up sw0-port1) = xdown])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1], [], [], [sw0])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -6876,7 +6879,7 @@ sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [dnl
>>
>>  
>> icmp,orig=(src=192.168.1.2,dst=172.16.1.100,id=<cleared>,type=8,code=0),reply=(src=172.16.1.100,dst=172.16.1.20,id=<cleared>,type=0,code=0),zone=<cleared>
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -7112,7 +7115,7 @@ AT_CHECK([ovn-nbctl set Logical_Switch_Port sw02
>> options:qos_burst=1000000])
>>  OVS_WAIT_UNTIL([tc class show dev ovs-public | \
>>                  grep -q 'class htb .* prio 0 rate 5Gbit ceil 6Gbit burst
>> 125000b cburst 124500b'])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -7312,7 +7315,7 @@ Allowing connections from 1000::a
>>  wait_column "up" nb:bfd status logical_port=rp-public
>>  check ovn-nbctl destroy bfd $uuid_v6
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -7446,7 +7449,7 @@ AT_CHECK([ovs-appctl dpctl/dump-flows | grep ct_mark
>> | grep -v ipv6 -c], [1], [d
>>  0
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -7571,7 +7574,7 @@ NS_CHECK_EXEC([vm2], [ping -q -c 3 -i 0.3 -w 2
>> 172.18.2.10 | FORMAT_PING], \
>>  3 packets transmitted, 3 received, 0% packet loss, time 0ms
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -7688,7 +7691,8 @@ NS_CHECK_EXEC([vm1], [ping -q -c 3 -i 0.3 -w 2
>> 172.18.2.12 | FORMAT_PING], \
>>  3 packets transmitted, 3 received, 0% packet loss, time 0ms
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +# 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])
>> @@ -7900,7 +7904,7 @@ EOF
>>
>>  OVS_WAIT_UNTIL([test "1" = "$(grep -c "dl_dst=33:33:33:33:33:33"
>> ovn-controller.log)"])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -8043,7 +8047,7 @@
>> icmp,orig=(src=10.0.0.3,dst=10.0.0.2,id=<cleared>,type=8,code=0),reply=(src=10.0
>>
>>  
>> icmp,orig=(src=10.0.0.3,dst=10.0.0.2,id=<cleared>,type=8,code=0),reply=(src=10.0.0.2,dst=10.0.0.3,id=<cleared>,type=0,code=0),zone=<cleared>
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -8185,7 +8189,7 @@
>> icmp,orig=(src=10.0.0.3,dst=10.0.0.2,id=<cleared>,type=8,code=0),reply=(src=10.0
>>
>>  
>> icmp,orig=(src=10.0.0.3,dst=10.0.0.2,id=<cleared>,type=8,code=0),reply=(src=10.0.0.2,dst=10.0.0.3,id=<cleared>,type=0,code=0),zone=<cleared>
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -8286,7 +8290,7 @@
>> icmp,orig=(src=10.0.0.2,dst=10.0.0.3,id=<cleared>,type=8,code=0),reply=(src=10.0
>>
>>  
>> icmp,orig=(src=10.0.0.2,dst=10.0.0.3,id=<cleared>,type=8,code=0),reply=(src=10.0.0.3,dst=10.0.0.2,id=<cleared>,type=0,code=0),zone=<cleared>,labels=0x4d3000000000000000000000000
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -8387,7 +8391,7 @@
>> icmp,orig=(src=10.0.0.2,dst=10.0.0.3,id=<cleared>,type=8,code=0),reply=(src=10.0
>>
>>  
>> icmp,orig=(src=10.0.0.2,dst=10.0.0.3,id=<cleared>,type=8,code=0),reply=(src=10.0.0.3,dst=10.0.0.2,id=<cleared>,type=0,code=0),zone=<cleared>,mark=16,labels=0x4d3000000000000000000000000
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -8487,7 +8491,7 @@ check ovn-nbctl --wait=hv sync
>>
>>  AT_CHECK([ip netns exec sw0p1 wget 20.0.0.3 -t 3 -T 1], [0], [ignore],
>> [ignore])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -8844,7 +8848,7 @@ check $PYTHON $srcdir/check_acl_log.py \
>>      --icmp_code=0
>>
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -8973,7 +8977,7 @@
>> tcp,orig=(src=192.168.2.2,dst=172.16.1.2,sport=<cleared>,dport=<cleared>),reply=
>>
>>  AT_CHECK([ovs-appctl dpctl/flush-conntrack])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -9035,7 +9039,7 @@ NS_CHECK_EXEC([sw0-p1.2], [ping -q -c 3 -i 0.3 -w 2
>> 10.0.0.3 | FORMAT_PING], \
>>  3 packets transmitted, 3 received, 0% packet loss, time 0ms
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -9132,7 +9136,7 @@ NS_CHECK_EXEC([ls1p1], [ping6 -q -c 3 -i 0.3 -w 2
>> 1711::1  | FORMAT_PING], \
>>  3 packets transmitted, 3 received, 0% packet loss, time 0ms
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -9241,7 +9245,7 @@ OVS_WAIT_UNTIL([
>>  # Double check we never hit error condition
>>  AT_CHECK([grep -qE 'Too many active IPv4 mcast flows'
>> northd/ovn-northd.log], [1])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -9315,7 +9319,7 @@ NS_CHECK_EXEC([vif0], [ping -q -c 3 -i 0.3 -w 1
>> 192.168.20.1 | FORMAT_PING], \
>>  3 packets transmitted, 3 received, 0% packet loss, time 0ms
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -9523,7 +9527,7 @@ sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [dnl
>>
>>  
>> udp,orig=(src=192.168.10.10,dst=192.168.20.20,sport=<cleared>,dport=<cleared>),reply=(src=192.168.20.10,dst=192.168.10.10,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=10
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -9673,7 +9677,7 @@ OVS_WAIT_UNTIL([
>>      test "${requests}" -ge "6"
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -9824,7 +9828,7 @@ OVS_WAIT_UNTIL([
>>      test "${requests}" -ge "6"
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -9952,7 +9956,7 @@ OVS_WAIT_UNTIL([
>>          test "${total_icmp1_pkts}" = "3"
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -10103,7 +10107,7 @@ sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0],
>> [dnl
>>
>>  AT_CHECK([ovs-appctl dpctl/flush-conntrack])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -10247,7 +10251,7 @@ sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0],
>> [dnl
>>
>>  AT_CHECK([ovs-appctl dpctl/flush-conntrack])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -10358,7 +10362,7 @@ NS_CHECK_EXEC([ns_ls1p1], [ping -q -c 3 -i 0.3 -w
>> 2 10.89.189.1 | FORMAT_PING],
>>  3 packets transmitted, 3 received, 0% packet loss, time 0ms
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -10500,7 +10504,7 @@ NS_CHECK_EXEC([vm1], [ping -q -c 3 -i 0.3 -w 2
>> 10.0.0.2 | FORMAT_PING], \
>>  3 packets transmitted, 3 received, 0% packet loss, time 0ms
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -10714,7 +10718,7 @@ check ovn-nbctl --wait=hv lb-del lb1
>>
>>  AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(30.0.0.1) | sed -e
>> 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [LB1_CT_ENTRIES])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -10859,7 +10863,7 @@ NS_CHECK_EXEC([ns_ext1], [ping -q -c 3 -i 0.3 -w 2
>> 172.0.0.88 | FORMAT_PING], \
>>  3 packets transmitted, 3 received, 0% packet loss, time 0ms
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -11019,7 +11023,7 @@ OVS_WAIT_UNTIL([
>>          test "${total_icmp1_pkts}" -gt "${total_icmp_pkts}"
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -11189,7 +11193,7 @@ OVS_WAIT_UNTIL([
>>      test "${total_pkts}" = "4"
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -11322,7 +11326,7 @@ OVS_WAIT_UNTIL([
>>      test "${total_pkts}" = "3"
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -11815,7 +11819,9 @@ OVS_WAIT_UNTIL([
>>      test "${n_packets}" = "3"
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +killall tcpdump
>> +
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -11957,7 +11963,7 @@ acl_test from-lport "" pg
>>  acl_test from-lport "--apply-after-lb" pg
>>  acl_test to-lport "" pg
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -12046,7 +12052,7 @@ sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0],
>> [dnl
>>
>>  
>> tcp,orig=(src=10.0.0.2,dst=172.16.0.1,sport=<cleared>,dport=<cleared>),reply=(src=192.168.0.2,dst=10.0.0.2,sport=<cleared>,dport=<cleared>),zone=<cleared>,mark=2,protoinfo=(state=<cleared>)
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -12119,7 +12125,7 @@ NS_CHECK_EXEC([vif0], [ping -q -c 3 -i 0.3 -w 2
>> fe80::200:ff:fe00:1 | FORMAT_PIN
>>
>>  check_row_count mac_binding 1 mac=\"00:00:00:00:00:02\"
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -12233,7 +12239,7 @@ OVS_WAIT_FOR_OUTPUT([ovs-appctl
>> dpctl/dump-conntrack | FORMAT_CT(172.16.1.151) |
>>  1
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -12446,7 +12452,7 @@
>> sctp,orig=(src=172.16.1.2,dst=192.168.2.2,sport=<cleared>,dport=<cleared>),reply
>>
>>  OVS_WAIT_UNTIL([check_est_flows 0xa], [check established flows])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -12525,7 +12531,7 @@ dnl Test the connection originating something that
>> uses the same source port
>>  dnl as the LB VIP.
>>  NS_CHECK_EXEC([vm1], [nc -z -p 8080 42.42.42.1 80], 0, [ignore], [ignore])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -12614,7 +12620,7 @@ AT_CHECK([ovs-ofctl dump-flows br-int | grep
>> 'table=OFTABLE_CHK_LB_AFFINITY, n_p
>>  0
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -12704,7 +12710,7 @@ NS_CHECK_EXEC([sw1-p0], [ping -q -c 3 -i 0.3 -w 2
>> 172.16.1.100 | FORMAT_PING], \
>>  3 packets transmitted, 3 received, 0% packet loss, time 0ms
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -12817,7 +12823,7 @@ restart_ovsdb_controller_updates $TCP_PORT
>>  # Check that the MAC_Binding entries have been properly created as SB is
>> now writable.
>>  wait_row_count MAC_Binding 1 logical_port=lr1-pub ip=172.24.4.100
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -12912,7 +12918,7 @@ zone_id=$(ovn-appctl -t ovn-controller
>> ct-zone-list | grep lr_dnat | cut -d ' '
>>  AT_CHECK([ovs-appctl dpctl/dump-conntrack | grep -c "zone=$zone_id"],
>> [0], [2
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -13059,7 +13065,7 @@ NS_CHECK_EXEC([sw01], [ip addr show sw01 | grep
>> -oP '(?<=inet\s)\d+(\.\d+){3}'],
>>  NS_CHECK_EXEC([sw11], [ip addr show sw11 | grep -oP
>> '(?<=inet\s)\d+(\.\d+){3}'], [0], [dnl
>>  192.168.2.10
>>  ])
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -13196,7 +13202,7 @@ check ovn-nbctl set logical_router lr
>> options:chassis=hv1
>>  check_snat
>>  check_dnat
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -13332,7 +13338,7 @@ check ovn-nbctl set logical_router lr
>> options:chassis=hv1
>>  check_snat
>>  check_dnat
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -13548,7 +13554,7 @@ AT_CHECK([for f in $(ls -1 nfcapd.*); do nfdump -o
>> json -r $f; done | grep obser
>>  "observationPointID" : 3012,
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -13675,7 +13681,7 @@ AT_CHECK([for f in $(ls -1 nfcapd.*); do nfdump -o
>> json -r $f; done | grep obser
>>  "observationPointID" : 2002,
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -13799,7 +13805,7 @@ AT_CHECK([for f in $(ls -1 nfcapd.*); do nfdump -o
>> json -r $f; done | grep obser
>>  "observationPointID" : 1001,
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -13923,7 +13929,7 @@ AT_CHECK([for f in $(ls -1 nfcapd.*); do nfdump -o
>> json -r $f; done | grep obser
>>  "observationPointID" : 1003,
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -14045,7 +14051,7 @@ NS_CHECK_EXEC([sw01], [ping -q -c 2 -i 0.2 -w 2
>> 172.16.1.1 | FORMAT_PING],
>>  ])
>>
>>  AT_CHECK([ovs-vsctl set Open_vSwitch . external-ids:ovn-remote=$SB_PATH])
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -14148,7 +14154,7 @@ AT_CHECK([grep -q
>> "pinctrl_drop_buffered_packets_map" ovn_counters], [0])
>>
>>  AT_CHECK([ovs-vsctl set Open_vSwitch . external-ids:ovn-remote=$SB_PATH])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -14298,7 +14304,7 @@ from bgp-daemon: BFD IPv6 client traffic
>>  NETNS_DAEMONIZE([ext-foo], [nc -l -k 172.16.1.100 2222],
>> [nc_external.pid])
>>  NS_CHECK_EXEC([bar1], [echo "TCP test" | nc -w 1 --send-only 172.16.1.100
>> 2222])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -14448,7 +14454,7 @@ from bgp-daemon: BFD IPv6 client traffic
>>  NETNS_DAEMONIZE([ext-foo], [nc -l -k 172.16.1.100 2222],
>> [nc_external.pid])
>>  NS_CHECK_EXEC([bar1], [echo "TCP test" | nc -w 1 --send-only 172.16.1.100
>> 2222])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -14521,7 +14527,7 @@ AT_CHECK([grep -c "NXT_CT_FLUSH_ZONE"
>> ovs-vswitchd.log], [0], [dnl
>>  3
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -14633,7 +14639,7 @@ AT_CHECK([ovn-nbctl get logical_router_port rp-sw0
>> ipv6_prefix | cut -c3-15], [0
>>  [2001:db8:3333]
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -14832,7 +14838,7 @@ grep "labels=0x"$acl_id"00000000000000000000" | \
>>  sed -e 's/zone=[[0-9]]*/zone=<cleared>/'], [0], [dnl
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -15000,7 +15006,7 @@ NS_CHECK_EXEC([bob], [ping -q -c 3 -i 0.3 -w 2
>> 10.42.0.10 | FORMAT_PING], \
>>  3 packets transmitted, 3 received, 0% packet loss, time 0ms
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -15161,7 +15167,7 @@ NS_CHECK_EXEC([bob], [ping -q -c 3 -i 0.3 -w 2
>> 10.42.0.10 | FORMAT_PING], \
>>  3 packets transmitted, 3 received, 0% packet loss, time 0ms
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -15290,7 +15296,8 @@ NS_CHECK_EXEC([vm1], [ping -q -c 3 -i 0.3 -w 2
>> 172.18.1.12 | FORMAT_PING], \
>>  7 packets transmitted, 0 received, 100% packet loss, time 0ms
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +# 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])
>> @@ -15359,7 +15366,7 @@ check ovn-nbctl --wait=hv sync
>>  NS_CHECK_EXEC([foo], [arping -q -c 3 192.168.1.100])
>>  NS_CHECK_EXEC([foo], [arping -q -c 3 172.16.1.100])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -15627,7 +15634,7 @@ sed -e 's/zone=[[0-9]]*/zone=<cleared>/' |
>>  sed -e 's/mark=[[0-9]]*/mark=<cleared>/' | sort], [0], [dnl
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -15894,7 +15901,7 @@ sed -e 's/zone=[[0-9]]*/zone=<cleared>/' |
>>  sed -e 's/mark=[[0-9]]*/mark=<cleared>/' | sort], [0], [dnl
>>  ])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> @@ -16172,7 +16179,7 @@ check_row_count Learned_Route 1 ip_prefix=
>> 233.253.0.0/24 nexthop=192.168.20.20
>>  # delete the whole vrf.
>>  check ovn-nbctl --wait=hv set Logical_Router_Port internet-phys \
>>                               options:dynamic-routing-maintain-vrf=false
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>  AT_CHECK([ip route list vrf ovnvrf1337 | awk '{$1=$1};1'], [0], [dnl
>>  233.252.0.0/24 via 192.168.10.10 dev lo onlink
>>  233.253.0.0/24 via 192.168.20.20 dev hv1-mll onlink
>> @@ -16222,7 +16229,7 @@ blackhole 198.51.100.0/24 proto 84 metric 1000
>>  start_daemon ovn-controller
>>  OVS_WAIT_UNTIL([test "$(ovn-appctl -t ovn-controller debug/status)" ==
>> "running"])
>>  check ovn-nbctl --wait=hv sync
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>  AT_CHECK([ip vrf | grep -q ovnvrf1338], [1], [])
>>
>>  as ovn-sb
>> @@ -16502,7 +16509,7 @@ check_row_count Learned_Route 1 ip_prefix=
>> 233.253.0.0/24 nexthop=192.168.20.20
>>  # delete the whole vrf
>>  check ovn-nbctl --wait=hv set Logical_Router_Port internet-phys \
>>                               options:dynamic-routing-maintain-vrf=false
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>  AT_CHECK([ip route list vrf ovnvrf1337 | awk '{$1=$1};1'], [0], [dnl
>>  233.252.0.0/24 via 192.168.10.10 dev lo onlink
>>  233.253.0.0/24 via 192.168.20.20 dev hv1-mll onlink
>> @@ -16538,7 +16545,7 @@ start_daemon ovn-controller
>>  OVS_WAIT_UNTIL([test "$(ovn-appctl -t ovn-controller debug/status)" ==
>> "running"])
>>  check ovn-nbctl --wait=hv set Logical_Router_Port internet-phys \
>>          options:dynamic-routing-maintain-vrf=true
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>  AT_CHECK([ip vrf | grep -q ovnvrf1337], [1], [])
>>
>>  as ovn-sb
>> @@ -16670,7 +16677,7 @@ OVS_WAIT_UNTIL_EQUAL([ip route list vrf ovnvrf$vrf
>> | awk '{$1=$1};1'], [dnl
>>  blackhole 10.42.10.10 proto 84 metric 1000
>>  blackhole 172.16.1.150 proto 84 metric 1000])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  # Ensure system resources are cleaned up.
>>  AT_CHECK([ip link | grep -q ovnvrf$vrf:.*UP], [1])
>> @@ -16808,7 +16815,7 @@ OVS_WAIT_UNTIL_EQUAL([ip -6 route list vrf
>> ovnvrf$vrf | awk '{$1=$1};1'], [dnl
>>  blackhole 2001:db8:1001::150 dev lo proto 84 metric 1000 pref medium
>>  blackhole 2001:db8:3001::150 dev lo proto 84 metric 1000 pref medium])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  # Ensure system resources are cleaned up.
>>  AT_CHECK([ip link | grep -q ovnvrf1001:.*UP], [1])
>> @@ -17011,7 +17018,11 @@ blackhole 10.42.20.11 proto 84 metric 100
>>  blackhole 172.16.1.10 proto 84 metric 1000
>>  blackhole 172.16.1.11 proto 84 metric 1000])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +# Skip ls-join in flows comparison between I+P and recompute, because R2
>> has multiple DGPs.
>> +# This causes the following flows in sb
>> +# table=xx(ls_in_l2_lkup      ), priority=80   , match=(flags[1] == 0 &&
>> arp.op == 1 && arp.tpa == 10.42.10.10), action=(outport = "lsp-join-to-r2";
>> output;)
>> +# table=xx(ls_in_l2_lkup      ), priority=80   , match=(flags[1] == 0 &&
>> arp.op == 1 && arp.tpa == 10.42.10.10), action=(outport =
>> "lsp-join-to-r2-dgw2"; output;)
>> +OVN_CLEANUP_CONTROLLER([hv1], [], [], [ls-join])
>>
>>  # Ensure system resources are cleaned up.
>>  AT_CHECK([ip link | grep -q ovnvrf$vrf:.*UP], [1])
>> @@ -17214,7 +17225,7 @@ blackhole 2001:db8:1004::150 dev lo proto 84
>> metric 1000 pref medium
>>  blackhole 2001:db8:1004::151 dev lo proto 84 metric 1000 pref medium
>>  blackhole 2001:db8:1005::150 dev lo proto 84 metric 100 pref medium])
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1], [], [], [ls-join])
>>  # Ensure system resources are cleaned up.
>>  AT_CHECK([ip link | grep -q ovnvrf1003:.*UP], [1])
>>  AT_CHECK([test `ip -6 route show table 1003 | wc -l` -eq 2], [1])
>> @@ -17326,7 +17337,7 @@ OVS_WAIT_UNTIL([
>>  # Wait for the mac binding entry to expire.
>>  wait_row_count MAC_Binding 0
>>
>> -OVS_APP_EXIT_AND_WAIT([ovn-controller])
>> +OVN_CLEANUP_CONTROLLER([hv1])
>>
>>  as ovn-sb
>>  OVS_APP_EXIT_AND_WAIT([ovsdb-server])
>> --
>> 2.47.1
>>
>> _______________________________________________
>> dev mailing list
>> d...@openvswitch.org
>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>>
>>
> Looks good to me, thanks.
> 
> Acked-by: Ales Musil <amu...@redhat.com>

Thanks, Xavier and Ales!  Applied to main.

Regards,
Dumitru

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to