occlum/demos/linux-ltp/run-ltp.sh
Zheng, Qi 4991aaa516 Update ltp demo with verified syscalls test cases
Signed-off-by: Zheng, Qi <huaiqing.zq@antgroup.com>
2021-11-03 14:54:27 +08:00

111 lines
2.4 KiB
Bash
Executable File

#!/bin/sh
setup()
{
export LTPROOT=${LTPROOT:-/opt/ltp}
export TMP="/tmp"
export PATH="${PATH}:${LTPROOT}/testcases/bin:${LTPROOT}/bin"
[ -d "$LTPROOT/testcases/bin" ] ||
{
echo "FATAL: LTP not installed correctly"
echo "INFO: Follow directions in INSTALL!"
exit 1
}
rm -rf ${TMP}/alltests*
}
usage()
{
cat <<-EOF >&2
usage: ${0##*/} [options]
options:
-f CMDFILES Execute user defined list of testcases
-h Help. Prints all available options.
-s PATTERN Only run test cases which match PATTERN.
example: ${0##*/} -f syscalls -s timerfd
EOF
exit 0
}
main()
{
local CMDFILES='syscalls'
local TAG_RESTRICT_STRING=
version_date=$(cat "$LTPROOT/Version")
echo "$version_date"
while getopts f:hs: arg
do case $arg in
f) # Execute user defined set of testcases.
CMDFILES=$OPTARG;;
h) usage;;
s) TAG_RESTRICT_STRING=$OPTARG;;
\?) usage;;
esac
done
echo "INFO: Test on files $CMDFILES"
[ -n "$CMDFILES" ] && \
{
#for scenfile in `echo "$CMDFILES" | tr ',' ' '`
for scenfile in `echo "$CMDFILES"`
do
[ -f "$scenfile" ] || scenfile="$LTPROOT/runtest/$scenfile"
cat "$scenfile" >> ${TMP}/alltests.tmp || \
{
echo "FATAL: unable to create command file"
rm -Rf "$TMP"
exit 1
}
done
}
# Skip the lines start with #
grep -v "^#" ${TMP}/alltests.tmp > ${TMP}/alltests
# If enabled, execute only test cases that match the PATTERN
if [ -n "$TAG_RESTRICT_STRING" ]
then
mv -f ${TMP}/alltests ${TMP}/alltests.orig
grep $TAG_RESTRICT_STRING ${TMP}/alltests.orig > ${TMP}/alltests
echo "INFO: Restricted to $TAG_RESTRICT_STRING"
fi
#grep -v "^#" "${TMP}/alltests" | while read -r line
while read -r line
do
# ignore empty lines
[ "x$line" = x ] && continue
line_array=($line)
name=${line_array[0]}
bin=${line_array[1]}
len=${#line_array[@]}
idx=2
args=()
echo "INFO: Test case: $name"
if [ $len -gt 2 ]
then
args=${line_array[@]:$idx:$((len - idx))}
fi
echo "INFO: ... Commands: $bin $args"
$LTPROOT/testcases/bin/$bin
done < "${TMP}/alltests"
}
setup
main "$@"
exit 0