selftests: rtnetlink: Make the set of tests to run configurable
authorPetr Machata <petrm@nvidia.com>
Tue, 21 Mar 2023 11:52:00 +0000 (12:52 +0100)
committerDavid S. Miller <davem@davemloft.net>
Thu, 23 Mar 2023 08:32:52 +0000 (08:32 +0000)
Extract the list of all tests into a variable, ALL_TESTS. Then assume the
environment variable TESTS holds the list of tests to actually run, falling
back to ALL_TESTS if TESTS is empty. This is the same interface that
forwarding selftests use to make the set of tests to run configurable.
In addition to this, allow setting the value explicitly through a command
line option "-t" along the lines of what fib_nexthops.sh does.

Signed-off-by: Petr Machata <petrm@nvidia.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
tools/testing/selftests/net/rtnetlink.sh

index 275491b..12caf96 100755 (executable)
@@ -4,6 +4,30 @@
 #
 # set -e
 
+ALL_TESTS="
+       kci_test_polrouting
+       kci_test_route_get
+       kci_test_addrlft
+       kci_test_promote_secondaries
+       kci_test_tc
+       kci_test_gre
+       kci_test_gretap
+       kci_test_ip6gretap
+       kci_test_erspan
+       kci_test_ip6erspan
+       kci_test_bridge
+       kci_test_addrlabel
+       kci_test_ifalias
+       kci_test_vrf
+       kci_test_encap
+       kci_test_macsec
+       kci_test_ipsec
+       kci_test_ipsec_offload
+       kci_test_fdb_get
+       kci_test_neigh_get
+       kci_test_bridge_parent_id
+"
+
 devdummy="test-dummy0"
 
 # Kselftest framework requirement - SKIP code is 4.
@@ -1227,60 +1251,34 @@ kci_test_bridge_parent_id()
 
 kci_test_rtnl()
 {
+       local current_test
        local ret=0
+
        kci_add_dummy
        if [ $ret -ne 0 ];then
                echo "FAIL: cannot add dummy interface"
                return 1
        fi
 
-       kci_test_polrouting
-       check_err $?
-       kci_test_route_get
-       check_err $?
-       kci_test_addrlft
-       check_err $?
-       kci_test_promote_secondaries
-       check_err $?
-       kci_test_tc
-       check_err $?
-       kci_test_gre
-       check_err $?
-       kci_test_gretap
-       check_err $?
-       kci_test_ip6gretap
-       check_err $?
-       kci_test_erspan
-       check_err $?
-       kci_test_ip6erspan
-       check_err $?
-       kci_test_bridge
-       check_err $?
-       kci_test_addrlabel
-       check_err $?
-       kci_test_ifalias
-       check_err $?
-       kci_test_vrf
-       check_err $?
-       kci_test_encap
-       check_err $?
-       kci_test_macsec
-       check_err $?
-       kci_test_ipsec
-       check_err $?
-       kci_test_ipsec_offload
-       check_err $?
-       kci_test_fdb_get
-       check_err $?
-       kci_test_neigh_get
-       check_err $?
-       kci_test_bridge_parent_id
-       check_err $?
+       for current_test in ${TESTS:-$ALL_TESTS}; do
+               $current_test
+               check_err $?
+       done
 
        kci_del_dummy
        return $ret
 }
 
+usage()
+{
+       cat <<EOF
+usage: ${0##*/} OPTS
+
+        -t <test>   Test(s) to run (default: all)
+                    (options: $(echo $ALL_TESTS))
+EOF
+}
+
 #check for needed privileges
 if [ "$(id -u)" -ne 0 ];then
        echo "SKIP: Need root privileges"
@@ -1295,6 +1293,14 @@ for x in ip tc;do
        fi
 done
 
+while getopts t:h o; do
+       case $o in
+               t) TESTS=$OPTARG;;
+               h) usage; exit 0;;
+               *) usage; exit 1;;
+       esac
+done
+
 kci_test_rtnl
 
 exit $?