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