aboutsummaryrefslogtreecommitdiff
path: root/tests/vm-check.sh
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xtests/vm-check.sh86
1 files changed, 86 insertions, 0 deletions
diff --git a/tests/vm-check.sh b/tests/vm-check.sh
new file mode 100755
index 0000000..d6684ed
--- /dev/null
+++ b/tests/vm-check.sh
@@ -0,0 +1,86 @@
+#!/bin/sh
+set -eu
+
+usage() {
+ cat <<-'EOF'
+ Usage:
+ vm-check.sh [-x] -t TYPE -H HOST -r REMOTE
+ vm-check.sh -h
+ EOF
+}
+
+help() {
+ cat <<-'EOF'
+
+
+ Options:
+ -x shutdown the VM before running checks
+ -t TYPE the type of VM being tested
+ -H HOST the name of the host to SSH into
+ -r REMOTE the base address of the remote package-repository
+ -h, --help show this message
+
+
+
+ Run end-to-end tests of the package repository.
+ EOF
+}
+
+
+for flag in "$@"; do
+ case "$flag" in
+ --)
+ break
+ ;;
+ --help)
+ usage
+ help
+ exit
+ ;;
+ *)
+ ;;
+ esac
+done
+
+SHUTDOWN=false
+while getopts 'xt:H:r:h' flag; do
+ case "$flag" in
+ x)
+ SHUTDOWN=true
+ ;;
+ t)
+ TYPE="$OPTARG"
+ ;;
+ H)
+ HOST="$OPTARG"
+ ;;
+ r)
+ REMOTE="$OPTARG"
+ ;;
+ h)
+ usage
+ help
+ exit
+ ;;
+ *)
+ usage >&2
+ exit 2
+ ;;
+ esac
+done
+shift $((OPTIND - 1))
+
+eval "$(assert-arg -- "${TYPE:-}" '-t TYPE')"
+eval "$(assert-arg -- "${HOST:-}" '-H HOST')"
+eval "$(assert-arg -- "${REMOTE:-}" '-r REMOTE')"
+
+
+
+if [ "$SHUTDOWN" = true ]; then
+ vm down "$HOST"
+fi
+vm up "$HOST"
+
+untill -m5 -n5 ssh "$HOST" uptime
+scp tests/checks/"$TYPE".sh "$HOST":check.sh
+ssh "$HOST" sh check.sh "$REMOTE"