builder-web/packaging/perftest/unipi/run-test-remotely.sh

82 lines
1.5 KiB
Bash
Executable file

#! /bin/bash
set -e
prog_NAME=$(basename "${0}")
warn()
{
echo "${prog_NAME}: WARN: $*"
}
info()
{
echo "${prog_NAME}: INFO: $*"
}
err()
{
echo "${prog_NAME}: ERROR: $*" 1>&2
}
die()
{
echo "${prog_NAME}: ERROR: $*" 1>&2
exit 1
}
PERFSCRIPT_DIR="$1"
PERFDATA_DIR="$2"
BIN="$3"
SERVER="$4"
SERVER_DIR="$5"
SERVER_W_DIR="$SERVER:$SERVER_DIR"
SSH="ssh $SERVER"
scp "$BIN" "$SERVER_W_DIR"
scp -r "$PERFSCRIPT_DIR"/* "$SERVER_W_DIR"
cleanup () {
info killing unikernel
$SSH "cd $SERVER_DIR; kill "'$(cat run-unikernel.sh.PID)' || info .. unikernel not running
info killing git daemon
$SSH "cd $SERVER_DIR; kill "'$(cat init.sh.PID)' || info .. git daemon not running
info running cleanup.sh
$SSH "cd $SERVER_DIR; ./cleanup.sh"
}
trap cleanup EXIT
info initializing context for unikernel
$SSH "cd $SERVER_DIR; ./init.sh" &
info sleeping before starting unipi
sleep 5
info checking if git daemon is still running
$SSH "cd $SERVER_DIR; kill -0 "'$(cat init.sh.PID)'
info running unikernel in background
$SSH "cd $SERVER_DIR; ./run-unikernel.sh" &
info sleeping a bit before test
sleep 5
info checking if unikernel is still running
$SSH "cd $SERVER_DIR; kill -0 "'$(cat run-unikernel.sh.PID)'
info running test
$SSH "cd $SERVER_DIR; ./run-test.sh"
info copying results to "$PERFDATA_DIR"
if [ ! -e "$PERFDATA_DIR" ]; then
mkdir -p "$PERFDATA_DIR"
fi
scp "${SERVER_W_DIR}/output/*" "$PERFDATA_DIR"/
info successfully run test