#!/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