[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20190617225808.665-25-mathew.j.martineau@linux.intel.com>
Date: Mon, 17 Jun 2019 15:57:59 -0700
From: Mat Martineau <mathew.j.martineau@...ux.intel.com>
To: edumazet@...gle.com, netdev@...r.kernel.org
Cc: Mat Martineau <mathew.j.martineau@...ux.intel.com>,
cpaasch@...le.com, fw@...len.de, pabeni@...hat.com,
peter.krystad@...ux.intel.com, dcaratti@...hat.com,
matthieu.baerts@...sares.net
Subject: [RFC PATCH net-next 24/33] mptcp: selftests: Add capture option
Added a "-c" command line option for mptcp_connect.sh to make it easier
to capture packets from each test. The script will use tcpdump to create
one .pcap file per test case, named according to the namespaces,
protocols, and connect address in use. For example, the first test case
writes the capture to ns1-ns1-MPTCP-MPTCP-10.0.1.1.pcap
The stderr output from tcpdump is printed after the test completes to
show tcpdump's "packets dropped by kernel" information.
Signed-off-by: Mat Martineau <mathew.j.martineau@...ux.intel.com>
---
.../selftests/net/mptcp/mptcp_connect.sh | 33 +++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.sh b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
index e694dc9d312c..4418163af001 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
@@ -7,6 +7,7 @@ sout=""
cin=""
cout=""
ksft_skip=4
+capture=0
timeout=30
TEST_COUNT=0
@@ -15,12 +16,19 @@ cleanup()
{
rm -f "$cin" "$cout"
rm -f "$sin" "$sout"
+ rm -f "$capout"
for i in 1 2 3 4; do
ip netns del ns$i
done
}
+for arg in "$@"; do
+ if [ "$arg" = "-c" ]; then
+ capture=1
+ fi
+done
+
ip -Version > /dev/null 2>&1
if [ $? -ne 0 ];then
echo "SKIP: Could not run test without ip tool"
@@ -31,6 +39,7 @@ sin=$(mktemp)
sout=$(mktemp)
cin=$(mktemp)
cout=$(mktemp)
+capout=$(mktemp)
trap cleanup EXIT
for i in 1 2 3 4;do
@@ -123,9 +132,25 @@ do_transfer()
:> "$cout"
:> "$sout"
+ :> "$capout"
printf "%-4s %-5s -> %-4s (%s:%d) %-5s\t" ${connector_ns} ${cl_proto} ${listener_ns} ${connect_addr} ${port} ${srv_proto}
+ if [ $capture -eq 1 ]; then
+ if [ -z $SUDO_USER ] ; then
+ capuser=""
+ else
+ capuser="-Z $SUDO_USER"
+ fi
+
+ capfile="${listener_ns}-${connector_ns}-${cl_proto}-${srv_proto}-${connect_addr}.pcap"
+
+ ip netns exec ${listener_ns} tcpdump -i any -s 65535 -B 32768 $capuser -w $capfile > "$capout" 2>&1 &
+ cappid=$!
+
+ sleep 1
+ fi
+
ip netns exec ${listener_ns} ./mptcp_connect -t $timeout -l -p $port -s ${srv_proto} 0.0.0.0 < "$sin" > "$sout" &
spid=$!
@@ -139,6 +164,11 @@ do_transfer()
wait $spid
rets=$?
+ if [ $capture -eq 1 ]; then
+ sleep 1
+ kill $cappid
+ fi
+
if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ]; then
echo "[ FAIL ] client exit code $retc, server $rets" 1>&2
echo "\nnetns ${listener_ns} socket stat for $port:" 1>&2
@@ -146,6 +176,7 @@ do_transfer()
echo "\nnetns ${connector_ns} socket stat for $port:" 1>&2
ip netns exec ${connector_ns} ss -nita 1>&2 -o "dport = :$port"
+ cat "$capout"
return 1
fi
@@ -156,9 +187,11 @@ do_transfer()
if [ $retc -eq 0 ] && [ $rets -eq 0 ];then
echo "[ OK ]"
+ cat "$capout"
return 0
fi
+ cat "$capout"
return 1
}
--
2.22.0
Powered by blists - more mailing lists