On Thu, Aug 27, 2026 at 11:33 AM Xavier Simonart via dev <
[email protected]> wrote:

> curl -v output changes between versions e.g. in Fedora 44 "Connected to"
> is replaced by
> "Established connection to 172.16.0.100 (172.16.0.100 port 80) ..."
>
> While at it, fixed curl output checked on wrong chassis (curl run on
> ovn-chassis-3
> and output checked on ovn-chassis-4).


> This caused following test to fail when multinode test was built with
> Fedora 44
> "ovn multinode load-balancer with multiple DGPs and multiple chassis".
>
> Signed-off-by: Xavier Simonart <[email protected]>
> ---
>  tests/multinode-macros.at |   7 +++
>  tests/multinode.at        | 101 +++++++++++++++++++++-----------------
>  2 files changed, 62 insertions(+), 46 deletions(-)
>
> diff --git a/tests/multinode-macros.at b/tests/multinode-macros.at
> index 88677e364..8e730618f 100644
> --- a/tests/multinode-macros.at
> +++ b/tests/multinode-macros.at
> @@ -82,6 +82,13 @@ m4_define([M_FORMAT_CT],
>  m4_define([M_FORMAT_CURL],
>      [[sed 's/\(.*\)Connected to $1 ($1) port $2/Connected to $1 ($1) port
> $2\n/' | sed 's/\(.*\)200 OK/200 OK\n/' | grep -i -e connected -e "200 OK"
> | uniq ]])
>
>
After this patch the M_FORMAT_CURL is not called anymore in multinode.at,
should it be removed?


> +# OVN_CURL([CURL_ARGS])
> +#
> +# Execute curl with version-agnostic -w output formatting.
> +# On unsuccessful connections, curl.out also contains "Connected to ()
> port -1" and the http
> +# code (e.g. 000) from the -w format, but those are harmless as failure
> detection uses grep.
> +m4_define([OVN_CURL], [curl -s -S -o /dev/null -w "Connected to
> %{remote_ip} (%{remote_ip}) port %{remote_port}\n%{http_code}\n" $1 2>&1 |
> sed "s/^200$/200 OK/"])
> +
>  # CHECK_VRF()
>  #
>  # Perform a requirements check for running VRF tests.
> diff --git a/tests/multinode.at b/tests/multinode.at
> index 3df2921ee..cafbd12fe 100644
> --- a/tests/multinode.at
> +++ b/tests/multinode.at
> @@ -1601,14 +1601,14 @@ OVS_WAIT_UNTIL([m_as ovn-chassis-2 ip netns exec
> sw0p2 ss -tulpn | grep LISTEN |
>  m_as ovn-gw-1 ovs-appctl dpctl/flush-conntrack
>  m_as ovn-gw-2 ovs-appctl dpctl/flush-conntrack
>
> -M_NS_EXEC([ovn-chassis-3], [publicp1], [sh -c 'curl -v 172.16.0.100:80
> --retry 0 --connect-timeout 1 --max-time 1 --local-port 59002 2> curl.out'])
> -M_NS_CHECK_EXEC([ovn-chassis-3], [publicp1], [sh -c 'cat -v curl.out' |
> M_FORMAT_CURL([172.16.0.100], [80])], [0], [dnl
> +M_NS_EXEC([ovn-chassis-3], [publicp1], [sh -c 'OVN_CURL(172.16.0.100:80
> --retry 0 --connect-timeout 1 --max-time 1 --local-port 59002) > curl.out'])
> +M_NS_CHECK_EXEC([ovn-chassis-3], [publicp1], [sh -c 'cat -v curl.out'],
> [0], [dnl
>  Connected to 172.16.0.100 (172.16.0.100) port 80
>  200 OK
>  ])
>
> -M_NS_EXEC([ovn-chassis-4], [publicp2], [sh -c 'curl -v 172.16.0.100:80
> --retry 0 --connect-timeout 1 --max-time 1 --local-port 59003 2> curl.out'])
> -M_NS_CHECK_EXEC([ovn-chassis-4], [publicp2], [sh -c 'cat -v curl.out' |
> M_FORMAT_CURL([172.16.0.100], [80])], [0], [dnl
> +M_NS_EXEC([ovn-chassis-4], [publicp2], [sh -c 'OVN_CURL(172.16.0.100:80
> --retry 0 --connect-timeout 1 --max-time 1 --local-port 59003) > curl.out'])
> +M_NS_CHECK_EXEC([ovn-chassis-4], [publicp2], [sh -c 'cat -v curl.out'],
> [0], [dnl
>  Connected to 172.16.0.100 (172.16.0.100) port 80
>  200 OK
>  ])
> @@ -1638,7 +1638,7 @@ m_as ovn-chassis-2 ovs-appctl dpctl/flush-conntrack
>  m_as ovn-gw-1 ovs-appctl dpctl/flush-conntrack
>  m_as ovn-gw-2 ovs-appctl dpctl/flush-conntrack
>
> -M_NS_EXEC([ovn-chassis-3], [publicp1], [sh -c 'curl -v -O
> 172.16.0.100:80/download_file --retry 0 --connect-timeout 1 --max-time 1
> --local-port 59004 2>curl.out'])
> +M_NS_EXEC([ovn-chassis-3], [publicp1], [sh -c 'OVN_CURL(
> 172.16.0.100:80/download_file --retry 0 --connect-timeout 1 --max-time 1
> --local-port 59004) > curl.out'])
>
>  gw1_ct=$(m_as ovn-gw-1 ovs-appctl dpctl/dump-conntrack | sed
> ':a;N;$!ba;s/\n/\\n/g')
>  gw2_ct=$(m_as ovn-gw-2 ovs-appctl dpctl/dump-conntrack | sed
> ':a;N;$!ba;s/\n/\\n/g')
> @@ -1647,7 +1647,7 @@ chassis2_ct=$(m_as ovn-chassis-2 ovs-appctl
> dpctl/dump-conntrack | sed ':a;N;$!b
>  chassis1_flow=$(m_as ovn-chassis-1 ovs-dpctl dump-flows | sed
> ':a;N;$!ba;s/\n/\\n/g')
>  chassis2_flow=$(m_as ovn-chassis-2 ovs-dpctl dump-flows | sed
> ':a;N;$!ba;s/\n/\\n/g')
>
> -OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 ip netns exec publicp1 cat -v
> curl.out | M_FORMAT_CURL([172.16.0.100], [80])], [0], [dnl
> +OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 ip netns exec publicp1 cat -v
> curl.out], [0], [dnl
>  Connected to 172.16.0.100 (172.16.0.100) port 80
>  200 OK
>  ])

@@ -1703,7 +1703,7 @@ m_as ovn-gw-1 ovs-appctl dpctl/flush-conntrack
>  m_as ovn-gw-2 ovs-appctl dpctl/flush-conntrack
>
>  # Check the flows again for a new source port
> -M_NS_EXEC([ovn-chassis-3], [publicp1], [sh -c 'curl -v -O
> 172.16.0.100:80/download_file --retry 0 --connect-timeout 1 --max-time 1
> --local-port 59005 2>curl.out'])
> +M_NS_EXEC([ovn-chassis-3], [publicp1], [sh -c 'OVN_CURL(
> 172.16.0.100:80/download_file --retry 0 --connect-timeout 1 --max-time 1
> --local-port 59005) > curl.out'])
>
>  gw1_ct=$(m_as ovn-gw-1 ovs-appctl dpctl/dump-conntrack | sed
> ':a;N;$!ba;s/\n/\\n/g')
>  gw2_ct=$(m_as ovn-gw-2 ovs-appctl dpctl/dump-conntrack | sed
> ':a;N;$!ba;s/\n/\\n/g')
> @@ -1712,7 +1712,7 @@ chassis2_ct=$(m_as ovn-chassis-2 ovs-appctl
> dpctl/dump-conntrack | sed ':a;N;$!b
>  chassis1_flow=$(m_as ovn-chassis-1 ovs-dpctl dump-flows | sed
> ':a;N;$!ba;s/\n/\\n/g')
>  chassis2_flow=$(m_as ovn-chassis-2 ovs-dpctl dump-flows | sed
> ':a;N;$!ba;s/\n/\\n/g')
>
> -OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 ip netns exec publicp1 cat -v
> curl.out | M_FORMAT_CURL([172.16.0.100], [80])], [0], [dnl
> +OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 ip netns exec publicp1 cat -v
> curl.out], [0], [dnl
>  Connected to 172.16.0.100 (172.16.0.100) port 80
>  200 OK
>  ])
> @@ -1758,7 +1758,7 @@ m_as ovn-gw-1 ovs-appctl dpctl/flush-conntrack
>  m_as ovn-gw-2 ovs-appctl dpctl/flush-conntrack
>
>  # Start a new test using the second DGP as origin (public2)
> -M_NS_EXEC([ovn-chassis-4], [publicp2], [sh -c 'curl -v -O
> 172.16.0.100:80/download_file --retry 0 --connect-timeout 1 --max-time 1
> --local-port 59006 2>curl.out'])
> +M_NS_EXEC([ovn-chassis-4], [publicp2], [sh -c 'OVN_CURL(
> 172.16.0.100:80/download_file --retry 0 --connect-timeout 1 --max-time 1
> --local-port 59006) > curl.out'])
>
>  gw1_ct=$(m_as ovn-gw-1 ovs-appctl dpctl/dump-conntrack | sed
> ':a;N;$!ba;s/\n/\\n/g')
>  gw2_ct=$(m_as ovn-gw-2 ovs-appctl dpctl/dump-conntrack | sed
> ':a;N;$!ba;s/\n/\\n/g')
> @@ -1767,7 +1767,7 @@ chassis2_ct=$(m_as ovn-chassis-2 ovs-appctl
> dpctl/dump-conntrack | sed ':a;N;$!b
>  chassis1_flow=$(m_as ovn-chassis-1 ovs-dpctl dump-flows | sed
> ':a;N;$!ba;s/\n/\\n/g')
>  chassis2_flow=$(m_as ovn-chassis-2 ovs-dpctl dump-flows | sed
> ':a;N;$!ba;s/\n/\\n/g')
>
> -OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-4 ip netns exec publicp2 cat -v
> curl.out | M_FORMAT_CURL([172.16.0.100], [80])], [0], [dnl
> +OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-4 ip netns exec publicp2 cat -v
> curl.out], [0], [dnl
>  Connected to 172.16.0.100 (172.16.0.100) port 80
>  200 OK
>  ])
> @@ -1823,7 +1823,7 @@ m_as ovn-gw-1 ovs-appctl dpctl/flush-conntrack
>  m_as ovn-gw-2 ovs-appctl dpctl/flush-conntrack
>
>  # Check the flows again for a new source port using the second DGP as
> origin (public2)
> -M_NS_EXEC([ovn-chassis-4], [publicp2], [sh -c 'curl -v -O
> 172.16.0.100:80/download_file --retry 0 --connect-timeout 1 --max-time 1
> --local-port 59007 2>curl.out'])
> +M_NS_EXEC([ovn-chassis-4], [publicp2], [sh -c 'OVN_CURL(
> 172.16.0.100:80/download_file --retry 0 --connect-timeout 1 --max-time 1
> --local-port 59007) > curl.out'])
>
>  gw1_ct=$(m_as ovn-gw-1 ovs-appctl dpctl/dump-conntrack | sed
> ':a;N;$!ba;s/\n/\\n/g')
>  gw2_ct=$(m_as ovn-gw-2 ovs-appctl dpctl/dump-conntrack | sed
> ':a;N;$!ba;s/\n/\\n/g')
> @@ -1832,7 +1832,7 @@ chassis2_ct=$(m_as ovn-chassis-2 ovs-appctl
> dpctl/dump-conntrack | sed ':a;N;$!b
>  chassis1_flow=$(m_as ovn-chassis-1 ovs-dpctl dump-flows | sed
> ':a;N;$!ba;s/\n/\\n/g')
>  chassis2_flow=$(m_as ovn-chassis-2 ovs-dpctl dump-flows | sed
> ':a;N;$!ba;s/\n/\\n/g')
>
> -OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-4 ip netns exec publicp2 cat -v
> curl.out | M_FORMAT_CURL([172.16.0.100], [80])], [0], [dnl
> +OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-4 ip netns exec publicp2 cat -v
> curl.out], [0], [dnl
>  Connected to 172.16.0.100 (172.16.0.100) port 80
>  200 OK
>  ])
> @@ -1883,26 +1883,26 @@ fi
>
>  # Check multiple requests coming from DGP's public1 and public2
>
> -M_NS_EXEC([ovn-chassis-4], [publicp2], [sh -c 'curl -v -O
> 172.16.0.100:80/download_file --retry 0 --connect-timeout 1 --max-time 1
> 2>curl.out'])
> -OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-4 cat -v curl.out |
> M_FORMAT_CURL([172.16.0.100], [80])], [0], [dnl
> +M_NS_EXEC([ovn-chassis-4], [publicp2], [sh -c 'OVN_CURL(
> 172.16.0.100:80/download_file --retry 0 --connect-timeout 1 --max-time 1)
> > curl.out'])
> +OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-4 ip netns exec publicp2 cat -v
> curl.out], [0], [dnl
>  Connected to 172.16.0.100 (172.16.0.100) port 80
>  200 OK
>  ])
>
> -M_NS_EXEC([ovn-chassis-3], [publicp1], [sh -c 'curl -v -O
> 172.16.0.100:80/download_file --retry 0 --connect-timeout 1 --max-time 1
> 2>curl.out'])
> -OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 cat -v curl.out |
> M_FORMAT_CURL([172.16.0.100], [80])], [0], [dnl
> +M_NS_EXEC([ovn-chassis-3], [publicp1], [sh -c 'OVN_CURL(
> 172.16.0.100:80/download_file --retry 0 --connect-timeout 1 --max-time 1)
> > curl.out'])
> +OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 ip netns exec publicp1 cat -v
> curl.out], [0], [dnl
>  Connected to 172.16.0.100 (172.16.0.100) port 80
>  200 OK
>  ])
>
> -M_NS_EXEC([ovn-chassis-4], [publicp2], [sh -c 'curl -v -O
> 172.16.0.100:80/download_file --retry 0 --connect-timeout 1 --max-time 1
> 2>curl.out'])
> -OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-4 cat -v curl.out |
> M_FORMAT_CURL([172.16.0.100], [80])], [0], [dnl
> +M_NS_EXEC([ovn-chassis-4], [publicp2], [sh -c 'OVN_CURL(
> 172.16.0.100:80/download_file --retry 0 --connect-timeout 1 --max-time 1)
> > curl.out'])
> +OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-4 ip netns exec publicp2 cat -v
> curl.out], [0], [dnl
>  Connected to 172.16.0.100 (172.16.0.100) port 80
>  200 OK
>  ])
>
> -M_NS_EXEC([ovn-chassis-3], [publicp1], [sh -c 'curl -v -O
> 172.16.0.100:80/download_file --retry 0 --connect-timeout 1 --max-time 1
> 2>curl.out'])
> -OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 cat -v curl.out |
> M_FORMAT_CURL([172.16.0.100], [80])], [0], [dnl
> +M_NS_EXEC([ovn-chassis-3], [publicp1], [sh -c 'OVN_CURL(
> 172.16.0.100:80/download_file --retry 0 --connect-timeout 1 --max-time 1)
> > curl.out'])
> +OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 ip netns exec publicp1 cat -v
> curl.out], [0], [dnl
>  Connected to 172.16.0.100 (172.16.0.100) port 80
>  200 OK
>  ])
> @@ -1922,13 +1922,13 @@ m_as ovn-gw-1 ovs-appctl dpctl/flush-conntrack
>  m_as ovn-gw-2 ovs-appctl dpctl/flush-conntrack
>
>  # Check end-to-end request using a new port for VIP
> -M_NS_EXEC([ovn-chassis-3], [publicp1], [sh -c 'curl -v -O
> 172.16.0.100:9000/download_file --retry 0 --connect-timeout 1 --max-time
> 1 --local-port 59008 2>curl.out'])
> +M_NS_EXEC([ovn-chassis-3], [publicp1], [sh -c 'OVN_CURL(
> 172.16.0.100:9000/download_file --retry 0 --connect-timeout 1 --max-time
> 1 --local-port 59008) > curl.out'])
>  OVS_WAIT_FOR_OUTPUT([m_as ovn-gw-1 ovs-appctl dpctl/dump-conntrack |
> M_FORMAT_CT(20.0.1.3) | \
>  grep tcp | sed -E -e 's/10.0.1.3|10.0.1.4/<cleared>/g' | sort], [0], [dnl
>
>  
> tcp,orig=(src=20.0.1.3,dst=<cleared>,sport=59008,dport=80),reply=(src=<cleared>,dst=20.0.1.3,sport=80,dport=59008),zone=<cleared>,protoinfo=(state=<cleared>)
>  ])
>
> -OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 cat -v curl.out |
> M_FORMAT_CURL([172.16.0.100], [9000])], [0], [dnl
> +OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 ip netns exec publicp1 cat -v
> curl.out], [0], [dnl
>  Connected to 172.16.0.100 (172.16.0.100) port 9000
>  200 OK
>  ])
> @@ -1937,13 +1937,13 @@ m_as ovn-gw-1 ovs-appctl dpctl/flush-conntrack
>  m_as ovn-gw-2 ovs-appctl dpctl/flush-conntrack
>
>  # Check end-to-end request using a new port for VIP
> -M_NS_EXEC([ovn-chassis-4], [publicp2], [sh -c 'curl -v -O
> 172.16.0.100:9000/download_file --retry 0 --connect-timeout 1 --max-time
> 1 --local-port 59008 2>curl.out'])
> +M_NS_EXEC([ovn-chassis-4], [publicp2], [sh -c 'OVN_CURL(
> 172.16.0.100:9000/download_file --retry 0 --connect-timeout 1 --max-time
> 1 --local-port 59008) > curl.out'])
>  OVS_WAIT_FOR_OUTPUT([m_as ovn-gw-2 ovs-appctl dpctl/dump-conntrack |
> M_FORMAT_CT(30.0.1.3) | \
>  grep tcp | sed -E -e 's/10.0.1.3|10.0.1.4/<cleared>/g' | sort], [0], [dnl
>
>  
> tcp,orig=(src=30.0.1.3,dst=<cleared>,sport=59008,dport=80),reply=(src=<cleared>,dst=30.0.1.3,sport=80,dport=59008),zone=<cleared>,protoinfo=(state=<cleared>)
>  ])
>
> -OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 cat -v curl.out |
> M_FORMAT_CURL([172.16.0.100], [9000])], [0], [dnl
> +OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-4 ip netns exec publicp2 cat -v
> curl.out], [0], [dnl
>


nit: it looks like the commit message describes the bug incorrectly. it
looks like the curl is run on ovn-chassis-4 but checked the curl.out on
ovn-chassis-3 in the original code (the commit message says the opposite).
The bug is fixed so no issue there both perform the curl and read from
ovn-chassis-4.


>  Connected to 172.16.0.100 (172.16.0.100) port 9000
>  200 OK
>  ])
> @@ -2156,7 +2156,7 @@ m_as ovn-gw-3 ovs-appctl dpctl/flush-conntrack
>  m_as ovn-gw-4 ovs-appctl dpctl/flush-conntrack
>
>  # Check direct backend traffic using the same LB ports
> -M_NS_EXEC([ovn-chassis-3], [sw1p1], [sh -c 'curl -v -O
> 10.0.2.3:80/download_file --retry 0 --connect-timeout 1 --max-time 1
> --local-port 59013 2>curl.out'])
> +M_NS_EXEC([ovn-chassis-3], [sw1p1], [sh -c 'OVN_CURL(
> 10.0.2.3:80/download_file --retry 0 --connect-timeout 1 --max-time 1
> --local-port 59013) > curl.out'])
>
>  gw1_ct=$(m_as ovn-gw-1 ovs-appctl dpctl/dump-conntrack | sed
> ':a;N;$!ba;s/\n/\\n/g')
>  gw2_ct=$(m_as ovn-gw-2 ovs-appctl dpctl/dump-conntrack | sed
> ':a;N;$!ba;s/\n/\\n/g')
> @@ -2179,7 +2179,7 @@ sed 's/\(.*\)timed out/timed out\n/' | sed
> 's/\(.*\)connect timeout/timed out\n/
>  timed out
>  ])
>  else
> -OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 cat -v curl.out |
> M_FORMAT_CURL([10.0.2.3], [80])], [0], [dnl
> +OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 cat -v curl.out], [0], [dnl
>  Connected to 10.0.2.3 (10.0.2.3) port 80
>  200 OK
>  ])
> @@ -2191,7 +2191,7 @@ m_as ovn-gw-2 ovs-appctl dpctl/flush-conntrack
>  m_as ovn-gw-3 ovs-appctl dpctl/flush-conntrack
>  m_as ovn-gw-4 ovs-appctl dpctl/flush-conntrack
>
> -M_NS_EXEC([ovn-chassis-3], [sw1p1], [sh -c 'curl -v -O
> 10.0.2.4:80/download_file --retry 0 --connect-timeout 1 --max-time 1
> --local-port 59014 2>curl.out'])
> +M_NS_EXEC([ovn-chassis-3], [sw1p1], [sh -c 'OVN_CURL(
> 10.0.2.4:80/download_file --retry 0 --connect-timeout 1 --max-time 1
> --local-port 59014) > curl.out'])
>
>  gw1_ct=$(m_as ovn-gw-1 ovs-appctl dpctl/dump-conntrack | sed
> ':a;N;$!ba;s/\n/\\n/g')
>  gw2_ct=$(m_as ovn-gw-2 ovs-appctl dpctl/dump-conntrack | sed
> ':a;N;$!ba;s/\n/\\n/g')
> @@ -2214,14 +2214,14 @@ sed 's/\(.*\)timed out/timed out\n/' | sed
> 's/\(.*\)connect timeout/timed out\n/
>  timed out
>  ])
>  else
> -OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 cat -v curl.out |
> M_FORMAT_CURL([10.0.2.4], [80])], [0], [dnl
> +OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 cat -v curl.out], [0], [dnl
>  Connected to 10.0.2.4 (10.0.2.4) port 80
>  200 OK
>  ])
>  fi
>
>  # Check the flows again for the LB VIP
> -M_NS_EXEC([ovn-chassis-3], [sw1p1], [sh -c 'curl -v 172.16.0.100:80
> --retry 0 --connect-timeout 1 --max-time 1 --local-port 59015 2>curl.out'])
> +M_NS_EXEC([ovn-chassis-3], [sw1p1], [sh -c 'OVN_CURL(172.16.0.100:80
> --retry 0 --connect-timeout 1 --max-time 1 --local-port 59015) > curl.out'])
>
>  curl_timeout=$(m_as ovn-chassis-3 cat -v curl.out | grep -i -e "timed
> out" -e "timeout" -c)
>
> @@ -2232,14 +2232,14 @@ sed 's/\(.*\)timed out/timed out\n/' | sed
> 's/\(.*\)connect timeout/timed out\n/
>  timed out
>  ])
>  else
> -OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 cat -v curl.out |
> M_FORMAT_CURL([172.16.0.100], [80])], [0], [dnl
> +OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 cat -v curl.out], [0], [dnl
>  Connected to 172.16.0.100 (172.16.0.100) port 80
>  200 OK
>  ])
>  fi
>
>  # Check the flows again for the LB VIP
> -M_NS_EXEC([ovn-chassis-3], [sw1p1], [sh -c 'curl -v 172.16.0.100:80
> --retry 0 --connect-timeout 1 --max-time 1 --local-port 59016 2>curl.out'])
> +M_NS_EXEC([ovn-chassis-3], [sw1p1], [sh -c 'OVN_CURL(172.16.0.100:80
> --retry 0 --connect-timeout 1 --max-time 1 --local-port 59016) > curl.out'])
>
>  curl_timeout=$(m_as ovn-chassis-3 cat -v curl.out | grep -i -e "timed
> out" -e "timeout" -c)
>
> @@ -2250,7 +2250,7 @@ sed 's/\(.*\)timed out/timed out\n/' | sed
> 's/\(.*\)connect timeout/timed out\n/
>  timed out
>  ])
>  else
> -OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 cat -v curl.out |
> M_FORMAT_CURL([172.16.0.100], [80])], [0], [dnl
> +OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 cat -v curl.out], [0], [dnl
>  Connected to 172.16.0.100 (172.16.0.100) port 80
>  200 OK
>  ])
> @@ -2262,11 +2262,11 @@ check multinode_nbctl set load_balancer lb0
> options:use_stateless_nat=true
>  check multinode_nbctl --wait=sb set load_balancer lb0
> selection_fields="ip_src,tp_src,ip_dst,tp_dst"
>
>  # Check the flows again for the LB VIP - always needs to be successful
> regardless of the datapath (one or two gw chassis)
> -M_NS_EXEC([ovn-chassis-3], [sw1p1], [sh -c 'curl -v -O
> 172.16.0.100:80/download_file --retry 0 --connect-timeout 1 --max-time 1
> 2>curl.out'])
> +M_NS_EXEC([ovn-chassis-3], [sw1p1], [sh -c 'OVN_CURL(
> 172.16.0.100:80/download_file --retry 0 --connect-timeout 1 --max-time 1)
> > curl.out'])
>  M_NS_EXEC([ovn-chassis-1], [sw0p1], [sh -c 'ss -nn >connections.out'])
>  M_NS_EXEC([ovn-chassis-2], [sw0p2], [sh -c 'ss -nn >connections.out'])
>
> -OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 cat -v curl.out |
> M_FORMAT_CURL([172.16.0.100], [80])], [0], [dnl
> +OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 cat -v curl.out], [0], [dnl
>  Connected to 172.16.0.100 (172.16.0.100) port 80
>  200 OK
>  ])
> @@ -2279,11 +2279,11 @@ OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-2 cat
> connections.out | grep  "FIN-WAIT-2"
>  0
>  ])
>
> -M_NS_EXEC([ovn-chassis-3], [sw1p1], [sh -c 'curl -v -O
> 172.16.0.100:80/download_file --retry 0 --connect-timeout 1 --max-time 1
> 2>curl.out'])
> +M_NS_EXEC([ovn-chassis-3], [sw1p1], [sh -c 'OVN_CURL(
> 172.16.0.100:80/download_file --retry 0 --connect-timeout 1 --max-time 1)
> > curl.out'])
>  M_NS_EXEC([ovn-chassis-1], [sw0p1], [sh -c 'ss -nn >connections.out'])
>  M_NS_EXEC([ovn-chassis-2], [sw0p2], [sh -c 'ss -nn >connections.out'])
>
> -OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 cat -v curl.out |
> M_FORMAT_CURL([172.16.0.100], [80])], [0], [dnl
> +OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 cat -v curl.out], [0], [dnl
>  Connected to 172.16.0.100 (172.16.0.100) port 80
>  200 OK
>  ])
> @@ -2296,11 +2296,11 @@ OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-2 cat
> connections.out | grep "FIN-WAIT-2"
>  0
>  ])
>
> -M_NS_EXEC([ovn-chassis-3], [sw1p1], [sh -c 'curl -v -O
> 172.16.0.100:80/download_file --retry 0 --connect-timeout 1 --max-time 1
> 2>curl.out'])
> +M_NS_EXEC([ovn-chassis-3], [sw1p1], [sh -c 'OVN_CURL(
> 172.16.0.100:80/download_file --retry 0 --connect-timeout 1 --max-time 1)
> > curl.out'])
>  M_NS_EXEC([ovn-chassis-1], [sw0p1], [sh -c 'ss -nn >connections.out'])
>  M_NS_EXEC([ovn-chassis-2], [sw0p2], [sh -c 'ss -nn >connections.out'])
>
> -OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 cat -v curl.out |
> M_FORMAT_CURL([172.16.0.100], [80])], [0], [dnl
> +OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 cat -v curl.out], [0], [dnl
>  Connected to 172.16.0.100 (172.16.0.100) port 80
>  200 OK
>  ])
> @@ -2313,11 +2313,11 @@ OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-2 cat
> connections.out | grep "FIN-WAIT-2"
>  0
>  ])
>
> -M_NS_EXEC([ovn-chassis-3], [sw1p1], [sh -c 'curl -v -O
> 172.16.0.100:80/download_file --retry 0 --connect-timeout 1 --max-time 1
> 2>curl.out'])
> +M_NS_EXEC([ovn-chassis-3], [sw1p1], [sh -c 'OVN_CURL(
> 172.16.0.100:80/download_file --retry 0 --connect-timeout 1 --max-time 1)
> > curl.out'])
>  M_NS_EXEC([ovn-chassis-1], [sw0p1], [sh -c 'ss -nn >connections.out'])
>  M_NS_EXEC([ovn-chassis-2], [sw0p2], [sh -c 'ss -nn >connections.out'])
>
> -OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 cat -v curl.out |
> M_FORMAT_CURL([172.16.0.100], [80])], [0], [dnl
> +OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 cat -v curl.out], [0], [dnl
>  Connected to 172.16.0.100 (172.16.0.100) port 80
>  200 OK
>  ])
> @@ -2331,7 +2331,7 @@ OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-2 cat
> connections.out | grep "FIN-WAIT-2"
>  ])
>
>  # Direct backend traffic using the same LB ports needs to be dropped
> -M_NS_EXEC([ovn-chassis-3], [sw1p1], [sh -c 'curl -v -O
> 10.0.2.3:80/download_file --retry 0 --connect-timeout 1 --max-time 1
> 2>curl.out'])
> +M_NS_EXEC([ovn-chassis-3], [sw1p1], [sh -c 'OVN_CURL(
> 10.0.2.3:80/download_file --retry 0 --connect-timeout 1 --max-time 1) >
> curl.out'])
>
>  OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 ip netns exec sw1p1 cat -v
> curl.out | \
>  sed 's/\(.*\)timed out/timed out\n/' | sed 's/\(.*\)connect timeout/timed
> out\n/' | grep -i -e "timed out" | uniq], [0], [dnl
> @@ -2339,7 +2339,7 @@ timed out
>  ])
>
>  # check again using another source ports
> -M_NS_EXEC([ovn-chassis-3], [sw1p1], [sh -c 'curl -v -O
> 10.0.2.3:80/download_file --retry 0 --connect-timeout 1 --max-time 1
> 2>curl.out'])
> +M_NS_EXEC([ovn-chassis-3], [sw1p1], [sh -c 'OVN_CURL(
> 10.0.2.3:80/download_file --retry 0 --connect-timeout 1 --max-time 1) >
> curl.out'])
>
>  OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 ip netns exec sw1p1 cat -v
> curl.out | \
>  sed 's/\(.*\)timed out/timed out\n/' | sed 's/\(.*\)connect timeout/timed
> out\n/' | grep -i -e "timed out" | uniq], [0], [dnl
> @@ -2360,7 +2360,7 @@ m_as ovn-gw-2 ovs-appctl dpctl/flush-conntrack
>  m_as ovn-gw-3 ovs-appctl dpctl/flush-conntrack
>  m_as ovn-gw-4 ovs-appctl dpctl/flush-conntrack
>
> -M_NS_EXEC([ovn-chassis-3], [sw1p1], [sh -c 'curl -v -O
> 10.0.2.4:8080/download_file --retry 0 --connect-timeout 1 --max-time 1
> --local-port 59017 2>curl.out'])
> +M_NS_EXEC([ovn-chassis-3], [sw1p1], [sh -c 'OVN_CURL(
> 10.0.2.4:8080/download_file --retry 0 --connect-timeout 1 --max-time 1
> --local-port 59017) > curl.out'])
>
>  gw1_ct=$(m_as ovn-gw-1 ovs-appctl dpctl/dump-conntrack | sed
> ':a;N;$!ba;s/\n/\\n/g')
>  gw2_ct=$(m_as ovn-gw-2 ovs-appctl dpctl/dump-conntrack | sed
> ':a;N;$!ba;s/\n/\\n/g')
> @@ -2383,7 +2383,7 @@ sed 's/\(.*\)timed out/timed out\n/' | sed
> 's/\(.*\)connect timeout/timed out\n/
>  timed out
>  ])
>  else
> -OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 cat -v curl.out |
> M_FORMAT_CURL([10.0.2.4], [8080])], [0], [dnl
> +OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 cat -v curl.out], [0], [dnl
>  Connected to 10.0.2.4 (10.0.2.4) port 8080
>  200 OK
>  ])
> @@ -2396,7 +2396,7 @@ m_as ovn-gw-3 ovs-appctl dpctl/flush-conntrack
>  m_as ovn-gw-4 ovs-appctl dpctl/flush-conntrack
>
>  # Check again
> -M_NS_EXEC([ovn-chassis-3], [sw1p1], [sh -c 'curl -v -O
> 10.0.2.4:8080/download_file --retry 0 --connect-timeout 1 --max-time 1
> --local-port 59018 2>curl.out'])
> +M_NS_EXEC([ovn-chassis-3], [sw1p1], [sh -c 'OVN_CURL(
> 10.0.2.4:8080/download_file --retry 0 --connect-timeout 1 --max-time 1
> --local-port 59018) > curl.out'])
>
>  gw1_ct=$(m_as ovn-gw-1 ovs-appctl dpctl/dump-conntrack | sed
> ':a;N;$!ba;s/\n/\\n/g')
>  gw2_ct=$(m_as ovn-gw-2 ovs-appctl dpctl/dump-conntrack | sed
> ':a;N;$!ba;s/\n/\\n/g')
> @@ -2419,7 +2419,7 @@ sed 's/\(.*\)timed out/timed out\n/' | sed
> 's/\(.*\)connect timeout/timed out\n/
>  timed out
>  ])
>  else
> -OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 cat -v curl.out |
> M_FORMAT_CURL([10.0.2.4], [8080])], [0], [dnl
> +OVS_WAIT_FOR_OUTPUT([m_as ovn-chassis-3 cat -v curl.out], [0], [dnl
>  Connected to 10.0.2.4 (10.0.2.4) port 8080
>  200 OK
>  ])
> @@ -4231,6 +4231,15 @@ check_fake_multinode_setup
>  # Delete the multinode NB and OVS resources before starting the test.
>  cleanup_multinode_resources
>
> +M_DAEMONIZE([ovn-gw-1],
> +      [sh -c 'ip -t monitor neigh | awk "/^Timestamp:/{ts=\$5;
> ms=int(\$7/1000); next} {printf \"%s.%03d %s\n\", ts, ms, \$0; fflush()}"'
> > neigh_gw1.log 2>&1],
> +      [neigh_mon_gw1.pid])
> +M_DAEMONIZE([ovn-gw-2],
> +      [sh -c 'ip -t monitor neigh | awk "/^Timestamp:/{ts=\$5;
> ms=int(\$7/1000); next} {printf \"%s.%03d %s\n\", ts, ms, \$0; fflush()}"'
> > neigh_gw2.log 2>&1],
> +      [neigh_mon_gw2.pid])
> +
> +M_NS_DAEMONIZE([ovn-gw-1], [frr-ns ip], [sh -c 'ip -t monitor neigh dev
> br-10 | awk "/^Timestamp:/{ts=\$5; ms=int(\$7/1000); next} {printf
> \"%s.%03d %s\n\", ts, ms, \$0; fflush()}"' > frr-gw1.log 2>&1],
> [frr-gw1.pid])
> +M_NS_DAEMONIZE([ovn-gw-2], [frr-ns ip], [sh -c 'ip -t monitor neigh dev
> br-10 | awk "/^Timestamp:/{ts=\$5; ms=int(\$7/1000); next} {printf
> \"%s.%03d %s\n\", ts, ms, \$0; fflush()}"' > frr-gw2.log 2>&1],
> [frr-gw2.pid])
>

Where these debugging aids that where left in when submitting?


>  CHECK_VRF()
>
>  vni0=10
> --
> 2.47.1
>
> _______________________________________________
> dev mailing list
> [email protected]
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
>
Thanks for the patch,

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

Reply via email to