The test was using client and server to generate traffic that would be sampled. The sampling check relayed on the fact that the last echo from server would arrive when the client is already closed. That wasn't always the case which led to missing samples for ICMP error. Make sure the server waits a little before sending the last packet. Giving the client a chance to properly exit first. Also make the delay between the two packets sent by client smaller to slightly shorten the time required to execute the test.
Reported-at: https://issues.redhat.com/browse/FDP-1941 Signed-off-by: Ales Musil <[email protected]> --- tests/system-ovn.at | 51 ++++++++++++++++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 12 deletions(-) diff --git a/tests/system-ovn.at b/tests/system-ovn.at index 5b34e621f..9c86e1e38 100644 --- a/tests/system-ovn.at +++ b/tests/system-ovn.at @@ -13302,6 +13302,32 @@ check_uuid ovn-nbctl check_row_count nb:ACL 6 check_row_count nb:Sample 12 +AT_DATA([client.py], [dnl +import socket +import sys +import time + +port = int(sys.argv[[1]]) + +sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) +sock.sendto(b"hello\n", ("43.43.43.43", port)) +time.sleep(0.3) +sock.sendto(b"bye\n", ("43.43.43.43", port)) +sock.close() +]) + +AT_DATA([server.py], [dnl +import sys +import time + +line = sys.stdin.readline() +if "bye" in line: + time.sleep(1) + +sys.stdout.write(line) +sys.stdout.flush() +]) + dnl Wait for ovn-controller to catch up. wait_for_ports_up check ovn-nbctl --wait=hv sync @@ -13322,24 +13348,25 @@ dnl And wait for it to be up and running. OVS_WAIT_UNTIL([ovs-ofctl dump-ipfix-flow br-int | grep -q '1 ids']) dnl Start UDP echo server on vm2. -NETNS_DAEMONIZE([vm2], [nc -e /bin/cat -k -u -v -l -m 1 1000], [nc-vm2-1000.pid]) -NETNS_DAEMONIZE([vm2], [nc -e /bin/cat -k -u -v -l -m 1 1010], [nc-vm2-1010.pid]) -NETNS_DAEMONIZE([vm2], [nc -e /bin/cat -k -u -v -l -m 1 2000], [nc-vm2-2000.pid]) -NETNS_DAEMONIZE([vm2], [nc -e /bin/cat -k -u -v -l -m 1 2010], [nc-vm2-2010.pid]) -NETNS_DAEMONIZE([vm2], [nc -e /bin/cat -k -u -v -l -m 1 3000], [nc-vm2-3000.pid]) -NETNS_DAEMONIZE([vm2], [nc -e /bin/cat -k -u -v -l -m 1 3010], [nc-vm2-3010.pid]) +NETNS_DAEMONIZE([vm2], [nc -e "$PYTHON ./server.py" -k -u -v -l -m 1 1000], [nc-vm2-1000.pid]) +NETNS_DAEMONIZE([vm2], [nc -e "$PYTHON ./server.py" -k -u -v -l -m 1 1010], [nc-vm2-1010.pid]) +NETNS_DAEMONIZE([vm2], [nc -e "$PYTHON ./server.py" -k -u -v -l -m 1 2000], [nc-vm2-2000.pid]) +NETNS_DAEMONIZE([vm2], [nc -e "$PYTHON ./server.py" -k -u -v -l -m 1 2010], [nc-vm2-2010.pid]) +NETNS_DAEMONIZE([vm2], [nc -e "$PYTHON ./server.py" -k -u -v -l -m 1 3000], [nc-vm2-3000.pid]) +NETNS_DAEMONIZE([vm2], [nc -e "$PYTHON ./server.py" -k -u -v -l -m 1 3010], [nc-vm2-3010.pid]) +NETNS_START_TCPDUMP([vm2], [-i vm2 -vnne], [vm2]) dnl Send traffic (2 packets) to the UDP LB1 (hits the from-lport ACL). -NS_CHECK_EXEC([vm1], [(echo a; sleep 1; echo a) | nc --send-only -u 43.43.43.43 1000]) -NS_CHECK_EXEC([vm1], [(echo a; sleep 1; echo a) | nc --send-only -u 43.43.43.43 1010]) +NS_CHECK_EXEC([vm1], [$PYTHON3 ./client.py 1000]) +NS_CHECK_EXEC([vm1], [$PYTHON3 ./client.py 1010]) dnl Send traffic (2 packets) to the UDP LB1 (hits the from-lport after-lb ACL). -NS_CHECK_EXEC([vm1], [(echo a; sleep 1; echo a) | nc --send-only -u 43.43.43.43 2000]) -NS_CHECK_EXEC([vm1], [(echo a; sleep 1; echo a) | nc --send-only -u 43.43.43.43 2010]) +NS_CHECK_EXEC([vm1], [$PYTHON3 ./client.py 2000]) +NS_CHECK_EXEC([vm1], [$PYTHON3 ./client.py 2010]) dnl Send traffic (2 packets) to the UDP LB1 (hits the from-lport ACL). -NS_CHECK_EXEC([vm1], [(echo a; sleep 1; echo a) | nc --send-only -u 43.43.43.43 3000]) -NS_CHECK_EXEC([vm1], [(echo a; sleep 1; echo a) | nc --send-only -u 43.43.43.43 3010]) +NS_CHECK_EXEC([vm1], [$PYTHON3 ./client.py 3000]) +NS_CHECK_EXEC([vm1], [$PYTHON3 ./client.py 3010]) dnl Wait until OVS sampled all expected packets (4 data packets + 1 ICMP dnl port unreachable error on each session). -- 2.51.1 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
