Replace hard AT_CHECK assertions on conntrack state after CT flush operations with OVS_WAIT_FOR_OUTPUT/OVS_WAIT_UNTIL.
The CT flush triggered by ECMP route deletion races with in-flight TCP packets from still-closing nc -z connections. When the flush deletes a conntrack entry in LAST_ACK state, a trailing ACK packet can re-create the entry as ESTABLISHED via nf_conntrack_tcp_loose, causing the immediate AT_CHECK to find unexpected entries. While at it fix ipv4 address used in ipv6 test. Signed-off-by: Xavier Simonart <[email protected]> --- tests/system-ovn.at | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/tests/system-ovn.at b/tests/system-ovn.at index 8387b4440..7d98661e8 100644 --- a/tests/system-ovn.at +++ b/tests/system-ovn.at @@ -15076,7 +15076,7 @@ check ovn-nbctl --wait=hv sync wait_row_count ECMP_Nexthop 1 check_column 'f0:00:00:01:02:05' ECMP_Nexthop mac nexthop='172.16.1.3' -AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(172.16.2.10) | \ +OVS_WAIT_FOR_OUTPUT([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(172.16.2.10) | \ sed -e 's/zone=[[0-9]]*/zone=<cleared>/' | sed -e 's/mark=[[0-9]]*/mark=<cleared>/' | sort], [0], [dnl icmp,orig=(src=172.16.2.10,dst=192.168.1.2,id=<cleared>,type=8,code=0),reply=(src=192.168.1.2,dst=172.16.2.10,id=<cleared>,type=0,code=0),zone=<cleared>,mark=<cleared>,labels=0xf0000001020500000000 @@ -15114,10 +15114,7 @@ check ovn-nbctl lr-route-del R1 172.16.2.0/24 172.16.1.2 check ovn-nbctl --wait=hv sync wait_row_count ECMP_Nexthop 1 -AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(172.16.2.10) | \ -sed -e 's/zone=[[0-9]]*/zone=<cleared>/' | -sed -e 's/mark=[[0-9]]*/mark=<cleared>/' | sort], [0], [dnl -]) +OVS_WAIT_UNTIL([test "$(ovs-appctl dpctl/dump-conntrack | FORMAT_CT(172.16.2.10) | wc -l)" = "0"]) # Remove second ECMP route check ovn-nbctl lr-route-del R1 @@ -15165,7 +15162,7 @@ wait_row_count ECMP_Nexthop 2 wait_column 'f0:00:00:01:02:06' ECMP_Nexthop mac nexthop='172.16.1.2' wait_column 'f0:00:00:01:02:05' ECMP_Nexthop mac nexthop='172.16.1.3' -AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(172.16.2.10) | \ +OVS_WAIT_FOR_OUTPUT([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(172.16.2.10) | \ sed -e 's/zone=[[0-9]]*/zone=<cleared>/' | sed -e 's/mark=[[0-9]]*/mark=<cleared>/' | sort], [0], [dnl icmp,orig=(src=172.16.2.10,dst=192.168.2.2,id=<cleared>,type=8,code=0),reply=(src=192.168.2.2,dst=172.16.2.10,id=<cleared>,type=0,code=0),zone=<cleared>,mark=<cleared>,labels=0xf0000001020600000000 @@ -15175,10 +15172,7 @@ tcp,orig=(src=172.16.2.10,dst=192.168.2.2,sport=<cleared>,dport=<cleared>),reply check ovn-nbctl lr-route-del R2 check ovn-nbctl --wait=hv sync wait_row_count ECMP_Nexthop 0 -AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(172.16.2.10) | \ -sed -e 's/zone=[[0-9]]*/zone=<cleared>/' | -sed -e 's/mark=[[0-9]]*/mark=<cleared>/' | sort], [0], [dnl -]) +OVS_WAIT_UNTIL([test "$(ovs-appctl dpctl/dump-conntrack | FORMAT_CT(172.16.2.10) | wc -l)" = "0"]) OVN_CLEANUP_CONTROLLER([hv1]) @@ -15332,7 +15326,7 @@ check ovn-nbctl --wait=hv sync wait_row_count ECMP_Nexthop 1 check_column 'f0:00:00:01:02:05' ECMP_Nexthop mac nexthop='"fd12::3"' -AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(fd13::a) | \ +OVS_WAIT_FOR_OUTPUT([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(fd13::a) | \ sed -e 's/zone=[[0-9]]*/zone=<cleared>/' | sed -e 's/mark=[[0-9]]*/mark=<cleared>/' | sort], [0], [dnl icmpv6,orig=(src=fd13::a,dst=fd11::2,id=<cleared>,type=128,code=0),reply=(src=fd11::2,dst=fd13::a,id=<cleared>,type=129,code=0),zone=<cleared>,mark=<cleared>,labels=0xf0000001020500000000 @@ -15370,10 +15364,7 @@ check ovn-nbctl lr-route-del R1 fd13::/64 fd12::2 check ovn-nbctl --wait=hv sync wait_row_count ECMP_Nexthop 1 -AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(fd13::a) | \ -sed -e 's/zone=[[0-9]]*/zone=<cleared>/' | -sed -e 's/mark=[[0-9]]*/mark=<cleared>/' | sort], [0], [dnl -]) +OVS_WAIT_UNTIL([test "$(ovs-appctl dpctl/dump-conntrack | FORMAT_CT(fd13::a) | wc -l)" = "0"]) # Remove second ECMP route check ovn-nbctl lr-route-del R1 @@ -15422,7 +15413,7 @@ wait_row_count ECMP_Nexthop 2 wait_column 'f0:00:00:01:02:06' ECMP_Nexthop mac nexthop='"fd12::2"' wait_column 'f0:00:00:01:02:05' ECMP_Nexthop mac nexthop='"fd12::3"' -AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(fd13::a) | \ +OVS_WAIT_FOR_OUTPUT([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(fd13::a) | \ sed -e 's/zone=[[0-9]]*/zone=<cleared>/' | sed -e 's/mark=[[0-9]]*/mark=<cleared>/' | sort], [0], [dnl icmpv6,orig=(src=fd13::a,dst=fd14::2,id=<cleared>,type=128,code=0),reply=(src=fd14::2,dst=fd13::a,id=<cleared>,type=129,code=0),zone=<cleared>,mark=<cleared>,labels=0xf0000001020600000000 @@ -15432,10 +15423,7 @@ tcp,orig=(src=fd13::a,dst=fd14::2,sport=<cleared>,dport=<cleared>),reply=(src=fd check ovn-nbctl lr-route-del R2 check ovn-nbctl --wait=hv sync wait_row_count ECMP_Nexthop 0 -AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(172.16.2.10) | \ -sed -e 's/zone=[[0-9]]*/zone=<cleared>/' | -sed -e 's/mark=[[0-9]]*/mark=<cleared>/' | sort], [0], [dnl -]) +OVS_WAIT_UNTIL([test "$(ovs-appctl dpctl/dump-conntrack | FORMAT_CT(fd13::a) | wc -l)" = "0"]) OVN_CLEANUP_CONTROLLER([hv1]) -- 2.47.1 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
