selftests: mptcp: add invert check in check_transfer
authorGeliang Tang <geliang.tang@suse.com>
Fri, 4 Mar 2022 19:36:34 +0000 (11:36 -0800)
committerJakub Kicinski <kuba@kernel.org>
Sat, 5 Mar 2022 05:54:31 +0000 (21:54 -0800)
This patch added the invert bytes check for the output data in
check_transfer().

Instead of the file mismatch error:

  [ FAIL ] file received by server does not match (in, out):
  -rw------- 1 root root 45643832 Jan 16 15:04 /tmp/tmp.9xpM6Paivv
  Trailing bytes are:
  MPTCP_TEST_FILE_END_MARKER
  -rw------- 1 root root 45643832 Jan 16 15:04 /tmp/tmp.wnz1Yp4u7Z
  Trailing bytes are:
  MPTCP_TEST_FILE_END_MARKER

Print out the inverted bytes like this:

  file received by server has inverted byte at 7454789
  file received by server has inverted byte at 7454790
  file received by server has inverted byte at 7454791
  file received by server has inverted byte at 7454792

Signed-off-by: Geliang Tang <geliang.tang@suse.com>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/net/mptcp/mptcp_join.sh

index 4604dd1..f4812e8 100755 (executable)
@@ -15,6 +15,7 @@ timeout_test=$((timeout_poll * 2 + 1))
 capture=0
 checksum=0
 ip_mptcp=0
+check_invert=0
 do_all_tests=1
 init=0
 
@@ -59,6 +60,8 @@ init_partial()
                fi
        done
 
+       check_invert=0
+
        #  ns1              ns2
        # ns1eth1    ns2eth1
        # ns1eth2    ns2eth2
@@ -216,15 +219,21 @@ check_transfer()
        out=$2
        what=$3
 
-       cmp "$in" "$out" > /dev/null 2>&1
-       if [ $? -ne 0 ] ;then
-               echo "[ FAIL ] $what does not match (in, out):"
-               print_file_err "$in"
-               print_file_err "$out"
-               ret=1
+       cmp -l "$in" "$out" | while read line; do
+               local arr=($line)
 
-               return 1
-       fi
+               let sum=0${arr[1]}+0${arr[2]}
+               if [ $check_invert -eq 0 ] || [ $sum -ne $((0xff)) ]; then
+                       echo "[ FAIL ] $what does not match (in, out):"
+                       print_file_err "$in"
+                       print_file_err "$out"
+                       ret=1
+
+                       return 1
+               else
+                       echo "$what has inverted byte at ${arr[0]}"
+               fi
+       done
 
        return 0
 }