sh: add OTA test helper script [ci skip]

Adds a script for helping to verify that an OTA update (i.e. from arvo
at one revision to another) applies cleanly.

This only performs the upgrade on a single fake ship, so it's limited in
what kind of problems it can identify.  It *can* catch particularly
nasty errors, however, so serves as a useful sanity check.
This commit is contained in:
Jared Tobin 2019-11-15 19:42:55 +08:00
parent 385e9cd9e0
commit c7fe6f4082
No known key found for this signature in database
GPG Key ID: B77DC7C964AAD99A

73
sh/test-arvo-upgrade-path Executable file
View File

@ -0,0 +1,73 @@
#!/usr/bin/env bash
usage() {
local error="$1"
cat >&2 <<EOF
Usage:
$0 FROM_REVISION TO_REVISION
Synopsis:
Test an Arvo OTA update on a fake ship.
Example:
$0 arvo.2019.11.6 arvo.2019.11.8
Error:
-> $error
EOF
exit 1
}
args="$@"
if [[ -z "$args" ]]; then
usage "No arguments specified."
fi
FROM=$1
TO=$2
SHIP="zod"
START=$(git rev-parse HEAD)
cleanup () {
if [ -e ./$PIER/.vere.lock ]
then kill $(< ./$PIER/.vere.lock) || true;
fi
}
trap cleanup EXIT
boot_ship() {
ship=$1
rev=$2
git checkout $rev
make install
urbit -d -F $ship -B bin/brass.pill
}
mount_home() {
pier=$1
herb ./$pier -p hood -d "+hood/mount /=home="
}
update_arvo() {
pier=$1
rev=$2
git checkout $rev
rsync -zr --delete ./pkg/arvo/ ./$pier/home
herb ./$pier -p hood -d "+hood/commit %home"
}
boot_ship $SHIP $FROM
mount_home $SHIP
update_arvo $SHIP $TO
cleanup
git checkout $START