105 lines
2.4 KiB
Bash
105 lines
2.4 KiB
Bash
|
|
#!/bin/sh
|
||
|
|
|
||
|
|
SAVE_DIR=`pwd`
|
||
|
|
MY_DIR=$(cd "$(dirname "$(which "$0")")" && pwd)
|
||
|
|
|
||
|
|
if [ "$1" = "--continue" ]; then
|
||
|
|
CONTINUE_FLAG=1
|
||
|
|
shift
|
||
|
|
else
|
||
|
|
CONTINUE_FLAG=0
|
||
|
|
fi
|
||
|
|
ORIG_DIR="$1"
|
||
|
|
REV_NUMBER=$2
|
||
|
|
|
||
|
|
if [ -f "$SAVE_DIR/dvm-tester.config" ]; then
|
||
|
|
. "$SAVE_DIR/dvm-tester.config"
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [ -z "$PLATFORMS" ]; then
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [ -z "$TEST_SUITE" ]; then
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
FULL_REP_URL="$PUBL_BASE_URL/r${REV_NUMBER}${PUBL_SUFFIX}/"
|
||
|
|
|
||
|
|
TEST_SUITE=$(cd "$TEST_SUITE" && pwd)
|
||
|
|
|
||
|
|
# Actually, can be taken any temporary name
|
||
|
|
RESULTS_DIR="$ORIG_DIR.results"
|
||
|
|
export TMPDIR="$ORIG_DIR.work"
|
||
|
|
if [ -d "/home/scratch" ]; then
|
||
|
|
TEMPL_NAME="/home/scratch/$(basename "$TMPDIR").XXX"
|
||
|
|
TMPDIR=$(mktemp -d "$TEMPL_NAME")
|
||
|
|
fi
|
||
|
|
mkdir -p "$TMPDIR"
|
||
|
|
|
||
|
|
# Launch task processor
|
||
|
|
TASK_FIFO="$(mktemp -u).task-fifo"
|
||
|
|
mkfifo "$TASK_FIFO"
|
||
|
|
if [ $CONTINUE_FLAG -eq 0 ]; then
|
||
|
|
rm -rf "$RESULTS_DIR"
|
||
|
|
fi
|
||
|
|
mkdir -p "$RESULTS_DIR"
|
||
|
|
cd "$SAVE_DIR"
|
||
|
|
"$MY_DIR/task-processor.sh" "$RESULTS_DIR" <"$TASK_FIFO" &
|
||
|
|
|
||
|
|
# Build DVM-systems for given platforms and sequentially feed task processor from our test-suite
|
||
|
|
exec 4>"$TASK_FIFO"
|
||
|
|
for platf in $PLATFORMS; do
|
||
|
|
WORK_DIR="$ORIG_DIR.$platf"
|
||
|
|
if [ $CONTINUE_FLAG -eq 0 ]; then
|
||
|
|
rm -rf "$WORK_DIR"
|
||
|
|
fi
|
||
|
|
if [ ! -e "$WORK_DIR" ]; then
|
||
|
|
cp -r "$ORIG_DIR" "$WORK_DIR"
|
||
|
|
fi
|
||
|
|
cd "$WORK_DIR/dvm_sys"
|
||
|
|
if [ ! -f platforms/$platf ]; then
|
||
|
|
if [ -f "$SAVE_DIR/$platf" ]; then
|
||
|
|
cp "$SAVE_DIR/$platf" platforms/
|
||
|
|
else
|
||
|
|
echo "Can not find platform $platf"
|
||
|
|
fi
|
||
|
|
fi
|
||
|
|
if [ -f platforms/$platf ]; then
|
||
|
|
PLATFORM=$platf ./dvminstall >install.log 2>& 1
|
||
|
|
INST_RES=$?
|
||
|
|
if [ $INST_RES -ne 0 -o ! -f user/dvm ]; then
|
||
|
|
:
|
||
|
|
# TODO: Handle errors with building DVM-system
|
||
|
|
else
|
||
|
|
cd "$SAVE_DIR"
|
||
|
|
"$MY_DIR/perform-tests.sh" "$WORK_DIR/dvm_sys" "$TEST_SUITE" 4
|
||
|
|
fi
|
||
|
|
fi
|
||
|
|
done
|
||
|
|
exec 4>&-
|
||
|
|
|
||
|
|
# Wait for task processor to finish
|
||
|
|
wait
|
||
|
|
|
||
|
|
# Cleanup stuff
|
||
|
|
rm "$TASK_FIFO"
|
||
|
|
for platf in $PLATFORMS; do
|
||
|
|
WORK_DIR="$ORIG_DIR.$platf"
|
||
|
|
# rm -rf "$WORK_DIR"
|
||
|
|
done
|
||
|
|
|
||
|
|
# Generate final report
|
||
|
|
cd "$SAVE_DIR"
|
||
|
|
"$MY_DIR/gen-report.sh" "$TEST_SUITE" "$RESULTS_DIR" "$FULL_REP_URL" $REV_NUMBER
|
||
|
|
|
||
|
|
# Publish the report and send summary e-mail
|
||
|
|
if [ "$POPULATE_FLAG" = "1" ]; then
|
||
|
|
cd "$SAVE_DIR"
|
||
|
|
"$MY_DIR/populate-report.sh" "$RESULTS_DIR" "$REV_NUMBER"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Cleanup stuff finally
|
||
|
|
#rm -rf "$RESULTS_DIR"
|
||
|
|
#rm -rf "$TMPDIR"
|