libisoburn/releng/run_all_releng

163 lines
4.9 KiB
Plaintext
Raw Normal View History

2011-06-26 14:06:38 +00:00
#!/bin/bash
set -e
# It is not a good idea to include inc/releng_getopts.inc with the
# master script as it calls the subordinate scripts and they include
# this file too, and we want to avoid sharing variable with subshells
SELF=$(basename "$0")
2011-06-28 15:17:28 +00:00
GEN_DATA_DIR=releng_generated_data
CLOG=${GEN_DATA_DIR}/log.${SELF}
PASSED_OPTIONS="$@"
RELENG_XORRISO=
CLEANUP_LOG=0
#############################################
while getopts “x:k:c:f:h” OPT
do
case $OPT in
x)
RELENG_XORRISO=$OPTARG
;;
c)
CLEANUP_LOG=1
;;
*)
;;
esac
done
if [ ! "${1}" ]; then
cat << HLP
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
${SELF} runs executables from CWD starting
with releng_*, passing them its own options.
stdout/stderr output stored in:
${CLOG}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
self generated data are stored in ${GEN_DATA_DIR}.
required space for these data is about 300 megabytes.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
examples:
# run xorriso and keep the self generated data
$ ./${SELF} -x path/to/xorriso [-k1]
2011-06-28 15:17:28 +00:00
# clean up self generated data from previous run
$ ./${SELF} -c1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
HLP
exit 31
fi
########################################################
2011-07-04 14:58:53 +00:00
if [ -f "${CLOG}" ]; then
mv "${CLOG}" "${CLOG}".prev
fi
> ${CLOG}
if [ -x "${RELENG_XORRISO}" ]; then
echo -e "_OVERVIEW_______________________________________________________________" >> ${CLOG}
${RELENG_XORRISO} --version >> ${CLOG}
echo -e "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" >> ${CLOG}
fi
DSTART=`date --utc`
printf "\n${SELF}: Started at ${DSTART}"
E1=`date '+%s'`
2011-07-06 07:02:55 +00:00
# require ^releng_, avoid running (your)self explicitly
for s in `ls | grep ^releng_ | grep -v ${SELF} | sort -n`; do
if [ -x ${s} -a ! -d ${s} ]; then
# tee(1) does trailing \n, which is unwanted in that case
2011-07-06 07:02:55 +00:00
printf "\n${SELF}: Running ./${s} ${PASSED_OPTIONS}..."
2011-07-09 09:13:06 +00:00
echo -e "\n" >> ${CLOG}
2011-07-09 09:18:01 +00:00
echo -e "_NEW_TEST_______________________________________________________________" >> ${CLOG}
2011-07-09 09:13:06 +00:00
echo -e "${SELF}: Running ./${s} ${PASSED_OPTIONS}..." >> ${CLOG}
2011-07-09 09:18:01 +00:00
echo -e "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" >> ${CLOG}
T1=`date '+%s'`
set +e
./${s} ${PASSED_OPTIONS} &>> ${CLOG}
RET=$?
T2=`date '+%s'`
let TS="${T2} - ${T1}"
case ${RET} in
0)
printf "done in ${TS} sec. ok."
;;
*)
2011-07-09 18:00:05 +00:00
printf "done in ${TS} sec. "
which tput >/dev/null 2>&1 && tput smso
printf "FAIL -> EXIT CODE $RET"
which tput >/dev/null 2>&1 && tput rmso
;;
esac
set -e
fi
done
2011-06-26 15:16:10 +00:00
DEND=`date --utc`
2011-07-05 05:45:48 +00:00
printf "\n${SELF}: Stopped at ${DEND}."
if [ "${CLEANUP_LOG}" -eq 1 ]; then
if [ -f "${CLOG}" ]; then
printf "\n${SELF}: Removed my own log ${CLOG}."
rm -f "${CLOG}"
fi
if [ -f "${CLOG}".prev ]; then
printf "\n${SELF}: Removed my own log ${CLOG}.prev."
rm -f "${CLOG}".prev
fi
else
2011-07-04 16:05:24 +00:00
E2=`date '+%s'`
if [ ${E2} -eq ${E1} ]; then
printf " Total elapsed 0 sec."
else
let ES="${E2} - ${E1}"
printf " Total elapsed ${ES} sec."
fi
2011-07-04 16:05:24 +00:00
#####
2011-07-09 18:00:05 +00:00
printf "\n${SELF}: Trivial log examination: ${CLOG}"
2011-07-04 16:33:10 +00:00
printf "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
2011-07-04 16:05:24 +00:00
# severity classes of libdax_msgs.h in libburn and libisofs
# List of boring keywords:
# 'UPDATE' A pacifier message during long running operations.
# List of interesting keywords:
# thrown by xorriso and underlying libraries
LIST_KWD="(NEVER|ABORT|FATAL|FAILURE|MISHAP|SORRY|WARNING|HINT|NOTE|DEBUG|ALL"
# thrown by others
LIST_KWD+="|FAIL|ERROR|WRONG)"
2011-07-04 16:05:24 +00:00
if [ -f "${CLOG}" ]; then
set +e
# lines, perl regex, leading tabs
2011-07-04 16:05:24 +00:00
grep -n -PT "${LIST_KWD}" "${CLOG}"
RET_GREP="$?"
case ${RET_GREP} in
0) # found
;;
1) # not found
printf "\n${SELF}: Log file looks clear.\n"
;;
*) #
printf "\n${SELF}: grep returned EXIT CODE: ${RET_GREP}.\n"
;;
esac
set -e
2011-07-04 16:05:24 +00:00
fi
2011-07-05 05:45:48 +00:00
printf "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
##### TODO: work out a less noisy diff'ing technique!
if [ -f "${CLOG}".prev -a -f "${CLOG}" ]; then
printf "${SELF}: See diff against previous log file (might be long):\n"
printf "diff -Naur ${CLOG}.prev ${CLOG} | less"
fi
fi
#
2011-07-09 18:00:05 +00:00
which tput >/dev/null 2>&1 && tput smso
printf "\n${SELF}: Leaving the following cruft in ${GEN_DATA_DIR}:\n"
which tput >/dev/null 2>&1 && tput rmso
ls -lth "${GEN_DATA_DIR}"
2011-06-26 15:16:10 +00:00
# Fin
exit 0