From 38d245d34312225c53f4390a939e83afa20482bc Mon Sep 17 00:00:00 2001 From: Clint Shryock Date: Fri, 30 Nov 2018 16:44:38 -0600 Subject: [PATCH] update ha server unit tests --- test/acceptance/server-ha.bats | 7 - test/unit/server-ha-statefulset.bats | 333 +++++++++++++-------------- 2 files changed, 161 insertions(+), 179 deletions(-) diff --git a/test/acceptance/server-ha.bats b/test/acceptance/server-ha.bats index 44ffe43..76f3087 100644 --- a/test/acceptance/server-ha.bats +++ b/test/acceptance/server-ha.bats @@ -18,10 +18,6 @@ load _helpers # setup a consul env setup() { - set +e - #if [[ "$BATS_TEST_NUMBER" -eq 1]]; then - # ... - #fi helm install https://github.com/hashicorp/consul-helm/archive/v0.3.0.tar.gz \ --name consul \ --set 'ui.enabled=false' \ @@ -31,9 +27,6 @@ setup() { #cleanup teardown() { - #if [[ "${#BATS_TEST_NAMES[@]}" -eq "$BATS_TEST_NUMBER" ]]; then - # - #fi helm delete --purge vault helm delete --purge consul kubectl delete --all pvc diff --git a/test/unit/server-ha-statefulset.bats b/test/unit/server-ha-statefulset.bats index de50207..388bd45 100755 --- a/test/unit/server-ha-statefulset.bats +++ b/test/unit/server-ha-statefulset.bats @@ -21,212 +21,201 @@ load _helpers [ "${actual}" = "true" ] } -# @test "server/StatefulSet: enable with global.enabled false" { -# cd `chart_dir` -# local actual=$(helm template \ -# -x templates/server-ha-statefulset.yaml \ -# --set 'global.enabled=false' \ -# --set 'server.enabled=true' \ -# . | tee /dev/stderr | -# yq 'length > 0' | tee /dev/stderr) -# [ "${actual}" = "true" ] -# } +@test "server/StatefulSet: enable with global.enabled false" { + cd `chart_dir` + local actual=$(helm template \ + -x templates/server-ha-statefulset.yaml \ + --set 'global.enabled=false' \ + --set 'serverHA.enabled=true' \ + . | tee /dev/stderr | + yq 'length > 0' | tee /dev/stderr) + [ "${actual}" = "true" ] +} -#@test "server/StatefulSet: disable with server.enabled" { -# cd `chart_dir` -# local actual=$(helm template \ -# -x templates/server-ha-statefulset.yaml \ -# --set 'server.enabled=false' \ -# . | tee /dev/stderr | -# yq 'length > 0' | tee /dev/stderr) -# [ "${actual}" = "false" ] -#} +@test "server/StatefulSet: disable with serverHA.enabled" { + cd `chart_dir` + local actual=$(helm template \ + -x templates/server-ha-statefulset.yaml \ + --set 'serverHA.enabled=false' \ + . | tee /dev/stderr | + yq 'length > 0' | tee /dev/stderr) + [ "${actual}" = "false" ] +} -#@test "server/StatefulSet: disable with global.enabled" { -# cd `chart_dir` -# local actual=$(helm template \ -# -x templates/server-ha-statefulset.yaml \ -# --set 'global.enabled=false' \ -# . | tee /dev/stderr | -# yq 'length > 0' | tee /dev/stderr) -# [ "${actual}" = "false" ] -#} +@test "server/StatefulSet: disable with global.enabled" { + cd `chart_dir` + local actual=$(helm template \ + -x templates/server-ha-statefulset.yaml \ + --set 'global.enabled=false' \ + . | tee /dev/stderr | + yq 'length > 0' | tee /dev/stderr) + [ "${actual}" = "false" ] +} -#@test "server/StatefulSet: image defaults to global.image" { -# cd `chart_dir` -# local actual=$(helm template \ -# -x templates/server-ha-statefulset.yaml \ -# --set 'global.image=foo' \ -# . | tee /dev/stderr | -# yq -r '.spec.template.spec.containers[0].image' | tee /dev/stderr) -# [ "${actual}" = "foo" ] -#} +@test "server/StatefulSet: image defaults to global.image" { + cd `chart_dir` + local actual=$(helm template \ + -x templates/server-ha-statefulset.yaml \ + --set 'global.image=foo' \ + --set 'serverHA.enabled=true' \ + . | tee /dev/stderr | + yq -r '.spec.template.spec.containers[0].image' | tee /dev/stderr) + [ "${actual}" = "foo" ] +} -#@test "server/StatefulSet: image can be overridden with server.image" { -# cd `chart_dir` -# local actual=$(helm template \ -# -x templates/server-ha-statefulset.yaml \ -# --set 'global.image=foo' \ -# --set 'server.image=bar' \ -# . | tee /dev/stderr | -# yq -r '.spec.template.spec.containers[0].image' | tee /dev/stderr) -# [ "${actual}" = "bar" ] -#} +@test "server/StatefulSet: image can be overridden with serverHA.image" { + cd `chart_dir` + local actual=$(helm template \ + -x templates/server-ha-statefulset.yaml \ + --set 'global.image=foo' \ + --set 'serverHA.enabled=true' \ + --set 'serverHA.image=bar' \ + . | tee /dev/stderr | + yq -r '.spec.template.spec.containers[0].image' | tee /dev/stderr) + [ "${actual}" = "bar" ] +} ##-------------------------------------------------------------------- ## updateStrategy -#@test "server/StatefulSet: no updateStrategy when not updating" { -# cd `chart_dir` -# local actual=$(helm template \ -# -x templates/server-ha-statefulset.yaml \ -# . | tee /dev/stderr | -# yq -r '.spec.updateStrategy' | tee /dev/stderr) -# [ "${actual}" = "null" ] -#} +@test "server/StatefulSet: no updateStrategy when not updating" { + cd `chart_dir` + local actual=$(helm template \ + -x templates/server-ha-statefulset.yaml \ + --set 'serverHA.enabled=true' \ + . | tee /dev/stderr | + yq -r '.spec.updateStrategy' | tee /dev/stderr) + [ "${actual}" = "null" ] +} -#@test "server/StatefulSet: updateStrategy during update" { -# cd `chart_dir` -# local actual=$(helm template \ -# -x templates/server-ha-statefulset.yaml \ -# --set 'server.updatePartition=2' \ -# . | tee /dev/stderr | -# yq -r '.spec.updateStrategy.type' | tee /dev/stderr) -# [ "${actual}" = "RollingUpdate" ] +@test "server/StatefulSet: updateStrategy during update" { + cd `chart_dir` + local actual=$(helm template \ + -x templates/server-ha-statefulset.yaml \ + --set 'serverHA.enabled=true' \ + --set 'serverHA.updatePartition=2' \ + . | tee /dev/stderr | + yq -r '.spec.updateStrategy.type' | tee /dev/stderr) + [ "${actual}" = "RollingUpdate" ] -# local actual=$(helm template \ -# -x templates/server-ha-statefulset.yaml \ -# --set 'server.updatePartition=2' \ -# . | tee /dev/stderr | -# yq -r '.spec.updateStrategy.rollingUpdate.partition' | tee /dev/stderr) -# [ "${actual}" = "2" ] -#} + local actual=$(helm template \ + -x templates/server-ha-statefulset.yaml \ + --set 'serverHA.enabled=true' \ + --set 'serverHA.updatePartition=2' \ + . | tee /dev/stderr | + yq -r '.spec.updateStrategy.rollingUpdate.partition' | tee /dev/stderr) + [ "${actual}" = "2" ] +} ##-------------------------------------------------------------------- ## extraVolumes -#@test "server/StatefulSet: adds extra volume" { -# cd `chart_dir` +@test "server/StatefulSet: adds extra volume" { + cd `chart_dir` -# # Test that it defines it -# local object=$(helm template \ -# -x templates/server-ha-statefulset.yaml \ -# --set 'server.extraVolumes[0].type=configMap' \ -# --set 'server.extraVolumes[0].name=foo' \ -# . | tee /dev/stderr | -# yq -r '.spec.template.spec.volumes[] | select(.name == "userconfig-foo")' | tee /dev/stderr) + # Test that it defines it + local object=$(helm template \ + -x templates/server-ha-statefulset.yaml \ + --set 'serverHA.enabled=true' \ + --set 'serverHA.extraVolumes[0].type=configMap' \ + --set 'serverHA.extraVolumes[0].name=foo' \ + . | tee /dev/stderr | + yq -r '.spec.template.spec.volumes[] | select(.name == "userconfig-foo")' | tee /dev/stderr) -# local actual=$(echo $object | -# yq -r '.configMap.name' | tee /dev/stderr) -# [ "${actual}" = "foo" ] + local actual=$(echo $object | + yq -r '.configMap.name' | tee /dev/stderr) + [ "${actual}" = "foo" ] -# local actual=$(echo $object | -# yq -r '.configMap.secretName' | tee /dev/stderr) -# [ "${actual}" = "null" ] + local actual=$(echo $object | + yq -r '.configMap.secretName' | tee /dev/stderr) + [ "${actual}" = "null" ] -# # Test that it mounts it -# local object=$(helm template \ -# -x templates/server-ha-statefulset.yaml \ -# --set 'server.extraVolumes[0].type=configMap' \ -# --set 'server.extraVolumes[0].name=foo' \ -# . | tee /dev/stderr | -# yq -r '.spec.template.spec.containers[0].volumeMounts[] | select(.name == "userconfig-foo")' | tee /dev/stderr) + # Test that it mounts it + local object=$(helm template \ + -x templates/server-ha-statefulset.yaml \ + --set 'serverHA.enabled=true' \ + --set 'serverHA.extraVolumes[0].type=configMap' \ + --set 'serverHA.extraVolumes[0].name=foo' \ + . | tee /dev/stderr | + yq -r '.spec.template.spec.containers[0].volumeMounts[] | select(.name == "userconfig-foo")' | tee /dev/stderr) -# local actual=$(echo $object | -# yq -r '.readOnly' | tee /dev/stderr) -# [ "${actual}" = "true" ] + local actual=$(echo $object | + yq -r '.readOnly' | tee /dev/stderr) + [ "${actual}" = "true" ] -# local actual=$(echo $object | -# yq -r '.mountPath' | tee /dev/stderr) -# [ "${actual}" = "/consul/userconfig/foo" ] + local actual=$(echo $object | + yq -r '.mountPath' | tee /dev/stderr) + [ "${actual}" = "/vault/userconfig/foo" ] -# # Doesn't load it -# local actual=$(helm template \ -# -x templates/server-ha-statefulset.yaml \ -# --set 'server.extraVolumes[0].type=configMap' \ -# --set 'server.extraVolumes[0].name=foo' \ -# . | tee /dev/stderr | -# yq -r '.spec.template.spec.containers[0].command | map(select(test("userconfig"))) | length' | tee /dev/stderr) -# [ "${actual}" = "0" ] -#} + # Doesn't load it + local actual=$(helm template \ + -x templates/server-ha-statefulset.yaml \ + --set 'serverHA.enabled=true' \ + --set 'serverHA.extraVolumes[0].type=configMap' \ + --set 'serverHA.extraVolumes[0].name=foo' \ + . | tee /dev/stderr | + yq -r '.spec.template.spec.containers[0].command | map(select(test("userconfig"))) | length' | tee /dev/stderr) + [ "${actual}" = "0" ] +} -#@test "server/StatefulSet: adds extra secret volume" { -# cd `chart_dir` +@test "server/StatefulSet: adds extra secret volume" { + cd `chart_dir` -# # Test that it defines it -# local object=$(helm template \ -# -x templates/server-ha-statefulset.yaml \ -# --set 'server.extraVolumes[0].type=secret' \ -# --set 'server.extraVolumes[0].name=foo' \ -# . | tee /dev/stderr | -# yq -r '.spec.template.spec.volumes[] | select(.name == "userconfig-foo")' | tee /dev/stderr) + # Test that it defines it + local object=$(helm template \ + -x templates/server-ha-statefulset.yaml \ + --set 'serverHA.enabled=true' \ + --set 'serverHA.extraVolumes[0].type=secret' \ + --set 'serverHA.extraVolumes[0].name=foo' \ + . | tee /dev/stderr | + yq -r '.spec.template.spec.volumes[] | select(.name == "userconfig-foo")' | tee /dev/stderr) -# local actual=$(echo $object | -# yq -r '.secret.name' | tee /dev/stderr) -# [ "${actual}" = "null" ] + local actual=$(echo $object | + yq -r '.secret.name' | tee /dev/stderr) + [ "${actual}" = "null" ] -# local actual=$(echo $object | -# yq -r '.secret.secretName' | tee /dev/stderr) -# [ "${actual}" = "foo" ] + local actual=$(echo $object | + yq -r '.secret.secretName' | tee /dev/stderr) + [ "${actual}" = "foo" ] -# # Test that it mounts it -# local object=$(helm template \ -# -x templates/server-ha-statefulset.yaml \ -# --set 'server.extraVolumes[0].type=configMap' \ -# --set 'server.extraVolumes[0].name=foo' \ -# . | tee /dev/stderr | -# yq -r '.spec.template.spec.containers[0].volumeMounts[] | select(.name == "userconfig-foo")' | tee /dev/stderr) + # Test that it mounts it + local object=$(helm template \ + -x templates/server-ha-statefulset.yaml \ + --set 'serverHA.enabled=true' \ + --set 'serverHA.extraVolumes[0].type=configMap' \ + --set 'serverHA.extraVolumes[0].name=foo' \ + . | tee /dev/stderr | + yq -r '.spec.template.spec.containers[0].volumeMounts[] | select(.name == "userconfig-foo")' | tee /dev/stderr) -# local actual=$(echo $object | -# yq -r '.readOnly' | tee /dev/stderr) -# [ "${actual}" = "true" ] + local actual=$(echo $object | + yq -r '.readOnly' | tee /dev/stderr) + [ "${actual}" = "true" ] -# local actual=$(echo $object | -# yq -r '.mountPath' | tee /dev/stderr) -# [ "${actual}" = "/consul/userconfig/foo" ] + local actual=$(echo $object | + yq -r '.mountPath' | tee /dev/stderr) + [ "${actual}" = "/vault/userconfig/foo" ] -# # Doesn't load it -# local actual=$(helm template \ -# -x templates/server-ha-statefulset.yaml \ -# --set 'server.extraVolumes[0].type=configMap' \ -# --set 'server.extraVolumes[0].name=foo' \ -# . | tee /dev/stderr | -# yq -r '.spec.template.spec.containers[0].command | map(select(test("userconfig"))) | length' | tee /dev/stderr) -# [ "${actual}" = "0" ] -#} + # Doesn't load it + local actual=$(helm template \ + -x templates/server-ha-statefulset.yaml \ + --set 'serverHA.enabled=true' \ + --set 'serverHA.extraVolumes[0].type=configMap' \ + --set 'serverHA.extraVolumes[0].name=foo' \ + . | tee /dev/stderr | + yq -r '.spec.template.spec.containers[0].command | map(select(test("userconfig"))) | length' | tee /dev/stderr) + [ "${actual}" = "0" ] +} +# Extra volumes are not used for loading Vault configuration at this time #@test "server/StatefulSet: adds loadable volume" { # cd `chart_dir` # local actual=$(helm template \ # -x templates/server-ha-statefulset.yaml \ -# --set 'server.extraVolumes[0].type=configMap' \ -# --set 'server.extraVolumes[0].name=foo' \ -# --set 'server.extraVolumes[0].load=true' \ +# --set 'serverHA.enabled=true' \ +# --set 'serverHA.extraVolumes[0].type=configMap' \ +# --set 'serverHA.extraVolumes[0].name=foo' \ +# --set 'serverHA.extraVolumes[0].load=true' \ # . | tee /dev/stderr | -# yq -r '.spec.template.spec.containers[0].command | map(select(test("/consul/userconfig/foo"))) | length' | tee /dev/stderr) +# yq -r '.spec.template.spec.containers[0].command | map(select(test("/vault/userconfig/foo"))) | length' | tee /dev/stderr) # [ "${actual}" = "1" ] #} - -##-------------------------------------------------------------------- -## updateStrategy - -#@test "server/StatefulSet: no storageClass on claim by default" { -# cd `chart_dir` -# local actual=$(helm template \ -# -x templates/server-ha-statefulset.yaml \ -# . | tee /dev/stderr | -# yq -r '.spec.volumeClaimTemplates[0].spec.storageClassName' | tee /dev/stderr) -# [ "${actual}" = "null" ] -#} - - -#@test "server/StatefulSet: can set storageClass" { -# cd `chart_dir` -# local actual=$(helm template \ -# -x templates/server-ha-statefulset.yaml \ -# --set 'server.storageClass=foo' \ -# . | tee /dev/stderr | -# yq -r '.spec.volumeClaimTemplates[0].spec.storageClassName' | tee /dev/stderr) -# [ "${actual}" = "foo" ] -#} -