blob: 309e171775017bfdfe97c6298a1116149e936009 [file] [log] [blame]
Naresh Kambojuad19d882016-09-20 19:31:00 +05301#!/bin/bash
2
Chase Qi890c1202017-06-19 16:09:27 +08003# shellcheck disable=SC1091
Naresh Kambojuad19d882016-09-20 19:31:00 +05304. ../../lib/sh-test-lib
5OUTPUT="$(pwd)/output"
6RESULT_FILE="${OUTPUT}/result.txt"
7# Absolute path to this script. /home/user/bin/foo.sh
Naresh Kamboju43e80742017-01-18 15:51:02 +05308SCRIPT="$(readlink -f "${0}")"
Naresh Kambojuad19d882016-09-20 19:31:00 +05309# Absolute path this script is in. /home/user/bin
Naresh Kamboju43e80742017-01-18 15:51:02 +053010SCRIPTPATH="$(dirname "${SCRIPT}")"
11echo "Script path is: ${SCRIPTPATH}"
Naresh Kambojuad19d882016-09-20 19:31:00 +053012# List of test cases
13TST_CMDFILES=""
14# List of test cases to be skipped
15SKIPFILE=""
16# LTP version
Naresh Kamboju336e3212017-05-17 18:15:02 +053017LTP_VERSION="20170516"
Naresh Kamboju9bce9162017-07-13 12:56:27 +053018LTP_TMPDIR=/ltp-tmp
Naresh Kambojuad19d882016-09-20 19:31:00 +053019
20LTP_PATH=/opt/ltp
21
22usage() {
Naresh Kamboju3a427952017-07-06 16:56:59 +053023 echo "Usage: ${0} [-T mm,math,syscalls]
24 [-S skipfile-lsk-juno]
25 [-s True|False]
26 [-v LTP_VERSION]
Dan Rue58d3a882017-07-11 16:30:30 -050027 [-M Timeout_Multiplier]
28 [-R root_password]" 1>&2
Naresh Kambojuad19d882016-09-20 19:31:00 +053029 exit 0
30}
31
Dan Rue58d3a882017-07-11 16:30:30 -050032while getopts "M:T:S:s:v:R:" arg; do
Naresh Kambojuad19d882016-09-20 19:31:00 +053033 case "$arg" in
34 T)
35 TST_CMDFILES="${OPTARG}"
Naresh Kamboju43e80742017-01-18 15:51:02 +053036 # shellcheck disable=SC2001
Naresh Kambojuad19d882016-09-20 19:31:00 +053037 LOG_FILE=$(echo "${OPTARG}"| sed 's,\/,_,')
38 ;;
39 S)
40 OPT=$(echo "${OPTARG}" | grep "http")
41 if [ -z "${OPT}" ] ; then
42 # LTP skipfile
Naresh Kamboju43e80742017-01-18 15:51:02 +053043 SKIPFILE="-S ${SCRIPTPATH}/${OPTARG}"
Naresh Kambojuad19d882016-09-20 19:31:00 +053044 else
45 # Download LTP skipfile from speficied URL
Naresh Kamboju43e80742017-01-18 15:51:02 +053046 wget "${OPTARG}" -O "skipfile"
47 SKIPFILE="skipfile"
48 SKIPFILE="-S ${SCRIPTPATH}/${SKIPFILE}"
Naresh Kambojuad19d882016-09-20 19:31:00 +053049 fi
50 ;;
51 # SKIP_INSTALL is true in case of Open Embedded builds
52 # SKIP_INSTALL is flase in case of Debian builds
53 s) SKIP_INSTALL="${OPTARG}";;
54 v) LTP_VERSION="${OPTARG}";;
Naresh Kamboju3bff06b2017-05-24 14:46:37 +053055 # Slow machines need more timeout Default is 5min and multiply * MINUTES
56 M) export LTP_TIMEOUT_MUL="${OPTARG}";;
Dan Rue58d3a882017-07-11 16:30:30 -050057 R) export PASSWD="${OPTARG}";;
Naresh Kambojuad19d882016-09-20 19:31:00 +053058 esac
59done
60
61# Install LTP test suite
62install_ltp() {
63 rm -rf /opt/ltp
64 mkdir -p /opt/ltp
Naresh Kamboju43e80742017-01-18 15:51:02 +053065 # shellcheck disable=SC2164
Naresh Kambojuad19d882016-09-20 19:31:00 +053066 cd /opt/ltp
Naresh Kamboju43e80742017-01-18 15:51:02 +053067 # shellcheck disable=SC2140
Naresh Kambojuad19d882016-09-20 19:31:00 +053068 wget https://github.com/linux-test-project/ltp/releases/download/"${LTP_VERSION}"/ltp-full-"${LTP_VERSION}".tar.xz
69 tar --strip-components=1 -Jxf ltp-full-"${LTP_VERSION}".tar.xz
70 ./configure
71 make -j8 all
72 make SKIP_IDCHECK=1 install
73}
74
Naresh Kambojuad19d882016-09-20 19:31:00 +053075# Parse LTP output
76parse_ltp_output() {
Chase Qi3308d6b2017-08-07 15:19:35 +080077 grep -E "PASS|FAIL|CONF" "$1" \
78 | awk '{print $1" "$2}' \
79 | sed 's/PASS/pass/; s/FAIL/fail/; s/CONF/skip/' >> "${RESULT_FILE}"
Naresh Kambojuad19d882016-09-20 19:31:00 +053080}
81
82# Run LTP test suite
83run_ltp() {
Naresh Kamboju43e80742017-01-18 15:51:02 +053084 # shellcheck disable=SC2164
Naresh Kambojuad19d882016-09-20 19:31:00 +053085 cd "${LTP_PATH}"
Naresh Kambojuff5f6c32017-07-11 14:50:32 +053086 # shellcheck disable=SC2174
87 mkdir -m 777 -p "${LTP_TMPDIR}"
Naresh Kambojuad19d882016-09-20 19:31:00 +053088
Naresh Kamboju3a427952017-07-06 16:56:59 +053089 pipe0_status "./runltp -p -q -f ${TST_CMDFILES} \
90 -l ${OUTPUT}/LTP_${LOG_FILE}.log \
91 -C ${OUTPUT}/LTP_${LOG_FILE}.failed \
92 -d ${LTP_TMPDIR} \
93 ${SKIPFILE}" "tee ${OUTPUT}/LTP_${LOG_FILE}.out"
Naresh Kamboju43e80742017-01-18 15:51:02 +053094 check_return "runltp_${LOG_FILE}"
Naresh Kambojuad19d882016-09-20 19:31:00 +053095
Naresh Kambojuad19d882016-09-20 19:31:00 +053096 parse_ltp_output "${OUTPUT}/LTP_${LOG_FILE}.log"
Naresh Kamboju3a427952017-07-06 16:56:59 +053097 # Cleanup
Naresh Kambojuff5f6c32017-07-11 14:50:32 +053098 rm -rf "${LTP_TMPDIR}"
Naresh Kambojuad19d882016-09-20 19:31:00 +053099}
100
101# Test run.
102! check_root && error_msg "This script must be run as root"
Daniel Díaz6f49a1b2017-02-15 18:56:15 -0600103create_out_dir "${OUTPUT}"
Naresh Kambojuad19d882016-09-20 19:31:00 +0530104
105info_msg "About to run ltp test..."
106info_msg "Output directory: ${OUTPUT}"
107
108if [ "${SKIP_INSTALL}" = "True" ] || [ "${SKIP_INSTALL}" = "true" ]; then
109 info_msg "install_ltp skipped"
110else
111 dist_name
Naresh Kamboju43e80742017-01-18 15:51:02 +0530112 # shellcheck disable=SC2154
Naresh Kambojuad19d882016-09-20 19:31:00 +0530113 case "${dist}" in
Nicolas Dechesneb7e38762017-01-25 12:07:08 +0100114 debian|ubuntu)
Dan Rue58d3a882017-07-11 16:30:30 -0500115 pkgs="xz-utils flex bison build-essential wget curl net-tools quota genisoimage sudo libaio-dev expect"
Naresh Kamboju43e80742017-01-18 15:51:02 +0530116 install_deps "${pkgs}" "${SKIP_INSTALL}"
Naresh Kambojuad19d882016-09-20 19:31:00 +0530117 ;;
Nicolas Dechesneb7e38762017-01-25 12:07:08 +0100118 centos|fedora)
Dan Rue58d3a882017-07-11 16:30:30 -0500119 pkgs="xz flex bison make automake gcc gcc-c++ kernel-devel wget curl net-tools quota genisoimage sudo libaio expect"
Naresh Kamboju43e80742017-01-18 15:51:02 +0530120 install_deps "${pkgs}" "${SKIP_INSTALL}"
Naresh Kambojuad19d882016-09-20 19:31:00 +0530121 ;;
122 *)
Naresh Kamboju43e80742017-01-18 15:51:02 +0530123 warn_msg "Unsupported distribution: package install skipped"
Naresh Kambojuad19d882016-09-20 19:31:00 +0530124 esac
Chase Qifee992c2017-06-19 17:02:50 +0800125
126 # Check if mkisofs or genisoimage installed for isofs test.
127 if echo "${TST_CMDFILES}" | grep 'fs'; then
128 # link mkisofs to genisoimage on distributions that have replaced mkisofs with genisoimage.
129 if ! which mkisofs; then
130 if which genisoimage; then
131 ln -s "$(which genisoimage)" /usr/bin/mkisofs
132 else
133 warn_msg "Neither mkisofs nor genisoimage found! Either of them is required by isofs test."
134 fi
135 fi
136 fi
137
Naresh Kambojuad19d882016-09-20 19:31:00 +0530138 info_msg "Run install_ltp"
139 install_ltp
140fi
141info_msg "Running run_ltp"
142run_ltp