From 42600a73fcb06410985b1d9997e34b67406aba82 Mon Sep 17 00:00:00 2001 From: Clint Shryock Date: Wed, 28 Nov 2018 16:40:37 -0600 Subject: [PATCH] update single server acc test, add HA test that installs Consul and runs HA mode --- test/acceptance/_helpers.bash | 20 ++++++++++++---- test/acceptance/server-ha.bats | 42 ++++++++++++++++++++++++++++++++++ test/acceptance/server.bats | 7 ++++-- 3 files changed, 63 insertions(+), 6 deletions(-) create mode 100644 test/acceptance/server-ha.bats diff --git a/test/acceptance/_helpers.bash b/test/acceptance/_helpers.bash index 59c7376..070eb67 100644 --- a/test/acceptance/_helpers.bash +++ b/test/acceptance/_helpers.bash @@ -18,10 +18,21 @@ helm_install() { ${BATS_TEST_DIRNAME}/../.. } -# helm_delete deletes the vault chart and all resources. -helm_delete() { - helm delete --purge vault - kubectl delete --all pvc +# helm_install_ha installs the vault chart using HA mode. This will source +# overridable values from the "values.yaml" file in this directory. This can be +# set by CI or other environments to do test-specific overrides. Note that its +# easily possible to break tests this way so be careful. +helm_install_ha() { + local values="${BATS_TEST_DIRNAME}/values.yaml" + if [ ! -f "${values}" ]; then + touch $values + fi + + helm install -f ${values} \ + --name vault \ + --set 'sever.enabled=false' \ + --set 'severHA.enabled=true' \ + ${BATS_TEST_DIRNAME}/../.. } # wait for a pod to be ready @@ -43,6 +54,7 @@ wait_for_running() { for i in $(seq 30); do if [ -n "$(check ${POD_NAME})" ]; then echo "${POD_NAME} is ready." + sleep 2 return fi diff --git a/test/acceptance/server-ha.bats b/test/acceptance/server-ha.bats new file mode 100644 index 0000000..d6ac732 --- /dev/null +++ b/test/acceptance/server-ha.bats @@ -0,0 +1,42 @@ +#!/usr/bin/env bats + +load _helpers + +@test "server-ha: default, comes up sealed, 1 replica" { + # helm_install_consul + helm_install_ha + wait_for_running $(name_prefix)-server-0 + + # Verify installed, sealed, and 1 replica + local sealed_status=$(kubectl exec "$(name_prefix)-server-0" -- vault status -format=json | + jq .sealed ) + [ "${sealed_status}" == "true" ] + + local init_status=$(kubectl exec "$(name_prefix)-server-0" -- vault status -format=json | + jq .initialized) + [ "${init_status}" == "false" ] +} + +# setup a consul env +setup() { + #if [[ "$BATS_TEST_NUMBER" -eq 1]]; then + # ... + #fi + #helm delete --purge vault consul + #kubectl delete --all pvc + helm install https://github.com/hashicorp/consul-helm/archive/v0.3.0.tar.gz \ + --name consul \ + --set 'ui.enabled=false' \ + --set 'client.enabled=false' +} + +#cleanup +teardown() { + # only destroy the pvc if end of all tests, so we don't destroy the consul + # pvcs + #if [[ "${#BATS_TEST_NAMES[@]}" -eq "$BATS_TEST_NUMBER" ]]; then + # + #fi + helm delete --purge vault consul + kubectl delete --all pvc +} diff --git a/test/acceptance/server.bats b/test/acceptance/server.bats index e865dd2..c848718 100644 --- a/test/acceptance/server.bats +++ b/test/acceptance/server.bats @@ -6,7 +6,7 @@ load _helpers helm_install wait_for_running $(name_prefix)-server-0 - # Verify there are three servers + # Verify installed, sealed, and 1 replica local sealed_status=$(kubectl exec "$(name_prefix)-server-0" -- vault status -format=json | jq .sealed ) [ "${sealed_status}" == "true" ] @@ -14,10 +14,13 @@ load _helpers local init_status=$(kubectl exec "$(name_prefix)-server-0" -- vault status -format=json | jq .initialized) [ "${init_status}" == "false" ] + + # TODO check pv, pvc } # Clean up teardown() { echo "helm/pvc teardown" - helm_delete + helm delete --purge vault + kubectl delete --all pvc }