1 #!/bin/sh 1 #!/bin/sh 2 # SPDX-License-Identifier: GPL-2.0 2 # SPDX-License-Identifier: GPL-2.0 3 # 3 # 4 # Run installed kselftest tests. 4 # Run installed kselftest tests. 5 # 5 # 6 BASE_DIR=$(realpath $(dirname $0)) 6 BASE_DIR=$(realpath $(dirname $0)) 7 cd $BASE_DIR 7 cd $BASE_DIR 8 TESTS="$BASE_DIR"/kselftest-list.txt 8 TESTS="$BASE_DIR"/kselftest-list.txt 9 if [ ! -r "$TESTS" ] ; then 9 if [ ! -r "$TESTS" ] ; then 10 echo "$0: Could not find list of tests 10 echo "$0: Could not find list of tests to run ($TESTS)" >&2 11 available="" 11 available="" 12 else 12 else 13 available="$(cat "$TESTS")" 13 available="$(cat "$TESTS")" 14 fi 14 fi 15 15 16 . ./kselftest/runner.sh 16 . ./kselftest/runner.sh 17 ROOT=$PWD 17 ROOT=$PWD 18 18 19 usage() 19 usage() 20 { 20 { 21 cat <<EOF 21 cat <<EOF 22 Usage: $0 [OPTIONS] 22 Usage: $0 [OPTIONS] 23 -s | --summary Print summary 23 -s | --summary Print summary with detailed log in output.log (conflict with -p) 24 -p | --per_test_log Print test log 24 -p | --per_test_log Print test log in /tmp with each test name (conflict with -s) 25 -t | --test COLLECTION:TEST Run TEST from 25 -t | --test COLLECTION:TEST Run TEST from COLLECTION 26 -c | --collection COLLECTION Run all tests 26 -c | --collection COLLECTION Run all tests from COLLECTION 27 -l | --list List the avail 27 -l | --list List the available collection:test entries 28 -d | --dry-run Don't actually 28 -d | --dry-run Don't actually run any tests 29 -n | --netns Run each test 29 -n | --netns Run each test in namespace 30 -h | --help Show this usag 30 -h | --help Show this usage info 31 -o | --override-timeout Number of seco 31 -o | --override-timeout Number of seconds after which we timeout 32 EOF 32 EOF 33 exit $1 33 exit $1 34 } 34 } 35 35 36 COLLECTIONS="" 36 COLLECTIONS="" 37 TESTS="" 37 TESTS="" 38 dryrun="" 38 dryrun="" 39 kselftest_override_timeout="" 39 kselftest_override_timeout="" 40 while true; do 40 while true; do 41 case "$1" in 41 case "$1" in 42 -s | --summary) 42 -s | --summary) 43 logfile="$BASE_DIR"/ou 43 logfile="$BASE_DIR"/output.log 44 cat /dev/null > $logfi 44 cat /dev/null > $logfile 45 shift ;; 45 shift ;; 46 -p | --per-test-log) 46 -p | --per-test-log) 47 per_test_logging=1 47 per_test_logging=1 48 shift ;; 48 shift ;; 49 -t | --test) 49 -t | --test) 50 TESTS="$TESTS $2" 50 TESTS="$TESTS $2" 51 shift 2 ;; 51 shift 2 ;; 52 -c | --collection) 52 -c | --collection) 53 COLLECTIONS="$COLLECTI 53 COLLECTIONS="$COLLECTIONS $2" 54 shift 2 ;; 54 shift 2 ;; 55 -l | --list) 55 -l | --list) 56 echo "$available" 56 echo "$available" 57 exit 0 ;; 57 exit 0 ;; 58 -d | --dry-run) 58 -d | --dry-run) 59 dryrun="echo" 59 dryrun="echo" 60 shift ;; 60 shift ;; 61 -n | --netns) 61 -n | --netns) 62 RUN_IN_NETNS=1 62 RUN_IN_NETNS=1 63 shift ;; 63 shift ;; 64 -o | --override-timeout) 64 -o | --override-timeout) 65 kselftest_override_tim 65 kselftest_override_timeout="$2" 66 shift 2 ;; 66 shift 2 ;; 67 -h | --help) 67 -h | --help) 68 usage 0 ;; 68 usage 0 ;; 69 "") 69 "") 70 break ;; 70 break ;; 71 *) 71 *) 72 usage 1 ;; 72 usage 1 ;; 73 esac 73 esac 74 done 74 done 75 75 76 # Add all selected collections to the explicit 76 # Add all selected collections to the explicit test list. 77 if [ -n "$COLLECTIONS" ]; then 77 if [ -n "$COLLECTIONS" ]; then 78 for collection in $COLLECTIONS ; do 78 for collection in $COLLECTIONS ; do 79 found="$(echo "$available" | g 79 found="$(echo "$available" | grep "^$collection:")" 80 if [ -z "$found" ] ; then 80 if [ -z "$found" ] ; then 81 echo "No such collecti 81 echo "No such collection '$collection'" >&2 82 exit 1 82 exit 1 83 fi 83 fi 84 TESTS="$TESTS $found" 84 TESTS="$TESTS $found" 85 done 85 done 86 fi 86 fi 87 # Replace available test list with explicitly 87 # Replace available test list with explicitly selected tests. 88 if [ -n "$TESTS" ]; then 88 if [ -n "$TESTS" ]; then 89 valid="" 89 valid="" 90 for test in $TESTS ; do 90 for test in $TESTS ; do 91 found="$(echo "$available" | g 91 found="$(echo "$available" | grep "^${test}$")" 92 if [ -z "$found" ] ; then 92 if [ -z "$found" ] ; then 93 echo "No such test '$t 93 echo "No such test '$test'" >&2 94 exit 1 94 exit 1 95 fi 95 fi 96 valid="$valid $found" 96 valid="$valid $found" 97 done 97 done 98 available="$(echo "$valid" | sed -e 's 98 available="$(echo "$valid" | sed -e 's/ /\n/g')" 99 fi 99 fi 100 100 101 collections=$(echo "$available" | cut -d: -f1 101 collections=$(echo "$available" | cut -d: -f1 | sort | uniq) 102 for collection in $collections ; do 102 for collection in $collections ; do 103 [ -w /dev/kmsg ] && echo "kselftest: R 103 [ -w /dev/kmsg ] && echo "kselftest: Running tests in $collection" >> /dev/kmsg 104 tests=$(echo "$available" | grep "^$co 104 tests=$(echo "$available" | grep "^$collection:" | cut -d: -f2) 105 ($dryrun cd "$collection" && $dryrun r 105 ($dryrun cd "$collection" && $dryrun run_many $tests) 106 done 106 done
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.