From fc30ae877e577950b109053be5af0056d9df6c59 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Mon, 3 Sep 2018 08:58:19 -0700 Subject: [PATCH] test/unit: test DisruptionBudget --- templates/server-disruptionbudget.yaml | 2 +- .../{server.bats => server-configmap.bats} | 0 test/unit/server-disruptionbudget.bats | 63 +++++++++++++++++++ values.yaml | 2 +- 4 files changed, 65 insertions(+), 2 deletions(-) rename test/unit/{server.bats => server-configmap.bats} (100%) create mode 100755 test/unit/server-disruptionbudget.bats diff --git a/templates/server-disruptionbudget.yaml b/templates/server-disruptionbudget.yaml index 252b0c6..0470de7 100644 --- a/templates/server-disruptionbudget.yaml +++ b/templates/server-disruptionbudget.yaml @@ -1,6 +1,6 @@ # PodDisruptionBudget to prevent degrading the server cluster through # voluntary cluster changes. -{{- if (and (default .Values.server.enabled .Values.global.enabled) (default .Values.server.disruptionBudget.enabled .Values.global.enabled)) }} +{{- if (and .Values.server.disruptionBudget.enabled (or (and (ne (.Values.server.enabled | toString) "-") .Values.server.enabled) (and (eq (.Values.server.enabled | toString) "-") .Values.global.enabled))) }} apiVersion: policy/v1beta1 kind: PodDisruptionBudget metadata: diff --git a/test/unit/server.bats b/test/unit/server-configmap.bats similarity index 100% rename from test/unit/server.bats rename to test/unit/server-configmap.bats diff --git a/test/unit/server-disruptionbudget.bats b/test/unit/server-disruptionbudget.bats new file mode 100755 index 0000000..c2f2e98 --- /dev/null +++ b/test/unit/server-disruptionbudget.bats @@ -0,0 +1,63 @@ +#!/usr/bin/env bats + +load _helpers + +@test "server/DisruptionBudget: enabled by default" { + cd `chart_dir` + local actual=$(helm template \ + -x templates/server-disruptionbudget.yaml \ + . | tee /dev/stderr | + yq 'length > 0' | tee /dev/stderr) + [ "${actual}" = "true" ] +} + +@test "server/DisruptionBudget: enable with global.enabled false" { + cd `chart_dir` + local actual=$(helm template \ + -x templates/server-disruptionbudget.yaml \ + --set 'global.enabled=false' \ + --set 'server.enabled=true' \ + . | tee /dev/stderr | + yq 'length > 0' | tee /dev/stderr) + [ "${actual}" = "true" ] +} + +@test "server/DisruptionBudget: disable with server.enabled" { + cd `chart_dir` + local actual=$(helm template \ + -x templates/server-disruptionbudget.yaml \ + --set 'server.enabled=false' \ + . | tee /dev/stderr | + yq 'length > 0' | tee /dev/stderr) + [ "${actual}" = "false" ] +} + +@test "server/DisruptionBudget: disable with server.disruptionBudget.enabled" { + cd `chart_dir` + local actual=$(helm template \ + -x templates/server-disruptionbudget.yaml \ + --set 'server.disruptionBudget.enabled=false' \ + . | tee /dev/stderr | + yq 'length > 0' | tee /dev/stderr) + [ "${actual}" = "false" ] +} + +@test "server/DisruptionBudget: disable with global.enabled" { + cd `chart_dir` + local actual=$(helm template \ + -x templates/server-disruptionbudget.yaml \ + --set 'global.enabled=false' \ + . | tee /dev/stderr | + yq 'length > 0' | tee /dev/stderr) + [ "${actual}" = "false" ] +} + +@test "server/DisruptionBudget: correct maxUnavailable with n=3" { + cd `chart_dir` + local actual=$(helm template \ + -x templates/server-disruptionbudget.yaml \ + --set 'server.replicas=3' \ + . | tee /dev/stderr | + yq '.spec.maxUnavailable' | tee /dev/stderr) + [ "${actual}" = "0" ] +} diff --git a/values.yaml b/values.yaml index 0dbdaa3..1b31abc 100644 --- a/values.yaml +++ b/values.yaml @@ -45,7 +45,7 @@ server: # disruptionBudget enables the creation of a PodDisruptionBudget to # prevent voluntary degrading of the Consul server cluster. disruptionBudget: - enabled: null + enabled: true # maxUnavailable will default to (n/2)-1 where n is the number of # replicas. If you'd like a custom value, you can specify an override here.