All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Ahern <dsahern@gmail.com>
To: netdev@vger.kernel.org
Cc: idosch@mellanox.com, David Ahern <dsahern@gmail.com>
Subject: [PATCH net-next 2/4] selftests: fib_tests: Make test results more verbose
Date: Tue, 13 Feb 2018 08:37:34 -0800	[thread overview]
Message-ID: <20180213163736.1538-3-dsahern@gmail.com> (raw)
In-Reply-To: <20180213163736.1538-1-dsahern@gmail.com>

fib_tests.sh is failing in a VM:
    $ fib_tests.sh
    Running netdev unregister tests
    PASS: unicast route test
    PASS: multipath route test
    Running netdev down tests
    PASS: unicast route test
    PASS: multipath route test
    Running netdev carrier change tests
    PASS: local route carrier test
    FAIL: unicast route carrier test

The last test corresponds to fib_carrier_unicast_test which 12 places
that could be failing. Be more verbose in the output so a failure is
easier to track down and separate test setup failures with set -e and
set +e pairs.

With the verbose logging it is easier to see which checks are failing:
    $fib_tests.sh
    Single path route carrier test
        ....
        Carrier down
            IPv4 fibmatch                                         [ OK ]
            IPv6 fibmatch                                         [ OK ]
            IPv4 linkdown flag set                                [FAIL]
            IPv6 linkdown flag set                                [FAIL]
        Second address added with carrier down
            IPv4 fibmatch                                         [ OK ]
            IPv6 fibmatch                                         [ OK ]
            IPv4 linkdown flag set                                [FAIL]
            IPv6 linkdown flag set                                [ OK ]

Signed-off-by: David Ahern <dsahern@gmail.com>
---
 tools/testing/selftests/net/fib_tests.sh | 248 +++++++++++++++++--------------
 1 file changed, 135 insertions(+), 113 deletions(-)

diff --git a/tools/testing/selftests/net/fib_tests.sh b/tools/testing/selftests/net/fib_tests.sh
index 672f263f8f53..d4e0b5cb4355 100755
--- a/tools/testing/selftests/net/fib_tests.sh
+++ b/tools/testing/selftests/net/fib_tests.sh
@@ -6,17 +6,25 @@
 
 ret=0
 
-check_err()
-{
-	if [ $ret -eq 0 ]; then
-		ret=$1
-	fi
-}
+PAUSE_ON_FAIL=${PAUSE_ON_FAIL:=no}
 
-check_fail()
+log_test()
 {
-	if [ $1 -eq 0 ]; then
+	local rc=$1
+	local expected=$2
+	local msg="$3"
+
+	if [ ${rc} -eq ${expected} ]; then
+		printf "        %-60s  [ OK ]\n" "${msg}"
+	else
 		ret=1
+		printf "        %-60s  [FAIL]\n" "${msg}"
+		if [ "${PAUSE_ON_FAIL}" = "yes" ]; then
+		echo
+			echo "hit enter to continue, 'q' to quit"
+			read a
+			[ "$a" = "q" ] && exit 1
+		fi
 	fi
 }
 
@@ -30,42 +38,44 @@ netns_create()
 
 fib_unreg_unicast_test()
 {
-	ret=0
+	echo
+	echo "Single path route test"
 
+	set -e
 	netns_create "testns"
 
 	ip -netns testns link add dummy0 type dummy
 	ip -netns testns link set dev dummy0 up
-
 	ip -netns testns address add 198.51.100.1/24 dev dummy0
 	ip -netns testns -6 address add 2001:db8:1::1/64 dev dummy0
+	set +e
 
+	echo "    Start point"
 	ip -netns testns route get fibmatch 198.51.100.2 &> /dev/null
-	check_err $?
+	log_test $? 0 "IPv4 fibmatch"
 	ip -netns testns -6 route get fibmatch 2001:db8:1::2 &> /dev/null
-	check_err $?
+	log_test $? 0 "IPv6 fibmatch"
 
+	set -e
 	ip -netns testns link del dev dummy0
-	check_err $?
+	set +e
 
+	echo "    Nexthop device deleted"
 	ip -netns testns route get fibmatch 198.51.100.2 &> /dev/null
-	check_fail $?
+	log_test $? 2 "IPv4 fibmatch - no route"
 	ip -netns testns -6 route get fibmatch 2001:db8:1::2 &> /dev/null
-	check_fail $?
+	log_test $? 2 "IPv6 fibmatch - no route"
 
 	ip netns del testns
-
-	if [ $ret -ne 0 ]; then
-		echo "FAIL: unicast route test"
-		return 1
-	fi
-	echo "PASS: unicast route test"
 }
 
 fib_unreg_multipath_test()
 {
-	ret=0
 
+	echo
+	echo "Multipath route test"
+
+	set -e
 	netns_create "testns"
 
 	ip -netns testns link add dummy0 type dummy
@@ -86,44 +96,49 @@ fib_unreg_multipath_test()
 	ip -netns testns -6 route add 2001:db8:3::/64 \
 		nexthop via 2001:db8:1::2 dev dummy0 \
 		nexthop via 2001:db8:2::2 dev dummy1
+	set +e
 
+	echo "    Start point"
 	ip -netns testns route get fibmatch 203.0.113.1 &> /dev/null
-	check_err $?
+	log_test $? 0 "IPv4 fibmatch"
 	ip -netns testns -6 route get fibmatch 2001:db8:3::1 &> /dev/null
-	check_err $?
+	log_test $? 0 "IPv6 fibmatch"
 
+	set -e
 	ip -netns testns link del dev dummy0
-	check_err $?
+	set +e
 
+	echo "    One nexthop device deleted"
 	ip -netns testns route get fibmatch 203.0.113.1 &> /dev/null
-	check_fail $?
+	log_test $? 2 "IPv4 - multipath route removed on delete"
+
 	ip -netns testns -6 route get fibmatch 2001:db8:3::1 &> /dev/null
 	# In IPv6 we do not flush the entire multipath route.
-	check_err $?
+	log_test $? 0 "IPv6 - multipath down to single path"
 
+	set -e
 	ip -netns testns link del dev dummy1
+	set +e
 
-	ip netns del testns
+	echo "    Second nexthop device deleted"
+	ip -netns testns -6 route get fibmatch 2001:db8:3::1 &> /dev/null
+	log_test $? 2 "IPv6 - no route"
 
-	if [ $ret -ne 0 ]; then
-		echo "FAIL: multipath route test"
-		return 1
-	fi
-	echo "PASS: multipath route test"
+	ip netns del testns
 }
 
 fib_unreg_test()
 {
-	echo "Running netdev unregister tests"
-
 	fib_unreg_unicast_test
 	fib_unreg_multipath_test
 }
 
 fib_down_unicast_test()
 {
-	ret=0
+	echo
+	echo "Single path, admin down"
 
+	set -e
 	netns_create "testns"
 
 	ip -netns testns link add dummy0 type dummy
@@ -131,29 +146,27 @@ fib_down_unicast_test()
 
 	ip -netns testns address add 198.51.100.1/24 dev dummy0
 	ip -netns testns -6 address add 2001:db8:1::1/64 dev dummy0
+	set +e
 
+	echo "    Start point"
 	ip -netns testns route get fibmatch 198.51.100.2 &> /dev/null
-	check_err $?
+	log_test $? 0 "IPv4 fibmatch"
 	ip -netns testns -6 route get fibmatch 2001:db8:1::2 &> /dev/null
-	check_err $?
+	log_test $? 0 "IPv6 fibmatch"
 
+	set -e
 	ip -netns testns link set dev dummy0 down
-	check_err $?
+	set +e
 
+	echo "    Route deleted on down"
 	ip -netns testns route get fibmatch 198.51.100.2 &> /dev/null
-	check_fail $?
+	log_test $? 2 "IPv4 fibmatch"
 	ip -netns testns -6 route get fibmatch 2001:db8:1::2 &> /dev/null
-	check_fail $?
+	log_test $? 2 "IPv6 fibmatch"
 
 	ip -netns testns link del dev dummy0
 
 	ip netns del testns
-
-	if [ $ret -ne 0 ]; then
-		echo "FAIL: unicast route test"
-		return 1
-	fi
-	echo "PASS: unicast route test"
 }
 
 fib_down_multipath_test_do()
@@ -163,37 +176,39 @@ fib_down_multipath_test_do()
 
 	ip -netns testns route get fibmatch 203.0.113.1 \
 		oif $down_dev &> /dev/null
-	check_fail $?
+	log_test $? 2 "IPv4 fibmatch on down device"
 	ip -netns testns -6 route get fibmatch 2001:db8:3::1 \
 		oif $down_dev &> /dev/null
-	check_fail $?
+	log_test $? 2 "IPv6 fibmatch on down device"
 
 	ip -netns testns route get fibmatch 203.0.113.1 \
 		oif $up_dev &> /dev/null
-	check_err $?
+	log_test $? 0 "IPv4 fibmatch on up device"
 	ip -netns testns -6 route get fibmatch 2001:db8:3::1 \
 		oif $up_dev &> /dev/null
-	check_err $?
+	log_test $? 0 "IPv6 fibmatch on up device"
 
 	ip -netns testns route get fibmatch 203.0.113.1 | \
 		grep $down_dev | grep -q "dead linkdown"
-	check_err $?
+	log_test $? 0 "IPv4 flags on down device"
 	ip -netns testns -6 route get fibmatch 2001:db8:3::1 | \
 		grep $down_dev | grep -q "dead linkdown"
-	check_err $?
+	log_test $? 0 "IPv6 flags on down device"
 
 	ip -netns testns route get fibmatch 203.0.113.1 | \
 		grep $up_dev | grep -q "dead linkdown"
-	check_fail $?
+	log_test $? 1 "IPv4 flags on up device"
 	ip -netns testns -6 route get fibmatch 2001:db8:3::1 | \
 		grep $up_dev | grep -q "dead linkdown"
-	check_fail $?
+	log_test $? 1 "IPv6 flags on up device"
 }
 
 fib_down_multipath_test()
 {
-	ret=0
+	echo
+	echo "Admin down multipath"
 
+	set -e
 	netns_create "testns"
 
 	ip -netns testns link add dummy0 type dummy
@@ -214,57 +229,58 @@ fib_down_multipath_test()
 	ip -netns testns -6 route add 2001:db8:3::/64 \
 		nexthop via 2001:db8:1::2 dev dummy0 \
 		nexthop via 2001:db8:2::2 dev dummy1
+	set +e
 
+	echo "    Verify start point"
 	ip -netns testns route get fibmatch 203.0.113.1 &> /dev/null
-	check_err $?
+	log_test $? 0 "IPv4 fibmatch"
+
 	ip -netns testns -6 route get fibmatch 2001:db8:3::1 &> /dev/null
-	check_err $?
+	log_test $? 0 "IPv6 fibmatch"
 
+	set -e
 	ip -netns testns link set dev dummy0 down
-	check_err $?
+	set +e
 
+	echo "    One device down, one up"
 	fib_down_multipath_test_do "dummy0" "dummy1"
 
+	set -e
 	ip -netns testns link set dev dummy0 up
-	check_err $?
 	ip -netns testns link set dev dummy1 down
-	check_err $?
+	set +e
 
+	echo "    Other device down and up"
 	fib_down_multipath_test_do "dummy1" "dummy0"
 
+	set -e
 	ip -netns testns link set dev dummy0 down
-	check_err $?
+	set +e
 
+	echo "    Both devices down"
 	ip -netns testns route get fibmatch 203.0.113.1 &> /dev/null
-	check_fail $?
+	log_test $? 2 "IPv4 fibmatch"
 	ip -netns testns -6 route get fibmatch 2001:db8:3::1 &> /dev/null
-	check_fail $?
+	log_test $? 2 "IPv6 fibmatch"
 
 	ip -netns testns link del dev dummy1
 	ip -netns testns link del dev dummy0
-
 	ip netns del testns
-
-	if [ $ret -ne 0 ]; then
-		echo "FAIL: multipath route test"
-		return 1
-	fi
-	echo "PASS: multipath route test"
 }
 
 fib_down_test()
 {
-	echo "Running netdev down tests"
-
 	fib_down_unicast_test
 	fib_down_multipath_test
 }
 
+# Local routes should not be affected when carrier changes.
 fib_carrier_local_test()
 {
-	ret=0
+	echo
+	echo "Local carrier tests - single path"
 
-	# Local routes should not be affected when carrier changes.
+	set -e
 	netns_create "testns"
 
 	ip -netns testns link add dummy0 type dummy
@@ -274,65 +290,71 @@ fib_carrier_local_test()
 
 	ip -netns testns address add 198.51.100.1/24 dev dummy0
 	ip -netns testns -6 address add 2001:db8:1::1/64 dev dummy0
+	set +e
 
+	echo "    Start point"
 	ip -netns testns route get fibmatch 198.51.100.1 &> /dev/null
-	check_err $?
+	log_test $? 0 "IPv4 fibmatch"
 	ip -netns testns -6 route get fibmatch 2001:db8:1::1 &> /dev/null
-	check_err $?
+	log_test $? 0 "IPv6 fibmatch"
 
 	ip -netns testns route get fibmatch 198.51.100.1 | \
 		grep -q "linkdown"
-	check_fail $?
+	log_test $? 1 "IPv4 - no linkdown flag"
 	ip -netns testns -6 route get fibmatch 2001:db8:1::1 | \
 		grep -q "linkdown"
-	check_fail $?
+	log_test $? 1 "IPv6 - no linkdown flag"
 
+	set -e
 	ip -netns testns link set dev dummy0 carrier off
+	set +e
 
+	echo "    Carrier off on nexthop"
 	ip -netns testns route get fibmatch 198.51.100.1 &> /dev/null
-	check_err $?
+	log_test $? 0 "IPv4 fibmatch"
 	ip -netns testns -6 route get fibmatch 2001:db8:1::1 &> /dev/null
-	check_err $?
+	log_test $? 0 "IPv6 fibmatch"
 
 	ip -netns testns route get fibmatch 198.51.100.1 | \
 		grep -q "linkdown"
-	check_fail $?
+	log_test $? 1 "IPv4 - linkdown flag set"
 	ip -netns testns -6 route get fibmatch 2001:db8:1::1 | \
 		grep -q "linkdown"
-	check_fail $?
+	log_test $? 1 "IPv6 - linkdown flag set"
 
+	set -e
 	ip -netns testns address add 192.0.2.1/24 dev dummy0
 	ip -netns testns -6 address add 2001:db8:2::1/64 dev dummy0
+	set +e
 
+	echo "    Route to local address with carrier down"
 	ip -netns testns route get fibmatch 192.0.2.1 &> /dev/null
-	check_err $?
+	log_test $? 0 "IPv4 fibmatch"
 	ip -netns testns -6 route get fibmatch 2001:db8:2::1 &> /dev/null
-	check_err $?
+	log_test $? 0 "IPv6 fibmatch"
 
 	ip -netns testns route get fibmatch 192.0.2.1 | \
 		grep -q "linkdown"
-	check_fail $?
+	log_test $? 1 "IPv4 linkdown flag set"
 	ip -netns testns -6 route get fibmatch 2001:db8:2::1 | \
 		grep -q "linkdown"
-	check_fail $?
+	log_test $? 1 "IPv6 linkdown flag set"
 
 	ip -netns testns link del dev dummy0
 
 	ip netns del testns
-
-	if [ $ret -ne 0 ]; then
-		echo "FAIL: local route carrier test"
-		return 1
-	fi
-	echo "PASS: local route carrier test"
 }
 
 fib_carrier_unicast_test()
 {
 	ret=0
 
+	echo
+	echo "Single path route carrier test"
+
 	netns_create "testns"
 
+	set -e
 	ip -netns testns link add dummy0 type dummy
 	ip -netns testns link set dev dummy0 up
 
@@ -340,63 +362,63 @@ fib_carrier_unicast_test()
 
 	ip -netns testns address add 198.51.100.1/24 dev dummy0
 	ip -netns testns -6 address add 2001:db8:1::1/64 dev dummy0
+	set +e
 
+	echo "    Start point"
 	ip -netns testns route get fibmatch 198.51.100.2 &> /dev/null
-	check_err $?
+	log_test $? 0 "IPv4 fibmatch"
 	ip -netns testns -6 route get fibmatch 2001:db8:1::2 &> /dev/null
-	check_err $?
+	log_test $? 0 "IPv6 fibmatch"
 
 	ip -netns testns route get fibmatch 198.51.100.2 | \
 		grep -q "linkdown"
-	check_fail $?
+	log_test $? 1 "IPv4 no linkdown flag"
 	ip -netns testns -6 route get fibmatch 2001:db8:1::2 | \
 		grep -q "linkdown"
-	check_fail $?
+	log_test $? 1 "IPv6 no linkdown flag"
 
+	set -e
 	ip -netns testns link set dev dummy0 carrier off
+	set +e
 
+	echo "    Carrier down"
 	ip -netns testns route get fibmatch 198.51.100.2 &> /dev/null
-	check_err $?
+	log_test $? 0 "IPv4 fibmatch"
 	ip -netns testns -6 route get fibmatch 2001:db8:1::2 &> /dev/null
-	check_err $?
+	log_test $? 0 "IPv6 fibmatch"
 
 	ip -netns testns route get fibmatch 198.51.100.2 | \
 		grep -q "linkdown"
-	check_err $?
+	log_test $? 0 "IPv4 linkdown flag set"
 	ip -netns testns -6 route get fibmatch 2001:db8:1::2 | \
 		grep -q "linkdown"
-	check_err $?
+	log_test $? 0 "IPv6 linkdown flag set"
 
+	set -e
 	ip -netns testns address add 192.0.2.1/24 dev dummy0
 	ip -netns testns -6 address add 2001:db8:2::1/64 dev dummy0
+	set +e
 
+	echo "    Second address added with carrier down"
 	ip -netns testns route get fibmatch 192.0.2.2 &> /dev/null
-	check_err $?
+	log_test $? 0 "IPv4 fibmatch"
 	ip -netns testns -6 route get fibmatch 2001:db8:2::2 &> /dev/null
-	check_err $?
+	log_test $? 0 "IPv6 fibmatch"
 
 	ip -netns testns route get fibmatch 192.0.2.2 | \
 		grep -q "linkdown"
-	check_err $?
+	log_test $? 0 "IPv4 linkdown flag set"
 	ip -netns testns -6 route get fibmatch 2001:db8:2::2 | \
 		grep -q "linkdown"
-	check_err $?
+	log_test $? 0 "IPv6 linkdown flag set"
 
 	ip -netns testns link del dev dummy0
 
 	ip netns del testns
-
-	if [ $ret -ne 0 ]; then
-		echo "FAIL: unicast route carrier test"
-		return 1
-	fi
-	echo "PASS: unicast route carrier test"
 }
 
 fib_carrier_test()
 {
-	echo "Running netdev carrier change tests"
-
 	fib_carrier_local_test
 	fib_carrier_unicast_test
 }
-- 
2.11.0

  parent reply	other threads:[~2018-02-13 16:37 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-13 16:37 [PATCH net-next 0/4] selftests: fib_tests: simplifications, verbosity and a race David Ahern
2018-02-13 16:37 ` [PATCH net-next 1/4] selftests: fib_tests: simplify ip commands in a namespace David Ahern
2018-02-13 16:37 ` David Ahern [this message]
2018-02-13 16:37 ` [PATCH net-next 3/4] selftests: fib_tests: Move admin of dummy0 to helpers David Ahern
2018-02-13 16:37 ` [PATCH net-next 4/4] selftests: fib_tests: sleep after changing carrier David Ahern
2018-02-13 19:34 ` [PATCH net-next 0/4] selftests: fib_tests: simplifications, verbosity and a race David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180213163736.1538-3-dsahern@gmail.com \
    --to=dsahern@gmail.com \
    --cc=idosch@mellanox.com \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.