Files
SAPFOR/dvm/tools/tester/trunk/automation/build-and-test.sh

105 lines
2.4 KiB
Bash
Raw Normal View History

2024-05-02 17:08:55 +03:00
#!/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"