blob: 90ae06ae8000349494ebcda8eaafe9c05e405203 [file] [log] [blame]
Naresh Kambojuad19d882016-09-20 19:31:00 +05301#!/bin/bash
2
3. ../../lib/sh-test-lib
4OUTPUT="$(pwd)/output"
5RESULT_FILE="${OUTPUT}/result.txt"
6# Absolute path to this script. /home/user/bin/foo.sh
7SCRIPT="$(readlink -f $0)"
8# Absolute path this script is in. /home/user/bin
9SCRIPTPATH="$(dirname $SCRIPT)"
10echo "Script path is: "${SCRIPTPATH}""
11# List of test cases
12TST_CMDFILES=""
13# List of test cases to be skipped
14SKIPFILE=""
15# LTP version
Naresh Kambojuaa7abe02016-10-10 15:44:03 +053016LTP_VERSION="20160920"
Naresh Kambojuad19d882016-09-20 19:31:00 +053017
18LTP_PATH=/opt/ltp
19
20usage() {
21 echo "Usage: $0 [-T mm,math,syscalls] [-S skipfile-lsk-juno] [-s <flase>] [-v LTP_VERSION]" 1>&2
22 exit 0
23}
24
25while getopts "T:S:s:v:" arg; do
26 case "$arg" in
27 T)
28 TST_CMDFILES="${OPTARG}"
29 LOG_FILE=$(echo "${OPTARG}"| sed 's,\/,_,')
30 ;;
31 S)
32 OPT=$(echo "${OPTARG}" | grep "http")
33 if [ -z "${OPT}" ] ; then
34 # LTP skipfile
35 SKIPFILE="-S "${SCRIPTPATH}"/"${OPTARG}""
36 else
37 # Download LTP skipfile from speficied URL
38 wget "${OPTARG}"
39 SKIPFILE=$(echo "${OPTARG##*/}")
40 SKIPFILE="-S $(pwd)/${SKIPFILE}"
41 fi
42 ;;
43 # SKIP_INSTALL is true in case of Open Embedded builds
44 # SKIP_INSTALL is flase in case of Debian builds
45 s) SKIP_INSTALL="${OPTARG}";;
46 v) LTP_VERSION="${OPTARG}";;
47 esac
48done
49
50# Install LTP test suite
51install_ltp() {
52 rm -rf /opt/ltp
53 mkdir -p /opt/ltp
54 cd /opt/ltp
55 wget https://github.com/linux-test-project/ltp/releases/download/"${LTP_VERSION}"/ltp-full-"${LTP_VERSION}".tar.xz
56 tar --strip-components=1 -Jxf ltp-full-"${LTP_VERSION}".tar.xz
57 ./configure
58 make -j8 all
59 make SKIP_IDCHECK=1 install
60}
61
62parse_ltp_summary() {
63 for TEST in "Total Tests" "Total Skipped Tests" "Total Failures"; do
64 NO_OF_TESTS="$(grep "$TEST" "$1" | awk '{print $NF}')"
65 TEST=$(echo "$TEST" | tr -s ' ' '-')
66 add_metric "$TEST" "pass" "${NO_OF_TESTS}" "testcases"
67 done
68}
69
70# Parse LTP output
71parse_ltp_output() {
72 egrep "PASS|FAIL|CONF" "$1" | awk '{print $1" "$2}' | sed s/CONF/SKIP/ >> "${RESULT_FILE}"
73}
74
75# Run LTP test suite
76run_ltp() {
77 cd "${LTP_PATH}"
78
79 exec 4>&1
80 error_statuses="$(((./runltp -p -q -f "${TST_CMDFILES}" \
81 -l "${OUTPUT}/LTP_${LOG_FILE}.log" \
82 -C "${OUTPUT}/LTP_${LOG_FILE}.failed" "${SKIPFILE}" \
83 || echo "0:$?" >&3) | (tee "${OUTPUT}/LTP_${LOG_FILE}.out" \
84 || echo "1:$?" >&3)) 3>&1 >&4)"
85 exec 4>&-
86
87 echo "${error_statuses}"
88 parse_ltp_summary "${OUTPUT}/LTP_${LOG_FILE}.log"
89 parse_ltp_output "${OUTPUT}/LTP_${LOG_FILE}.log"
90}
91
92# Test run.
93! check_root && error_msg "This script must be run as root"
94[ -d "${OUTPUT}" ] && mv "${OUTPUT}" "${OUTPUT}_$(date +%Y%m%d%H%M%S)"
95mkdir -p "${OUTPUT}"
96
97info_msg "About to run ltp test..."
98info_msg "Output directory: ${OUTPUT}"
99
100if [ "${SKIP_INSTALL}" = "True" ] || [ "${SKIP_INSTALL}" = "true" ]; then
101 info_msg "install_ltp skipped"
102else
103 dist_name
104 case "${dist}" in
105 Debian|Ubuntu)
Naresh Kambojue467b092016-12-07 00:16:01 +0530106 pkgs="xz-utils flex bison build-essential wget curl net-tools"
Naresh Kambojuad19d882016-09-20 19:31:00 +0530107 ;;
108 CentOS|Fedora)
Naresh Kambojue467b092016-12-07 00:16:01 +0530109 pkgs="xz flex bison make automake gcc gcc-c++ kernel-devel wget curl net-tools"
Naresh Kambojuad19d882016-09-20 19:31:00 +0530110 ;;
111 *)
112 error_msg "Unsupported distribution!"
113 esac
114 install_deps "${pkgs}" "${SKIP_INSTALL}"
115 info_msg "Run install_ltp"
116 install_ltp
117fi
118info_msg "Running run_ltp"
119run_ltp