Hi Jacob

Thanks for the review

On Thu, Aug 27, 2026 at 10:37 PM Jacob Tanenbaum <[email protected]>
wrote:

>
>
> 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?
>
 I think you're right. I left it "just in case" but it is confusing. I'll
remove it in v2.

>
>
>> +# 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.
>
Again, you're right. I'll update the commit message in v2.

>
>
>>  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?
>
Yes :-(. I'll remove in v2.

>
>
>>  CHECK_VRF()
>>
>>  vni0=10
>> --
>> 2.47.1
>>
> Thanks
Xavier

>
>> _______________________________________________
>> 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