On 11/1/22 11:17, Dumitru Ceara wrote:
On 11/1/22 14:26, Dumitru Ceara wrote:
On 11/1/22 13:42, Mark Michelson wrote:
On 10/31/22 08:48, Dumitru Ceara wrote:
On 10/31/22 13:21, Mark Michelson wrote:
On 8/9/22 04:48, Numan Siddique wrote:
On Tue, Aug 9, 2022 at 6:45 PM Ales Musil <[email protected]> wrote:

On Mon, Aug 8, 2022 at 5:30 PM Dumitru Ceara <[email protected]>
wrote:

These may change over time and, as a matter of fact, have recently
changed
in OVS master branch with commit fcdf8ae4a350 ("lib: Print nw_frag
in flow
key.").

Instead, strip the flow key from the output.  To achieve that, the
calls
to ovn-trace had to go through a bit of refactoring too.

OVN has weekly CI jobs that run against OVS master branch.  These
were
failing due to the flow key dump changes:
https://github.com/ovn-org/ovn/actions/runs/2810798237

Signed-off-by: Dumitru Ceara <[email protected]>
---
    tests/ofproto-macros.at |   8 +++
    tests/ovn-macros.at     |  16 ++++++
    tests/ovn-northd.at     | 116
++++++++++++++--------------------------
    tests/ovn.at            |  64 ++++++++--------------
    4 files changed, 85 insertions(+), 119 deletions(-)

diff --git a/tests/ofproto-macros.at b/tests/ofproto-macros.at
index 23d793a95..2e0bbd20b 100644
--- a/tests/ofproto-macros.at
+++ b/tests/ofproto-macros.at
@@ -18,6 +18,14 @@ s/cookie=0x[0-9a-fA-F]*,//
    '
    }

+# Strips 'nw_frag=yes|no' from ovs-ofctl (or similar) output.
+strip_nw_frag () {
+    sed '
+s/nw_frag=yes,//
+s/nw_frag=no,//
+'
+}
+
    # Strips out uninteresting parts of ovs-ofctl output, as well as
parts
    # that vary from one run to another.
    ofctl_strip () {
diff --git a/tests/ovn-macros.at b/tests/ovn-macros.at
index 0e58c1d56..2ba930a85 100644
--- a/tests/ovn-macros.at
+++ b/tests/ovn-macros.at
@@ -787,6 +787,22 @@ store_ip6_multicast_pkt() {
        echo ${packet} >> ${outfile}
    }

+# Wrapper on top of ovn-trace, stripping some things and storing
the trace
+# output to a file called 'trace'.  For now it strips the rows
starting
+# with a '#'.  This should correspond to the flow key and might be
displayed
+# differently by different OVS library versions.
+ovn_trace() {
+    AT_CAPTURE_FILE([trace])
+    ovn-trace "$@" | tee trace | sed '/^# /d'
+}
+
+# Same as ovn_trace() except that it connects to an ovn-trace
daemon.
+ovn_trace_client() {
+    target=$1; shift
+    AT_CAPTURE_FILE([trace])
+    ovs-appctl -t $target trace "$@" | tee trace | sed '/^# /d'
+}
+
    OVS_END_SHELL_HELPERS

    m4_define([OVN_POPULATE_ARP], [AT_CHECK(ovn_populate_arp__, [0],
[ignore])])
diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at
index ae0f66ad6..5b5eeb0ee 100644
--- a/tests/ovn-northd.at
+++ b/tests/ovn-northd.at
@@ -2806,8 +2806,7 @@ lsp1_inport=$(fetch_column Port_Binding
tunnel_key
logical_port=lsp1)

    # TCP packets should go to conntrack.
    flow="inport == \"lsp1\" && ${flow_eth} && ${flow_ip} &&
${flow_tcp}"
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
tcp,reg14=0x${lsp1_inport},vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.1,nw_dst=66.66.66.66,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=80,tcp_flags=0
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    ct_next(ct_state=new|trk) {
        ct_next(ct_state=new|trk) {
            output("lsp2");
@@ -2817,8 +2816,7 @@ ct_next(ct_state=new|trk) {

    # UDP packets should go to conntrack.
    flow="inport == \"lsp1\" && ${flow_eth} && ${flow_ip} &&
${flow_udp}"
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
udp,reg14=0x${lsp1_inport},vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.1,nw_dst=66.66.66.66,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=80
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    ct_next(ct_state=new|trk) {
        ct_next(ct_state=new|trk) {
            output("lsp2");
@@ -2834,15 +2832,13 @@ ovn-nbctl --wait=sb sync

    # TCP packets should not go to conntrack anymore.
    flow="inport == \"lsp1\" && ${flow_eth} && ${flow_ip} &&
${flow_tcp}"
-AT_CHECK_UNQUOTED([ovn-trace --minimal ls "${flow}"], [0], [dnl
-#
tcp,reg14=0x${lsp1_inport},vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.1,nw_dst=66.66.66.66,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=80,tcp_flags=0
+AT_CHECK_UNQUOTED([ovn_trace --minimal ls "${flow}"], [0], [dnl
    output("lsp2");
    ])

    # UDP packets still go to conntrack.
    flow="inport == \"lsp1\" && ${flow_eth} && ${flow_ip} &&
${flow_udp}"
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
udp,reg14=0x${lsp1_inport},vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.1,nw_dst=66.66.66.66,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=80
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    ct_next(ct_state=new|trk) {
        ct_next(ct_state=new|trk) {
            output("lsp2");
@@ -2862,8 +2858,7 @@ ovn-nbctl --wait=sb sync

    # TCP packets should go to conntrack.
    flow="inport == \"lsp1\" && ${flow_eth} && ${flow_ip} &&
${flow_tcp}"
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
tcp,reg14=0x${lsp1_inport},vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.1,nw_dst=66.66.66.66,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=80,tcp_flags=0
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    ct_lb_mark {
        ct_lb_mark {
            reg0[[6]] = 0;
@@ -2877,8 +2872,7 @@ ct_lb_mark {

    # UDP packets should go to conntrack.
    flow="inport == \"lsp1\" && ${flow_eth} && ${flow_ip} &&
${flow_udp}"
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
udp,reg14=0x${lsp1_inport},vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.1,nw_dst=66.66.66.66,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=80
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    ct_lb_mark {
        ct_lb_mark {
            reg0[[6]] = 0;
@@ -2898,8 +2892,7 @@ ovn-nbctl --wait=sb sync

    # TCP packets should go to conntrack for load balancing.
    flow="inport == \"lsp1\" && ${flow_eth} && ${flow_ip} &&
${flow_tcp}"
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
tcp,reg14=0x${lsp1_inport},vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.1,nw_dst=66.66.66.66,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=80,tcp_flags=0
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    ct_lb_mark {
        ct_lb_mark {
            reg0[[6]] = 0;
@@ -2913,8 +2906,7 @@ ct_lb_mark {

    # UDP packets still go to conntrack.
    flow="inport == \"lsp1\" && ${flow_eth} && ${flow_ip} &&
${flow_udp}"
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
udp,reg14=0x${lsp1_inport},vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.1,nw_dst=66.66.66.66,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=80
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    ct_lb_mark {
        ct_lb_mark {
            reg0[[6]] = 0;
@@ -2958,8 +2950,7 @@ flow_udp='udp && udp.dst == 80'

    # TCP packets should go to conntrack.
    flow="inport == \"lsp1\" && ${flow_eth} && ${flow_ip} &&
${flow_tcp}"
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
tcp,reg14=0x${lsp1_inport},vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.1,nw_dst=66.66.66.66,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=80,tcp_flags=0
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    ct_next(ct_state=new|trk) {
        ct_next(ct_state=new|trk) {
            output("lsp2");
@@ -2969,8 +2960,7 @@ ct_next(ct_state=new|trk) {

    # UDP packets should go to conntrack.
    flow="inport == \"lsp1\" && ${flow_eth} && ${flow_ip} &&
${flow_udp}"
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
udp,reg14=0x${lsp1_inport},vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.1,nw_dst=66.66.66.66,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=80
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    ct_next(ct_state=new|trk) {
        ct_next(ct_state=new|trk) {
            output("lsp2");
@@ -2986,15 +2976,13 @@ ovn-nbctl --wait=sb sync

    # TCP packets should not go to conntrack anymore.
    flow="inport == \"lsp1\" && ${flow_eth} && ${flow_ip} &&
${flow_tcp}"
-AT_CHECK_UNQUOTED([ovn-trace --minimal ls "${flow}"], [0], [dnl
-#
tcp,reg14=0x${lsp1_inport},vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.1,nw_dst=66.66.66.66,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=80,tcp_flags=0
+AT_CHECK_UNQUOTED([ovn_trace --minimal ls "${flow}"], [0], [dnl
    output("lsp2");
    ])

    # UDP packets still go to conntrack.
    flow="inport == \"lsp1\" && ${flow_eth} && ${flow_ip} &&
${flow_udp}"
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
udp,reg14=0x${lsp1_inport},vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.1,nw_dst=66.66.66.66,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=80
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    ct_next(ct_state=new|trk) {
        ct_next(ct_state=new|trk) {
            output("lsp2");
@@ -3014,8 +3002,7 @@ ovn-nbctl --wait=sb sync

    # TCP packets should go to conntrack.
    flow="inport == \"lsp1\" && ${flow_eth} && ${flow_ip} &&
${flow_tcp}"
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
tcp,reg14=0x${lsp1_inport},vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.1,nw_dst=66.66.66.66,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=80,tcp_flags=0
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    ct_lb_mark {
        ct_lb_mark {
            reg0[[6]] = 0;
@@ -3029,8 +3016,7 @@ ct_lb_mark {

    # UDP packets should go to conntrack.
    flow="inport == \"lsp1\" && ${flow_eth} && ${flow_ip} &&
${flow_udp}"
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
udp,reg14=0x${lsp1_inport},vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.1,nw_dst=66.66.66.66,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=80
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    ct_lb_mark {
        ct_lb_mark {
            reg0[[6]] = 0;
@@ -3050,8 +3036,7 @@ ovn-nbctl --wait=sb sync

    # TCP packets should go to conntrack for load balancing.
    flow="inport == \"lsp1\" && ${flow_eth} && ${flow_ip} &&
${flow_tcp}"
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
tcp,reg14=0x${lsp1_inport},vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.1,nw_dst=66.66.66.66,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=80,tcp_flags=0
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    ct_lb_mark {
        ct_lb_mark {
            reg0[[6]] = 0;
@@ -3065,8 +3050,7 @@ ct_lb_mark {

    # UDP packets still go to conntrack.
    flow="inport == \"lsp1\" && ${flow_eth} && ${flow_ip} &&
${flow_udp}"
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
udp,reg14=0x${lsp1_inport},vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.1,nw_dst=66.66.66.66,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=80
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    ct_lb_mark {
        ct_lb_mark {
            reg0[[6]] = 0;
@@ -3106,8 +3090,7 @@ lsp1_inport=$(fetch_column Port_Binding
tunnel_key
logical_port=lsp1)

    # TCP packets should go to conntrack.
    flow="inport == \"lsp1\" && ${flow_eth} && ${flow_ip} &&
${flow_tcp}"
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
tcp,reg14=0x${lsp1_inport},vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.1,nw_dst=66.66.66.66,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=80,tcp_flags=0
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    ct_next(ct_state=new|trk) {
        ct_next(ct_state=new|trk) {
            output("lsp2");
@@ -3124,15 +3107,13 @@ ovn-nbctl --wait=sb sync

    # TCP packets should not go to conntrack anymore.
    flow="inport == \"lsp1\" && ${flow_eth} && ${flow_ip} &&
${flow_tcp}"
-AT_CHECK_UNQUOTED([ovn-trace --minimal ls "${flow}"], [0], [dnl
-#
tcp,reg14=0x${lsp1_inport},vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.1,nw_dst=66.66.66.66,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=80,tcp_flags=0
+AT_CHECK_UNQUOTED([ovn_trace --minimal ls "${flow}"], [0], [dnl
    output("lsp2");
    ])

    # UDP packets should not go to conntrack anymore.
    flow="inport == \"lsp1\" && ${flow_eth} && ${flow_ip} &&
${flow_udp}"
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
udp,reg14=0x${lsp1_inport},vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.1,nw_dst=66.66.66.66,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=80
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    output("lsp2");
    ])

@@ -4234,13 +4215,13 @@ check ovn-nbctl lsp-set-options
lrp1-attachment
router-port=lrp1
    check ovn-nbctl lr-nat-add lr0 dnat 42.42.42.42 192.168.0.2
    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\")"],
[0], [ignore])
+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\")"],
[0], [ignore])

    dnl If we remove the DNAT entry we will be unable to trace to the
DNAT
address
    check ovn-nbctl lr-nat-del lr0 dnat 42.42.42.42
    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])
+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])

    AT_CLEANUP
    ])
@@ -4273,13 +4254,13 @@ check ovn-nbctl lsp-set-options
lrp1-attachment
router-port=lrp1
    check ovn-nbctl lr-nat-add lr0 dnat fd42::42 fd68::2
    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\")"],
[0],
[ignore])
+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\")"],
[0],
[ignore])

    dnl If we remove the DNAT entry we will be unable to trace to the
DNAT
address
    check ovn-nbctl lr-nat-del lr0 dnat fd42::42
    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])
+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])

    AT_CLEANUP
    ])
@@ -5844,8 +5825,7 @@ check ovn-nbctl --wait=sb sync

    flow="eth.dst == 00:00:00:00:01:00 && inport == \"rtr-ls\" &&
ip4.src ==
42.42.42.42 && ip4.dst == 43.43.43.43 && ip.ttl == 64 && tcp &&
tcp.dst ==
4343"

-AT_CHECK_UNQUOTED([ovn-trace --ct new --minimal "${flow}" --lb-dst
42.42.42.42:4242], [0], [dnl
-#
tcp,reg14=0x1,vlan_tci=0x0000,dl_src=00:00:00:00:00:00,dl_dst=00:00:00:00:01:00,nw_src=42.42.42.42,nw_dst=43.43.43.43,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=4343,tcp_flags=0
+AT_CHECK_UNQUOTED([ovn_trace --ct new --minimal "${flow}" --lb-dst
42.42.42.42:4242], [0], [dnl
    ct_dnat /* assuming no un-dnat entry, so no change */ {
        ct_lb_mark /* default (use --ct to customize) */ {
            ip.ttl--;
@@ -5862,8 +5842,7 @@ ct_dnat /* assuming no un-dnat entry, so no
change
*/ {
    };
    ])

-AT_CHECK_UNQUOTED([ovn-trace --minimal "${flow}" --lb-dst
42.42.42.42:4242], [0], [dnl
-#
tcp,reg14=0x1,vlan_tci=0x0000,dl_src=00:00:00:00:00:00,dl_dst=00:00:00:00:01:00,nw_src=42.42.42.42,nw_dst=43.43.43.43,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=0,tp_dst=4343,tcp_flags=0
+AT_CHECK_UNQUOTED([ovn_trace --minimal "${flow}" --lb-dst
42.42.42.42:4242], [0], [dnl
    ct_dnat /* assuming no un-dnat entry, so no change */ /*
default (use
--ct to customize) */;
    ])

@@ -6710,8 +6689,7 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E
"ls_.*_acl"
| sed 's/table=../table=??/
    ])

    dnl UDP traffic should be allowed.
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
udp,reg14=0x1,vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.42,nw_dst=42.42.42.43,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=42,tp_dst=84
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    output("lsp2");
    ])

@@ -6730,8 +6708,7 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E
"ls_.*_acl"
| sed 's/table=../table=??/
    ])

    dnl UDP traffic should be allowed.
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
udp,reg14=0x1,vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.42,nw_dst=42.42.42.43,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=42,tp_dst=84
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    output("lsp2");
    ])

@@ -6750,8 +6727,7 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E
"ls_.*_acl"
| sed 's/table=../table=??/
    ])

    dnl UDP traffic should be allowed.
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
udp,reg14=0x1,vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.42,nw_dst=42.42.42.43,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=42,tp_dst=84
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    output("lsp2");
    ])

@@ -6777,8 +6753,7 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E
"ls_.*_acl"
| sed 's/table=../table=??/
    ])

    dnl UDP traffic should be allowed.
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
udp,reg14=0x1,vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.42,nw_dst=42.42.42.43,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=42,tp_dst=84
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    output("lsp2");
    ])

@@ -6800,8 +6775,7 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E
"ls_.*_acl"
| sed 's/table=../table=??/
    ])

    dnl UDP traffic should be allowed.
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
udp,reg14=0x1,vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.42,nw_dst=42.42.42.43,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=42,tp_dst=84
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    output("lsp2");
    ])

@@ -6823,8 +6797,7 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E
"ls_.*_acl"
| sed 's/table=../table=??/
    ])

    dnl UDP traffic should be dropped.
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
udp,reg14=0x1,vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.42,nw_dst=42.42.42.43,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=42,tp_dst=84
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    ])

    AS_BOX([from-lport ACL allow-related, default_acl_drop true])
@@ -6879,8 +6852,7 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E
"ls_.*_acl"
| sed 's/table=../table=??/
    ])

    dnl UDP traffic should be dropped.
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
udp,reg14=0x1,vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.42,nw_dst=42.42.42.43,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=42,tp_dst=84
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    ct_next(ct_state=new|trk);
    ])

@@ -6906,8 +6878,7 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E
"ls_.*_acl"
| sed 's/table=../table=??/
    ])

    dnl UDP traffic should be allowed.
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
udp,reg14=0x1,vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.42,nw_dst=42.42.42.43,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=42,tp_dst=84
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    output("lsp2");
    ])

@@ -6929,8 +6900,7 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E
"ls_.*_acl"
| sed 's/table=../table=??/
    ])

    dnl UDP traffic should be allowed.
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
udp,reg14=0x1,vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.42,nw_dst=42.42.42.43,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=42,tp_dst=84
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    output("lsp2");
    ])

@@ -6952,8 +6922,7 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E
"ls_.*_acl"
| sed 's/table=../table=??/
    ])

    dnl UDP traffic should be dropped.
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
udp,reg14=0x1,vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.42,nw_dst=42.42.42.43,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=42,tp_dst=84
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    ])

    AS_BOX([from-lport --apply-after-lb ACL allow-related,
default_acl_drop
true])
@@ -7008,8 +6977,7 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E
"ls_.*_acl"
| sed 's/table=../table=??/
    ])

    dnl UDP traffic should be dropped.
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
udp,reg14=0x1,vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.42,nw_dst=42.42.42.43,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=42,tp_dst=84
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    ct_next(ct_state=new|trk);
    ])

@@ -7035,8 +7003,7 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E
"ls_.*_acl"
| sed 's/table=../table=??/
    ])

    dnl UDP traffic should be allowed.
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
udp,reg14=0x1,vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.42,nw_dst=42.42.42.43,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=42,tp_dst=84
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    output("lsp2");
    ])

@@ -7058,8 +7025,7 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E
"ls_.*_acl"
| sed 's/table=../table=??/
    ])

    dnl UDP traffic should be allowed.
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
udp,reg14=0x1,vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.42,nw_dst=42.42.42.43,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=42,tp_dst=84
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    output("lsp2");
    ])

@@ -7081,8 +7047,7 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E
"ls_.*_acl"
| sed 's/table=../table=??/
    ])

    dnl UDP traffic should be dropped.
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
udp,reg14=0x1,vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.42,nw_dst=42.42.42.43,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=42,tp_dst=84
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    ])

    AS_BOX([to-lport ACL allow-related, default_acl_drop true])
@@ -7137,8 +7102,7 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E
"ls_.*_acl"
| sed 's/table=../table=??/
    ])

    dnl UDP traffic should be dropped.
-AT_CHECK_UNQUOTED([ovn-trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
-#
udp,reg14=0x1,vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=42.42.42.42,nw_dst=42.42.42.43,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=42,tp_dst=84
+AT_CHECK_UNQUOTED([ovn_trace --ct new --ct new --minimal ls
"${flow}"],
[0], [dnl
    ct_next(ct_state=new|trk);
    ])

diff --git a/tests/ovn.at b/tests/ovn.at
index 3ba6ced4e..54629acd3 100644
--- a/tests/ovn.at
+++ b/tests/ovn.at
@@ -2701,8 +2701,7 @@ test_packet() {
            echo "output(\"lp$outport\");"
        done > expout

-    AT_CAPTURE_FILE([trace])
-    AT_CHECK([ovs-appctl -t ovn-trace trace --all lsw0 "$uflow" |
tee
trace | sed '1,/Minimal trace/d'], [0], [expout])
+    AT_CHECK([ovn_trace_client ovn-trace --minimal lsw0 "$uflow"],
[0],
[expout])
    }

    # test_arp INPORT SHA SPA TPA [REPLY_HA]
@@ -2745,8 +2744,7 @@ output(\"lp$inport\");
    "
        fi

-    AT_CAPTURE_FILE([trace])
-    AT_CHECK_UNQUOTED([ovs-appctl -t ovn-trace trace --all lsw0
"$request" | tee trace | sed '1,/Minimal trace/d'], [0], [$reply])
+    AT_CHECK_UNQUOTED([ovn_trace_client ovn-trace --minimal lsw0
"$request"], [0], [$reply])
    }

    # Send packets between all pairs of source and destination ports:
@@ -2997,8 +2995,7 @@ test_packet() {
        if test $lout != drop; then
            echo "output(\"$lout\");"
        fi > expout
-    AT_CAPTURE_FILE([trace])
-    AT_CHECK([ovn-trace --all $(lsp_to_ls lp$inport) "$uflow" | tee
trace
| sed '1,/Minimal trace/d'], [0], [expout])
+    AT_CHECK([ovn_trace --minimal $(lsp_to_ls lp$inport) "$uflow"],
[0],
[expout])

        # Then actually send a packet, for an end-to-end test.
        local packet=$(echo $dst$src | sed 's/://g')${eth}
@@ -3169,8 +3166,7 @@ test_packet() {

        # First try tracing the packet.
        uflow="inport==\"lp-$inport\" && eth.dst==$dst &&
eth.src==$src &&
eth.type==0x$eth"
-    AT_CAPTURE_FILE([trace])
-    AT_CHECK([ovn-trace --all ls-${hv}0 "$uflow" | tee trace | sed
'1,/Minimal trace/d'], [0], [expout])
+    AT_CHECK([ovn_trace --minimal ls-${hv}0 "$uflow"], [0],
[expout])

        # Then actually send a packet, for an end-to-end test.
        local packet=$(echo $dst$src | sed 's/://g')${eth}
@@ -3302,8 +3298,7 @@ test_packet() {

        # First try tracing the packet.
        uflow="inport==\"lp-$inport\" && eth.dst==$dst &&
eth.src==$src &&
eth.type==0x$eth"
-    AT_CAPTURE_FILE([trace])
-    AT_CHECK([ovn-trace --all ls-${hv}0 "$uflow" | tee trace | sed
'1,/Minimal trace/d' | sort], [0], [expout])
+    AT_CHECK([ovn_trace --minimal ls-${hv}0 "$uflow" | sort], [0],
[expout])

        # Then actually send a packet, for an end-to-end test.
        local packet=$(echo $dst$src | sed 's/://g')${eth}
@@ -3432,8 +3427,7 @@ test_packet() {

        # First try tracing the packet.
        uflow="inport==\"lp-$inport\" && eth.dst==$dst &&
eth.src==$src &&
eth.type==0x$eth"
-    AT_CAPTURE_FILE([trace])
-    AT_CHECK([ovn-trace --all ls-$inport "$uflow" | tee trace | sed
'1,/Minimal trace/d'], [0], [expout])
+    AT_CHECK([ovn_trace --minimal ls-$inport "$uflow"], [0],
[expout])

        # Then actually send a packet, for an end-to-end test.
        local packet=$(echo $dst$src | sed 's/://g')${eth}
@@ -3657,8 +3651,7 @@ test_packet() {
        # First try tracing the packet.
        uflow="inport==\"lsp$inport\" && eth.dst==$dst &&
eth.src==$src &&
eth.type==0x$eth && vlan.present==1"
        echo "output(\"$lout\");" > expout
-    AT_CAPTURE_FILE([trace])
-    AT_CHECK([ovn-trace --all ls "$uflow" | tee trace | sed
'1,/Minimal
trace/d'], [0], [expout])
+    AT_CHECK([ovn_trace --minimal ls "$uflow"], [0], [expout])

        # Then actually send a packet, for an end-to-end test.
        local packet=$(echo $dst$src | sed 's/://g')${eth}fefefefe
@@ -3738,8 +3731,7 @@ test_packet() {
        # First try tracing the packet.
        uflow="inport==\"lsp$inport\" && eth.dst==$dst &&
eth.src==$src &&
eth.type==0x$eth && vlan.present==1"
        echo "output(\"$lout\");" > expout
-    AT_CAPTURE_FILE([trace])
-    AT_CHECK([ovn-trace --all ls "$uflow" | tee trace | sed
'1,/Minimal
trace/d'], [0], [expout])
+    AT_CHECK([ovn_trace --minimal ls "$uflow"], [0], [expout])

        # Then actually send a packet, for an end-to-end test.
        payload=fefefefe
@@ -3816,8 +3808,7 @@ test_packet() {
        # First try tracing the packet.
        uflow="inport==\"lsp$inport\" && eth.dst==$dst &&
eth.src==$src &&
eth.type==0x$eth && vlan.present==1"
        echo "output(\"$lout\");" > expout
-    AT_CAPTURE_FILE([trace])
-    AT_CHECK([ovn-trace --all ls "$uflow" | tee trace | sed
'1,/Minimal
trace/d'], [0], [expout])
+    AT_CHECK([ovn_trace --minimal ls "$uflow"], [0], [expout])

        # Then actually send a packet, for an end-to-end test.
        local packet=$(echo $dst$src | sed 's/://g')${eth}fefefefe
@@ -3867,8 +3858,7 @@ test_packet() {
        # First try tracing the packet.
        uflow="inport==\"lsp$inport\" && eth.dst==$dst &&
eth.src==$src &&
eth.type==0x$eth && vlan.present==1"
        echo "output(\"$lout\");" > expout
-    AT_CAPTURE_FILE([trace])
-    AT_CHECK([ovn-trace --all ls "$uflow" | tee trace | sed
'1,/Minimal
trace/d'], [0], [expout])
+    AT_CHECK([ovn_trace --minimal ls "$uflow"], [0], [expout])

        # Then actually send a packet, for an end-to-end test.
        local packet=$(echo $dst$src | sed 's/://g')${eth}fefefefe
@@ -3917,7 +3907,7 @@ test_packet() {

        # First try tracing the packet.
        uflow="inport==\"lsp$inport\" && eth.dst==$dst &&
eth.src==$src &&
eth.type==0x$eth && vlan.present==1"
-    AT_CHECK([ovn-trace --all ls "$uflow" | grep drop], [0],
[ignore])
+    AT_CHECK([ovn_trace ls "$uflow" | grep -q drop], [0])

        # Then actually send a packet, for an end-to-end test.
        local packet=$(echo $dst$src | sed 's/://g')${eth}fefefefe
@@ -4051,8 +4041,7 @@ test_packet() {
        # First try tracing the packet.
        uflow="inport==\"lp-$inport\" && eth.dst==$dst &&
eth.src==$src &&
eth.type==0x$eth"
        echo "output(\"$lout\");" > expout
-    AT_CAPTURE_FILE([trace])
-    AT_CHECK([ovn-trace --all ls1 "$uflow" | tee trace | sed
'1,/Minimal
trace/d'], [0], [expout])
+    AT_CHECK([ovn_trace --minimal ls1 "$uflow"], [0], [expout])

        # Then actually send a packet, for an end-to-end test.
        local packet=$(echo $dst$src | sed 's/://g')${eth}
@@ -9387,7 +9376,7 @@ as hv ovs-appctl -t ovn-controller inject-pkt
"$packet"

    OVS_WAIT_UNTIL([ test 8 = $(grep -c 'acl_log'
hv/ovn-controller.log) ])

-AT_CHECK([grep 'acl_log' hv/ovn-controller.log | sed
's/.*name=/name=/'],
[0], [dnl
+AT_CHECK([grep 'acl_log' hv/ovn-controller.log | sed
's/.*name=/name=/' |
strip_nw_frag], [0], [dnl
    name="drop-flow", verdict=drop, severity=alert,
direction=from-lport:
tcp,vlan_tci=0x0000,dl_src=f0:00:00:00:00:01,dl_dst=f0:00:00:00:00:02,nw_src=192.168.1.2,nw_dst=192.168.1.3,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=4361,tp_dst=81,tcp_flags=syn
    name="drop-flow", verdict=drop, severity=alert,
direction=to-lport:
tcp,vlan_tci=0x0000,dl_src=f0:00:00:00:00:01,dl_dst=f0:00:00:00:00:02,nw_src=192.168.1.2,nw_dst=192.168.1.3,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=4361,tp_dst=181,tcp_flags=syn
    name="allow-flow", verdict=allow, severity=info,
direction=from-lport:
tcp,vlan_tci=0x0000,dl_src=f0:00:00:00:00:01,dl_dst=f0:00:00:00:00:02,nw_src=192.168.1.2,nw_dst=192.168.1.3,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=4363,tp_dst=83,tcp_flags=syn
@@ -9575,11 +9564,6 @@ check ovs-vsctl add-port br-int vif1 -- set
Interface vif1 external-ids:iface-id
    check ovs-vsctl add-port br-int vif2 -- set Interface vif2
external-ids:iface-id=lp2 options:tx_pcap=vif2-tx.pcap
options:rxq_pcap=vif2-rx.pcap ofport-request=2
    wait_for_ports_up lp1 lp2

-AT_CAPTURE_FILE([trace])
-ovn_trace () {
-    ovn-trace --all "$@" | tee trace | sed '1,/Minimal trace/d'
-}
-
    # Extracts nw_tos from the final flow from ofproto/trace output
and prints
    # it on stdout.  Prints "none" if no nw_tos was included.
    get_final_nw_tos() {
@@ -9603,7 +9587,7 @@ check_tos() {
        echo "checking for tos $1"
        (if test $1 != 0; then echo "ip.dscp = $1;"; fi;
         echo 'output("lp2");') > expout
-    AT_CHECK_UNQUOTED([ovn_trace lsw0 'inport == "lp1" && eth.src ==
f0:00:00:00:00:01 && eth.dst == f0:00:00:00:00:02 && ip4.src ==
1.1.1.1 &&
ip4.dst == 1.1.1.2'], [0], [expout])
+    AT_CHECK_UNQUOTED([ovn_trace --minimal lsw0 'inport == "lp1" &&
eth.src == f0:00:00:00:00:01 && eth.dst == f0:00:00:00:00:02 &&
ip4.src ==
1.1.1.1 && ip4.dst == 1.1.1.2'], [0], [expout])

        # Then re-check with ofproto/trace for a physical packet.
        AT_CHECK([ovs-appctl ofproto/trace br-int
'in_port=1,dl_src=f0:00:00:00:00:01,dl_dst=f0:00:00:00:00:02,dl_type=0x800,nw_src=1.1.1.1,nw_dst=1.1.1.2'],
[0], [stdout-nolog])
@@ -9612,7 +9596,7 @@ check_tos() {
    }

    # check at L2
-AT_CHECK([ovn_trace lsw0 'inport == "lp1" && eth.src ==
f0:00:00:00:00:01
&& eth.dst == f0:00:00:00:00:02'], [0], [output("lp2");
+AT_CHECK([ovn_trace --minimal lsw0 'inport == "lp1" && eth.src ==
f0:00:00:00:00:01 && eth.dst == f0:00:00:00:00:02'], [0],
[output("lp2");
    ])
    AT_CHECK([ovs-appctl ofproto/trace br-int
'in_port=1,dl_src=f0:00:00:00:00:01,dl_dst=f0:00:00:00:00:02'], [0],
[stdout-nolog])
    AT_CHECK([get_final_nw_tos], [0], [none
@@ -11648,16 +11632,11 @@ echo $expected >> hv3-vif1.expected
    OVN_CHECK_PACKETS_UNIQ([hv3/vif1-tx.pcap], [hv3-vif1.expected])

    #Check ovn-trace over "chassisredirect" port
-AT_CAPTURE_FILE([trace])
-ovn_trace () {
-    ovn-trace --all "$@" | tee trace | sed '1,/Minimal trace/d'
-}
-
    echo 'ip.ttl--;' > expout
    echo 'eth.src = 00:00:02:01:02:03;' >> expout
    echo 'eth.dst = f0:00:00:01:02:04;' >> expout
    echo 'output("ln-alice");' >> expout
-AT_CHECK_UNQUOTED([ovn_trace foo 'inport == "foo1" && eth.src ==
f0:00:00:01:02:03 && eth.dst == 00:00:01:01:02:03 && ip4.src ==
192.168.1.2
&& ip4.dst == 172.16.1.3 && ip.ttl == 0xff'], [0], [expout])
+AT_CHECK_UNQUOTED([ovn_trace --minimal foo 'inport == "foo1" &&
eth.src
== f0:00:00:01:02:03 && eth.dst == 00:00:01:01:02:03 && ip4.src ==
192.168.1.2 && ip4.dst == 172.16.1.3 && ip.ttl == 0xff'], [0],
[expout])

    # Create logical port alice1 in alice on hv1
    as hv1 ovs-vsctl -- add-port br-int hv1-vif2 -- \
@@ -12601,8 +12580,7 @@ test_packet() {
        if test $lout != drop; then
            echo "output(\"$lout\");"
        fi > expout
-    AT_CAPTURE_FILE([trace])
-    AT_CHECK([ovn-trace --all ls1 "$uflow" | tee trace | sed
'1,/Minimal
trace/d'], [0], [expout])
+    AT_CHECK([ovn_trace --minimal ls1 "$uflow"], [0], [expout])

        # Then actually send a packet, for an end-to-end test.
        local packet=$(echo $dst$src | sed 's/://g')${eth}
@@ -20758,7 +20736,7 @@ AT_CHECK_UNQUOTED([ovn-sbctl get
controller_event
$uuid event_info:load_balancer
    "$uuid_lb2"
    ])

-AT_CHECK_UNQUOTED([ovn-trace sw0 'inport == "sw0-p11" && eth.src ==
00:00:00:00:00:11 && ip4.dst == 192.168.1.100 && tcp && tcp.dst ==
80' |
grep -q 'event = "empty_lb_backends"'], [0])
+AT_CHECK_UNQUOTED([ovn_trace sw0 'inport == "sw0-p11" && eth.src ==
00:00:00:00:00:11 && ip4.dst == 192.168.1.100 && tcp && tcp.dst ==
80' |
grep -q 'event = "empty_lb_backends"'], [0])

    OVN_CLEANUP([hv1], [hv2])
    AT_CLEANUP
@@ -24247,7 +24225,7 @@ wait_for_ports_up
    check ovn-nbctl --wait=hv sync

    # Trace with --ovs should see ovs flow related to the ACL
-AT_CHECK([ovn-trace --ovs lsw0 'inport == "lp1" && eth.type ==
0x1234' |
grep "dl_type=0x1234" | grep "cookie"], [0], [ignore])
+AT_CHECK([ovn_trace --ovs lsw0 'inport == "lp1" && eth.type ==
0x1234' |
grep "dl_type=0x1234" | grep "cookie"], [0], [ignore])

    # Replace the ACL with same match but different action.
    ovn-nbctl acl-del lsw0 -- \
@@ -24257,7 +24235,7 @@ check ovn-nbctl --wait=hv sync

    # Trace with --ovs should still see the ovs flow related to the
ACL, which
    # means the OVS flow is updated with new cookie corresponding to
the new
lflow.
-AT_CHECK([ovn-trace --ovs lsw0 'inport == "lp1" && eth.type ==
0x1234' |
grep "dl_type=0x1234 actions="], [0], [ignore])
+AT_CHECK([ovn_trace --ovs lsw0 'inport == "lp1" && eth.type ==
0x1234' |
grep "dl_type=0x1234 actions="], [0], [ignore])

    OVN_CLEANUP([hv1])
    AT_CLEANUP
@@ -24420,7 +24398,7 @@ for s_az in $(seq 1 $n_az); do
                        ip4 && ip.ttl==64 && ip4.src==$lsp_sip &&
ip4.dst==$lsp_dip &&
                        udp && udp.src==53 && udp.dst==4369"
                echo "sending: $packet"
-            AT_CHECK([ovn-trace --ovs "$packet" >
${s_az}-${d_az}-$i.ovn-trace])
+            AT_CHECK([ovn_trace --ovs "$packet" >
${s_az}-${d_az}-$i.ovn-trace])
                AT_CHECK([ovs-appctl -t ovn-controller inject-pkt
"$packet"])
                ovs_inport=$(ovs-vsctl --bare --columns=ofport find
Interface
external-ids:iface-id="$ovn_inport")

--
2.31.1


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


Hi Dumitru,

looks good to me.

Acked-by: Ales Musil <[email protected]>

Oops.  Sorry. I just applied the patch and missed your Acked-by.

Thanks for the patch Dumitru.

Numan

I just backported this patch to branch-22.06 and branch-22.03 to fix
some failing test cases there introduced by:

* 68e0100236f1db0dfbfbd27e57495824293b7b23 (branch-22.03)
* d6b59b35fb4c0bc174e9f1cace4a1b9b244f3c58 (branch-22.06)


Hi Mark,

I think it's fine to backport the test changes so no objection there.

But I'm a bit confused about the failures you mentioned and I want to
make sure we don't miss anything.  These are the CI runs on branches
22.03 and 22.06, with the commits you mentioned applied and they both
succeeded:

22.06 https://github.com/ovn-org/ovn/actions/runs/3295861381
22.03 https://github.com/ovn-org/ovn/actions/runs/3295865279

Are you sure you're not testing locally with a newer version of OVS?

The failures were actually found when I attempted a downstream build of
ovn 22.06. The build consistently failed with 24 test failures. The
reason the failures happened was because of the submodule bump in OVS.
The test failures are the same as was seen upstream here:
https://github.com/ovn-org/ovn/actions/runs/2810798237/jobs/4435469489 .


Oh, I see what happened.  We no longer run tests on the stable branches.
  I must have forgotten to cherry pick something when backporting the OVS
submodule bump.

Let me see if I can figure it out.

Sorry for the mess.


I pushed the following missing backports (branch-22.09 was fine):

- branch-22.06:
728afe31a0 OVN-CI: Add test cases with monitor-all enabled.
03f1e2f0e8 OVN-CI: remove ddlog test cases.

- branch-22.03:
1e2b088211 OVN-CI: Add test cases with monitor-all enabled.
91e1196d97 OVN-CI: remove ddlog test cases.
6c415389b4 Added test cases with ovn-northd parallelization enabled

CI should be green and tests should actually be running now.

Regards,
Dumitru


Excellent, thanks!

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

Reply via email to