rustible/test.sh
2023-10-05 17:58:41 +02:00

92 lines
1.6 KiB
Bash
Executable File

#! /usr/bin/env bash
help() {
echo "test.sh [SERVER]"
echo "Start the rustible test suite on a certain machine (localhost by default)"
echo "Requires lxc-ramdisk to be installed: https://kl.netlib.re/gitea/selfhoster1312/lxc-ramdisk"
}
build() {
if cargo build --release 2>&1 >/dev/null; then
echo "$(pwd)"/target/release/rustible
ret=0
else
echo "BUILD FAILED."
ret=1
fi
return $ret
}
gen_rand_name() {
echo rustible-"$RANDOM"
}
execute_localhost() {
while true; do
TEST_NAME="$(gen_rand_name)"
TEST_PATH=/tmp/"$TEST_NAME"
if [ ! -e "$TEST_PATH" ]; then
break
fi
done
echo "Start test $TEST_NAME"
cp target/release/rustible "$TEST_PATH"
}
execute_on_server() {
SERVER="$1"
if ssh "$SERVER" true >/dev/null 2>&1; then
echo "Connection to "$1" successful"
else
echo "ERROR: Connection failed to "$1""
return 1
fi
while true; do
TEST_NAME="$(gen_rand_name)"
TEST_PATH=/tmp/"$TEST_NAME"
if ! ssh "$1" ls "$TEST_PATH" >/dev/null 2>&1; then
break
fi
done
echo "Start test "$TEST_NAME" ("$TEST_PATH")"
if ! scp target/release/rustible "$SERVER":"$TEST_PATH"; then
echo "ERROR: Copy to "$SERVER" failed"
return 1
fi
}
# Move to crate directory
OLDDIR="$(pwd)"
cd "$(dirname "$0")"
# Figure out rustible test binary path
BIN_PATH="$(build)"
if [ ! $? -eq 0 ]; then
# Compilation failed, abort
echo "$BIN_PATH"
exit 1
fi
if [[ "$1" = "" ]]; then
execute_localhost
ret=$?
else
case "$1" in
"help" | "-h" | "--help")
help
ret=0
;;
*)
execute_on_server "$1"
ret=$?
;;
esac
fi
cd "$OLDDIR"
exit $ret