Date: Thu, 23 Apr 2026 13:13:20 +0000 From: Siva Mahadevan <siva@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: 60000d94b4e8 - main - tests/pf/nat: endpoint_independent: wait for tcpdump to start Message-ID: <69ea1af0.1e037.100e6738@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch main has been updated by siva: URL: https://cgit.FreeBSD.org/src/commit/?id=60000d94b4e85caf931230a8a7ae86888db00d01 commit 60000d94b4e85caf931230a8a7ae86888db00d01 Author: Siva Mahadevan <siva@FreeBSD.org> AuthorDate: 2026-04-22 17:20:38 +0000 Commit: Siva Mahadevan <siva@FreeBSD.org> CommitDate: 2026-04-23 13:11:08 +0000 tests/pf/nat: endpoint_independent: wait for tcpdump to start This matches pflog.sh tests and fixes flaky tests found in CI[0]. [0] https://ci.freebsd.org/job/FreeBSD-main-amd64-test/28126/testReport/junit/sys.netpfil.pf/nat/endpoint_independent_exhaust/ PR: 289628 Reviewed by: glebius Approved by: lwhsu (mentor) Sponsored by: The FreeBSD Foundation MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D56145 --- tests/sys/netpfil/pf/nat.sh | 44 ++++++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/tests/sys/netpfil/pf/nat.sh b/tests/sys/netpfil/pf/nat.sh index 600688a8dbc9..6d68b62b07c1 100644 --- a/tests/sys/netpfil/pf/nat.sh +++ b/tests/sys/netpfil/pf/nat.sh @@ -162,20 +162,26 @@ endpoint_independent_common() pft_set_rules nat "${1}" jexec server1 tcpdump -i ${epair_server1}a -w ${PWD}/server1.pcap \ - --immediate-mode $filter & + --immediate-mode $filter -c 1 & server1tcppid="$!" jexec server2 tcpdump -i ${epair_server2}a -w ${PWD}/server2.pcap \ - --immediate-mode $filter & + --immediate-mode $filter -c 1 & server2tcppid="$!" - # send out multiple packets - for i in $(seq 1 10); do - echo "ping" | jexec client nc -u 198.51.100.32 1234 -p 4242 -w 0 - echo "ping" | jexec client nc -u 198.51.100.22 1234 -p 4242 -w 0 + # wait for tcpdumps to fully attach and block in bpfread() + for p in ${server1tcppid} ${server2tcppid}; do + while [ $(ps -o wchan ${p} | tr "\n" " " | cut -w -f 2) != "bpf" ]; do + sleep 0.01; + done done - kill $server1tcppid - kill $server2tcppid + echo "ping" | jexec client nc -u 198.51.100.32 1234 -p 4242 + echo "ping" | jexec client nc -u 198.51.100.22 1234 -p 4242 + + for p in ${server1tcppid} ${server2tcppid}; do + wait ${p} + atf_check_equal 0 $? + done tuple_server1=$(tcpdump -r ${PWD}/server1.pcap | awk '{addr=$3} END {print addr}') tuple_server2=$(tcpdump -r ${PWD}/server2.pcap | awk '{addr=$3} END {print addr}') @@ -201,20 +207,26 @@ endpoint_independent_common() pft_set_rules nat "${2}" jexec server1 tcpdump -i ${epair_server1}a -w ${PWD}/server1.pcap \ - --immediate-mode $filter & + --immediate-mode $filter -c 1 & server1tcppid="$!" jexec server2 tcpdump -i ${epair_server2}a -w ${PWD}/server2.pcap \ - --immediate-mode $filter & + --immediate-mode $filter -c 1 & server2tcppid="$!" - # send out multiple packets, sometimes one fails to go through - for i in $(seq 1 10); do - echo "ping" | jexec client nc -u 198.51.100.32 1234 -p 4242 -w 0 - echo "ping" | jexec client nc -u 198.51.100.22 1234 -p 4242 -w 0 + # wait for tcpdumps to fully attach and block in bpfread() + for p in ${server1tcppid} ${server2tcppid}; do + while [ $(ps -o wchan ${p} | tr "\n" " " | cut -w -f 2) != "bpf" ]; do + sleep 0.01; + done done - kill $server1tcppid - kill $server2tcppid + echo "ping" | jexec client nc -u 198.51.100.32 1234 -p 4242 + echo "ping" | jexec client nc -u 198.51.100.22 1234 -p 4242 + + for p in ${server1tcppid} ${server2tcppid}; do + wait ${p} + atf_check_equal 0 $? + done tuple_server1=$(tcpdump -r ${PWD}/server1.pcap | awk '{addr=$3} END {print addr}') tuple_server2=$(tcpdump -r ${PWD}/server2.pcap | awk '{addr=$3} END {print addr}')home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69ea1af0.1e037.100e6738>
