From e75b6a5e5f198333fd5c34d8bdaded981c8a144b Mon Sep 17 00:00:00 2001 From: Nathan LeClaire Date: Tue, 2 Jun 2015 16:06:41 -0700 Subject: [PATCH] Add some helpers and patch ups to the integration tests Signed-off-by: Nathan LeClaire --- test/integration/core/regenerate-certs.bats | 5 ----- test/integration/core/scp.bats | 3 +++ .../drivers/virtualbox/bad-create-iso.bats | 2 ++ .../virtualbox}/certs-checksum.bats | 11 ++++++---- .../drivers/virtualbox/custom-mem-disk.bats | 2 ++ .../drivers/virtualbox/pause-save-start.bats | 2 ++ .../drivers/virtualbox/upgrade.bats | 2 ++ test/integration/helpers.bash | 22 +++++++++++++++++-- test/integration/provision/os/rancheros.bats | 14 ++++++++++++ test/integration/provision/os/redhat.bats | 16 ++++++++++++++ test/integration/run-bats.sh | 4 +++- 11 files changed, 71 insertions(+), 12 deletions(-) rename test/integration/{core => drivers/virtualbox}/certs-checksum.bats (83%) create mode 100644 test/integration/provision/os/rancheros.bats create mode 100644 test/integration/provision/os/redhat.bats diff --git a/test/integration/core/regenerate-certs.bats b/test/integration/core/regenerate-certs.bats index c6302389ee..e7ca5dde84 100644 --- a/test/integration/core/regenerate-certs.bats +++ b/test/integration/core/regenerate-certs.bats @@ -15,8 +15,3 @@ load ${BASE_TEST_DIR}/helpers.bash run docker $(machine config $NAME) version [[ ${status} -eq 0 ]] } - -@test "cleanup" { - machine rm $NAME - [[ ${status} -eq 0 ]] -} diff --git a/test/integration/core/scp.bats b/test/integration/core/scp.bats index aaa68a63f2..0f1f8968c9 100644 --- a/test/integration/core/scp.bats +++ b/test/integration/core/scp.bats @@ -16,6 +16,9 @@ export SECOND_MACHINE="$NAME-2" } @test "$DRIVER: test machine scp command from host to remote" { + teardown () { + rm foo.txt + } echo A file created locally! >foo.txt machine scp foo.txt $NAME:/tmp/foo.txt [[ $(machine ssh $NAME cat /tmp/foo.txt) == "A file created locally!" ]] diff --git a/test/integration/drivers/virtualbox/bad-create-iso.bats b/test/integration/drivers/virtualbox/bad-create-iso.bats index 93d337ad85..b79bd36ddf 100644 --- a/test/integration/drivers/virtualbox/bad-create-iso.bats +++ b/test/integration/drivers/virtualbox/bad-create-iso.bats @@ -2,6 +2,8 @@ load ${BASE_TEST_DIR}/helpers.bash +force_env DRIVER virtualbox + export BAD_URL="http://dev.null:9111/bad.iso" @test "$DRIVER: Should not allow machine creation with bad ISO" { diff --git a/test/integration/core/certs-checksum.bats b/test/integration/drivers/virtualbox/certs-checksum.bats similarity index 83% rename from test/integration/core/certs-checksum.bats rename to test/integration/drivers/virtualbox/certs-checksum.bats index d5f47f57d4..af1c76f520 100644 --- a/test/integration/core/certs-checksum.bats +++ b/test/integration/drivers/virtualbox/certs-checksum.bats @@ -2,22 +2,25 @@ load ${BASE_TEST_DIR}/helpers.bash +force_env DRIVER virtualbox + @test "$DRIVER: create" { run machine create -d $DRIVER $NAME } @test "$DRIVER: verify that server cert checksum matches local checksum" { + # TODO: This test is tightly coupled to VirtualBox right now, but should be + # available for all providers ideally. + # # TODO: Does this test work OK on Linux? cc @ehazlett + # # Have to create this directory and file or else the OpenSSL checksum will barf. machine ssh $NAME -- sudo mkdir -p /usr/local/ssl machine ssh $NAME -- sudo touch /usr/local/ssl/openssl.cnf + SERVER_CHECKSUM=$(machine ssh $NAME -- openssl dgst -sha256 /var/lib/boot2docker/ca.pem | awk '{ print $2 }') LOCAL_CHECKSUM=$(openssl dgst -sha256 $MACHINE_STORAGE_PATH/certs/ca.pem | awk '{ print $2 }') echo ${SERVER_CHECKSUM} echo ${LOCAL_CHECKSUM} [[ ${SERVER_CHECKSUM} == ${LOCAL_CHECKSUM} ]] } - -@test "cleanup" { - machine rm $NAME -} diff --git a/test/integration/drivers/virtualbox/custom-mem-disk.bats b/test/integration/drivers/virtualbox/custom-mem-disk.bats index 377944f914..e95e2db528 100644 --- a/test/integration/drivers/virtualbox/custom-mem-disk.bats +++ b/test/integration/drivers/virtualbox/custom-mem-disk.bats @@ -2,6 +2,8 @@ load ${BASE_TEST_DIR}/helpers.bash +force_env DRIVER virtualbox + # Default memsize is 1024MB and disksize is 20000MB # These values are defined in drivers/virtualbox/virtualbox.go export DEFAULT_MEMSIZE=1024 diff --git a/test/integration/drivers/virtualbox/pause-save-start.bats b/test/integration/drivers/virtualbox/pause-save-start.bats index 6e75401858..c1c805bf7e 100644 --- a/test/integration/drivers/virtualbox/pause-save-start.bats +++ b/test/integration/drivers/virtualbox/pause-save-start.bats @@ -2,6 +2,8 @@ load ${BASE_TEST_DIR}/helpers.bash +force_env DRIVER virtualbox + @test "$DRIVER: create" { run machine create -d $DRIVER $NAME [ "$status" -eq 0 ] diff --git a/test/integration/drivers/virtualbox/upgrade.bats b/test/integration/drivers/virtualbox/upgrade.bats index 267500e4df..503dc267dd 100644 --- a/test/integration/drivers/virtualbox/upgrade.bats +++ b/test/integration/drivers/virtualbox/upgrade.bats @@ -2,6 +2,8 @@ load ${BASE_TEST_DIR}/helpers.bash +force_env DRIVER virtualbox + export OLD_ISO_URL="https://github.com/boot2docker/boot2docker/releases/download/v1.4.1/boot2docker.iso" @test "$DRIVER: create for upgrade" { diff --git a/test/integration/helpers.bash b/test/integration/helpers.bash index e54c391889..967d36bb0c 100644 --- a/test/integration/helpers.bash +++ b/test/integration/helpers.bash @@ -1,10 +1,28 @@ #!/bin/bash teardown() { - echo "$BATS_TEST_NAME + echo "$BATS_TEST_NAME ---------- $output ---------- -" >> ${BATS_LOG} +" >> ${BATS_LOG} +} + +function errecho () { + >&2 echo "$@" +} + +function force_env () { + if [[ ${!1} != "$2" ]]; then + errecho "This test requires the $1 environment variable to be set to $2 in order to run properly." + exit 1 + fi +} + +function require_env () { + if [[ -z ${!1} ]]; then + errecho "This test requires the $1 environment variable to be set in order to run." + exit 1 + fi } diff --git a/test/integration/provision/os/rancheros.bats b/test/integration/provision/os/rancheros.bats new file mode 100644 index 0000000000..fccafc2a0b --- /dev/null +++ b/test/integration/provision/os/rancheros.bats @@ -0,0 +1,14 @@ +#!/usr/bin/env bats + +load ${BASE_TEST_DIR}/helpers.bash + +force_env DRIVER virtualbox + +export RANCHEROS_VERSION="v0.3.1" +export RANCHEROS_ISO="https://github.com/rancherio/os/releases/download/$RANCHEROS_VERSION/machine-rancheros.iso" + +@test "$DRIVER: create with RancherOS ISO" { + VIRTUALBOX_BOOT2DOCKER_URL="$RANCHEROS_ISO" run ${BASE_TEST_DIR}/run-bats.sh ${BASE_TEST_DIR}/core + echo ${output} + [ ${status} -eq 0 ] +} diff --git a/test/integration/provision/os/redhat.bats b/test/integration/provision/os/redhat.bats new file mode 100644 index 0000000000..b44bbc4faf --- /dev/null +++ b/test/integration/provision/os/redhat.bats @@ -0,0 +1,16 @@ +#!/usr/bin/env bats + +load ${BASE_TEST_DIR}/helpers.bash + +force_env DRIVER amazonec2 + +require_env AWS_VPC_ID +require_env AWS_ACCESS_KEY_ID +require_env AWS_SECRET_ACCESS_KEY + +@test "$DRIVER: create using RedHat AMI" { + # Oh snap, recursive stuff!! + AWS_AMI=ami-12663b7a AWS_SSH_USER=ec2-user run ${BASE_TEST_DIR}/run-bats.sh ${BASE_TEST_DIR}/core + echo ${output} + [ ${status} -eq 0 ] +} diff --git a/test/integration/run-bats.sh b/test/integration/run-bats.sh index 406e02cfc2..42d8348ad8 100755 --- a/test/integration/run-bats.sh +++ b/test/integration/run-bats.sh @@ -35,11 +35,13 @@ function run_bats() { # BATS returns non-zero to indicate the tests have failed, we shouldn't # neccesarily bail in this case, so that's the reason for the e toggle. set +e + echo "=> $bats_file" bats "$bats_file" if [[ $? -ne 0 ]]; then EXIT_STATUS=1 fi set -e + echo cleanup_machines done } @@ -71,7 +73,7 @@ if [ ! -e "$MACHINE_ROOT"/"$MACHINE_BIN_NAME" ]; then fi if [[ -z "$DRIVER" ]]; then - echo "The DRIVER environment variable must be set." + echo "You must specify the DRIVER environment variable." exit 1 fi