summaryrefslogtreecommitdiff
path: root/automated/linux/kselftest/kselftest.sh
diff options
context:
space:
mode:
Diffstat (limited to 'automated/linux/kselftest/kselftest.sh')
-rwxr-xr-xautomated/linux/kselftest/kselftest.sh64
1 files changed, 64 insertions, 0 deletions
diff --git a/automated/linux/kselftest/kselftest.sh b/automated/linux/kselftest/kselftest.sh
new file mode 100755
index 0000000..96f122e
--- /dev/null
+++ b/automated/linux/kselftest/kselftest.sh
@@ -0,0 +1,64 @@
+#!/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="/usr/bin/kselftests"
+
+usage() {
+ echo "Usage: $0 [-t kselftest_aarch64.tar.gz | kselftest_armhf.tar.gz] [-s true|false]" 1>&2
+ exit 1
+}
+
+while getopts "t:s:h" opt; do
+ case "${opt}" in
+ t) TESTPROG="${OPTARG}" ;;
+ s) SKIP_INSTALL="${OPTARG}" ;;
+ h|*) usage ;;
+ esac
+done
+
+parse_output() {
+ grep "selftests:" "${LOGFILE}" 2>&1 | tee -a "${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
+ # Download and extract kselftest tarball.
+ wget http://testdata.validation.linaro.org/tests/kselftest/"${TESTPROG}" -O kselftest.tar.gz
+ tar xf "kselftest.tar.gz"
+ # shellcheck disable=SC2164
+ cd "kselftest"
+fi
+
+# run_kselftest.sh file generated by kselftest Makefile and included in tarball
+./run_kselftest.sh 2>&1 | tee "${LOGFILE}"
+parse_output