1 #!/bin/sh 1 #!/bin/sh 2 # SPDX-License-Identifier: GPL-2.0+ 2 # SPDX-License-Identifier: GPL-2.0+ 3 3 4 # 4 # 5 # Runs an individual test module. 5 # Runs an individual test module. 6 # 6 # 7 # kselftest expects a separate executable for 7 # kselftest expects a separate executable for each test, this can be 8 # created by adding a script like this: 8 # created by adding a script like this: 9 # 9 # 10 # #!/bin/sh 10 # #!/bin/sh 11 # SPDX-License-Identifier: GPL-2.0+ 11 # SPDX-License-Identifier: GPL-2.0+ 12 # $(dirname $0)/../kselftest/module.sh "desc 12 # $(dirname $0)/../kselftest/module.sh "description" module_name 13 # 13 # 14 # Example: tools/testing/selftests/lib/printf. 14 # Example: tools/testing/selftests/lib/printf.sh 15 15 16 desc="" # Output prefi 16 desc="" # Output prefix. 17 module="" # Filename (wi 17 module="" # Filename (without the .ko). 18 args="" # modprobe arg 18 args="" # modprobe arguments. 19 19 20 modprobe="/sbin/modprobe" 20 modprobe="/sbin/modprobe" 21 21 22 main() { 22 main() { 23 parse_args "$@" 23 parse_args "$@" 24 assert_root 24 assert_root 25 assert_have_module 25 assert_have_module 26 run_module 26 run_module 27 } 27 } 28 28 29 parse_args() { 29 parse_args() { 30 script=${0##*/} 30 script=${0##*/} 31 31 32 if [ $# -lt 2 ]; then 32 if [ $# -lt 2 ]; then 33 echo "Usage: $script <description> <mo 33 echo "Usage: $script <description> <module_name> [FAIL]" 34 exit 1 34 exit 1 35 fi 35 fi 36 36 37 desc="$1" 37 desc="$1" 38 shift || true 38 shift || true 39 module="$1" 39 module="$1" 40 shift || true 40 shift || true 41 args="$@" 41 args="$@" 42 } 42 } 43 43 44 assert_root() { 44 assert_root() { 45 if [ ! -w /dev ]; then 45 if [ ! -w /dev ]; then 46 skip "please run as root" 46 skip "please run as root" 47 fi 47 fi 48 } 48 } 49 49 50 assert_have_module() { 50 assert_have_module() { 51 if ! $modprobe -q -n $module; then 51 if ! $modprobe -q -n $module; then 52 skip "module $module is not found" 52 skip "module $module is not found" 53 fi 53 fi 54 } 54 } 55 55 56 run_module() { 56 run_module() { 57 if $modprobe -q $module $args; then 57 if $modprobe -q $module $args; then 58 $modprobe -q -r $module 58 $modprobe -q -r $module 59 say "ok" 59 say "ok" 60 else 60 else 61 fail "" 61 fail "" 62 fi 62 fi 63 } 63 } 64 64 65 say() { 65 say() { 66 echo "$desc: $1" 66 echo "$desc: $1" 67 } 67 } 68 68 69 69 70 fail() { 70 fail() { 71 say "$1 [FAIL]" >&2 71 say "$1 [FAIL]" >&2 72 exit 1 72 exit 1 73 } 73 } 74 74 75 skip() { 75 skip() { 76 say "$1 [SKIP]" >&2 76 say "$1 [SKIP]" >&2 77 # Kselftest framework requirement - SKIP c 77 # Kselftest framework requirement - SKIP code is 4. 78 exit 4 78 exit 4 79 } 79 } 80 80 81 # 81 # 82 # Main script 82 # Main script 83 # 83 # 84 main "$@" 84 main "$@"
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.