Added a functional test. (#58)

This is a little messy -- it's a bash script with some outside
dependencies, and it makes assumptions about the capabilities of the
environment that it's being run in. But it does basically work, and
provides contributors with some basic reassurance that they have built
a working snap.
This commit is contained in:
Pete Vander Giessen 2019-03-27 17:00:26 -04:00 committed by GitHub
parent fdd341824c
commit a735b0973c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 51 additions and 0 deletions

51
tests/basic-test.sh Executable file
View File

@ -0,0 +1,51 @@
#!/bin/bash
set -ex
# Dependencies. TODO: move these into a testing harness
command -v multipass > /dev/null || (echo "Please install multipass."; exit 1);
command -v petname > /dev/null || (echo "Please install petname."; exit 1);
if [ ! -f microstack_rocky_amd64.snap ]; then
echo "microstack_rocky_amd64.snap not found."
echo "Please run snapcraft before executing the tests."
exit 1
fi
MACHINE=$(petname)
DISTRO=18.04
# Launch a machine and copy the snap to it.
multipass launch --cpus 2 --mem 16G $DISTRO --name $MACHINE
multipass copy-files microstack_rocky_amd64.snap $MACHINE:
multipass exec $MACHINE -- \
sudo snap install --classic --dangerous microstack*.snap
# Run microstack.launch and wait for it to complete.
multipass exec $MACHINE -- /snap/bin/microstack.launch breakfast
IP=$(multipass exec $MACHINE -- /snap/bin/microstack.openstack server list | grep breakfast | cut -d" " -f9)
echo "Waiting for ping..."
PINGS=1
MAX_PINGS=20
until multipass exec $MACHINE -- ping -c 1 $IP &>/dev/null; do
PINGS=$(($PINGS + 1));
if test $PINGS -gt $MAX_PINGS; then
break
fi
done;
# Verify that we can ping the machine, and ping from the machine to
# canonical.com (91.189.94.250).
# TODO no longer hard code canonical.com's IP address.
multipass exec $MACHINE -- ping -c 1 $IP;
sleep 5; # Sometimes the machine is still not quite ready. TODO better wait.
multipass exec $MACHINE -- \
ssh -oStrictHostKeyChecking=no -i .ssh/id_microstack cirros@$IP -- \
ping -c 1 91.189.94.250
# Cleanup
unset IP
echo "Completed tests. Tearing down $MACHINE."
multipass stop $MACHINE
multipass purge # This is a little bit rude to do, but we assume that
# we can beat up on the test machine a bit.