blob: 212ebc58ca2ad97f0a2cbf9e39e6511bf52aa0c7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
#!/bin/sh
# Linux kernel self test
# shellcheck disable=SC1091
. ../../lib/sh-test-lib
OUTPUT="$(pwd)/output"
RESULT_FILE="${OUTPUT}/result.txt"
LOGFILE="${OUTPUT}/kselftest.txt"
TESTPROG="kselftest_armhf.tar.gz"
KSELFTEST_PATH="/opt/kselftests/mainline/"
SCRIPT="$(readlink -f "${0}")"
SCRIPTPATH="$(dirname "${SCRIPT}")"
# List of known unsupported test cases to be skipped
SKIPFILE=""
SKIPLIST=""
TESTPROG_URL=""
if [ "$(uname -m)" = "aarch64" ]
then
TESTPROG="kselftest_aarch64.tar.gz"
fi
usage() {
echo "Usage: $0 [-t kselftest_aarch64.tar.gz | kselftest_armhf.tar.gz]
[-s True|False]
[-u url]
[-p path]
[-L List of skip test cases]
[-S kselftest-skipfile]" 1>&2
exit 1
}
while getopts "t:s:u:p:L:S:h" opt; do
case "${opt}" in
t) TESTPROG="${OPTARG}" ;;
s) SKIP_INSTALL="${OPTARG}" ;;
# Download kselftest tarball from given URL
u) TESTPROG_URL="${OPTARG}" ;;
# List of known unsupported test cases to be skipped
L) SKIPLIST="${OPTARG}" ;;
p) KSELFTEST_PATH="${OPTARG}" ;;
S)
OPT=$(echo "${OPTARG}" | grep "http")
if [ -z "${OPT}" ] ; then
# kselftest skipfile
SKIPFILE="${SCRIPTPATH}/${OPTARG}"
else
# Download kselftest skipfile from speficied URL
wget "${OPTARG}" -O "skipfile"
SKIPFILE="skipfile"
SKIPFILE="${SCRIPTPATH}/${SKIPFILE}"
fi
;;
h|*) usage ;;
esac
done
parse_output() {
grep "selftests:" "${LOGFILE}" > "${RESULT_FILE}"
sed -i -e 's/: /-/g' "${RESULT_FILE}"
sed -i -e 's/\[//g' "${RESULT_FILE}"
sed -i -e 's/]//g' "${RESULT_FILE}"
sed -i -e 's/selftests-//g' "${RESULT_FILE}"
}
install() {
dist_name
# shellcheck disable=SC2154
case "${dist}" in
debian|ubuntu) install_deps "sed wget xz-utils" "${SKIP_INSTALL}" ;;
centos|fedora) install_deps "sed wget xz" "${SKIP_INSTALL}" ;;
unknown) warn_msg "Unsupported distro: package install skipped" ;;
esac
}
! check_root && error_msg "You need to be root to run this script."
create_out_dir "${OUTPUT}"
# shellcheck disable=SC2164
cd "${OUTPUT}"
install
if [ -d "${KSELFTEST_PATH}" ]; then
echo "kselftests found on rootfs"
# shellcheck disable=SC2164
cd "${KSELFTEST_PATH}"
else
if [ -n "${TESTPROG_URL}" ]; then
# Download kselftest tarball from given URL
wget "${TESTPROG_URL}" -O kselftest.tar.gz
elif [ -n "${TESTPROG}" ]; then
# Download and extract kselftest tarball.
wget http://testdata.validation.linaro.org/tests/kselftest/"${TESTPROG}" -O kselftest.tar.gz
fi
tar xf "kselftest.tar.gz"
# shellcheck disable=SC2164
cd "kselftest"
fi
if [ -n "${SKIPLIST}" ]; then
# shellcheck disable=SC2086
for test_name in ${SKIPLIST}; do
# shellcheck disable=SC2086
sed -i "/.\/${test_name}/c\echo \"selftests: ${test_name} [SKIP]\"" run_kselftest.sh
done
fi
# Ignore SKIPFILE when SKIPLIST provided
if [ -f "${SKIPFILE}" ] && [ -z "${SKIPLIST}" ]; then
while read -r test_name; do
# shellcheck disable=SC2086
sed -i "/.\/${test_name}/c\echo \"selftests: ${test_name} [SKIP]\"" run_kselftest.sh
done < "${SKIPFILE}"
fi
# run_kselftest.sh file generated by kselftest Makefile and included in tarball
./run_kselftest.sh 2>&1 | tee "${LOGFILE}"
parse_output
|