Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1#!/bin/sh
2# SPDX-License-Identifier: GPL-2.0
3#
4# Run installed kselftest tests.
5#
6BASE_DIR=$(realpath $(dirname $0))
7cd $BASE_DIR
8TESTS="$BASE_DIR"/kselftest-list.txt
9if [ ! -r "$TESTS" ] ; then
10 echo "$0: Could not find list of tests to run ($TESTS)" >&2
11 available=""
12else
13 available="$(cat "$TESTS")"
14fi
15
16. ./kselftest/runner.sh
17ROOT=$PWD
18
19usage()
20{
21 cat <<EOF
22Usage: $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
32EOF
33 exit $1
34}
35
36COLLECTIONS=""
37TESTS=""
38dryrun=""
39kselftest_override_timeout=""
40while 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
74done
75
76# Add all selected collections to the explicit test list.
77if [ -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
86fi
87# Replace available test list with explicitly selected tests.
88if [ -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')"
99fi
100
101collections=$(echo "$available" | cut -d: -f1 | sort | uniq)
102for 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)
106done