Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions varnish-cache/test/unit/deployment.bats
Original file line number Diff line number Diff line change
Expand Up @@ -102,3 +102,36 @@ rollingUpdate:

[[ "${actual}" == *"'server.extraVolumeClaimTemplates' cannot be enabled"* ]]
}

@test "Service/externalTrafficPolicy: defaults to Cluster" {
cd "$(chart_dir)"

local object=$((helm template \
--namespace default \
--show-only templates/service.yaml \
. || echo "---") |
tee -a /dev/stderr)

local actual=$(echo "$object" |
yq -r -c '.spec.externalTrafficPolicy' |
tee -a /dev/stderr)

[ "${actual}" == "Cluster" ]
}

@test "Service/externalTrafficPolicy: can be changed by user, for example Local" {
cd "$(chart_dir)"

local object=$((helm template \
--set 'server.service.externalTrafficPolicy=Local' \
--namespace default \
--show-only templates/service.yaml \
. || echo "---") |
tee -a /dev/stderr)

local actual=$(echo "$object" |
yq -r -c '.spec.externalTrafficPolicy' |
tee -a /dev/stderr)

[ "${actual}" == "Local" ]
}
29 changes: 24 additions & 5 deletions varnish-enterprise/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,31 @@ Create chart name and version as used by the chart label.
{{/*
Sets up the Varnish Enterprise image and its overrides (if any)
*/}}
{{- define "varnish-enterprise.image" }}
{{- $base := .base | default dict }}
{{- $image := .image | default dict }}
image: "{{- if eq $image.repository "-" -}}{{ $base.repository }}{{ else }}{{ $image.repository }}{{ end }}:{{- if eq $image.tag "-" }}{{ default .Chart.AppVersion $base.tag }}{{ else }}{{ default $.Chart.AppVersion $image.tag }}{{ end }}"
{{- define "varnish-enterprise.image" -}}
{{- $base := .base | default dict -}}
{{- $image := .image | default dict -}}

{{- $repoType := .Values.global.repoType | default "" -}}
{{- $calculatedRepo := $base.repository -}}

{{- if eq $repoType "public-enterprise" }}
{{- $calculatedRepo = "varnish/enterprise" }}
{{- else if eq $repoType "private-enterprise" }}
{{- $calculatedRepo = "quay.io/varnish-software/varnish-plus" }}
{{ end }}
image: "{{- if eq $image.repository "-" -}}
{{ $calculatedRepo }}
{{- else -}}
{{ $image.repository }} y
{{- end -}}
:
{{- if eq $image.tag "-" }}
{{ default .Chart.AppVersion $base.tag }}
{{- else -}}
{{ default $.Chart.AppVersion $image.tag }}
{{- end -}}"
imagePullPolicy: {{ if eq $image.pullPolicy "-" }}{{ $base.pullPolicy }}{{ else }}{{ $image.pullPolicy }}{{ end }}
{{- end }}
{{- end -}}

{{/*
Converts size string (e.g. 10Mi or 10M) to a number
Expand Down
16 changes: 16 additions & 0 deletions varnish-enterprise/test/unit/_helpers.bash
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,22 @@ chart_dir() {
echo "${BATS_TEST_DIRNAME}"/../..
}

helm_template_compare() {
local valuefile="${BATS_TMPDIR}/values-${BATS_TEST_NUMBER}"
echo "$1" > "$valuefile"
local templatefile="$2"
local jqpattern="$3"
local expected_result="$4"

local result=$(helm template --namespace default\
--values "$valuefile" \
--show-only "$templatefile" "$(chart_dir)" |
yq -c "$jqpattern"
)

[ "$result" == "$expected_result" ]
}

app_version() {
yq -r '.appVersion' < "${BATS_TEST_DIRNAME}"/../../Chart.yaml
}
33 changes: 33 additions & 0 deletions varnish-enterprise/test/unit/deployment.bats
Original file line number Diff line number Diff line change
Expand Up @@ -152,3 +152,36 @@ rollingUpdate:

[[ "${actual}" == *"'server.extraVolumeClaimTemplates' cannot be enabled"* ]]
}

@test "Service/externalTrafficPolicy: defaults to Cluster" {
cd "$(chart_dir)"

local object=$((helm template \
--namespace default \
--show-only templates/service.yaml \
. || echo "---") |
tee -a /dev/stderr)

local actual=$(echo "$object" |
yq -r -c '.spec.externalTrafficPolicy' |
tee -a /dev/stderr)

[ "${actual}" == "Cluster" ]
}

@test "Service/externalTrafficPolicy: can be changed by user, for example Local" {
cd "$(chart_dir)"

local object=$((helm template \
--set 'server.service.externalTrafficPolicy=Local' \
--namespace default \
--show-only templates/service.yaml \
. || echo "---") |
tee -a /dev/stderr)

local actual=$(echo "$object" |
yq -r -c '.spec.externalTrafficPolicy' |
tee -a /dev/stderr)

[ "${actual}" == "Local" ]
}
27 changes: 27 additions & 0 deletions varnish-enterprise/test/unit/repotype.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/usr/bin/env bats

load _helpers

@test "repoType: default (no global.repoType set)" {
helm_template_compare \
"global: {}" \
"templates/deployment.yaml" \
'.spec.template.spec.containers[0].image' \
"\"quay.io/varnish-software/varnish-plus:$(app_version)\""
}

@test "repoType: public-enterprise" {
helm_template_compare \
"global: {repoType: public-enterprise}" \
"templates/deployment.yaml" \
'.spec.template.spec.containers[0].image' \
"\"varnish/enterprise:$(app_version)\""
}

@test "repoType: private-enterprise" {
helm_template_compare \
"global: {repoType: private-enterprise}" \
"templates/deployment.yaml" \
'.spec.template.spec.containers[0].image' \
"\"quay.io/varnish-software/varnish-plus:$(app_version)\""
}
34 changes: 22 additions & 12 deletions varnish-enterprise/test/unit/service.bats
Original file line number Diff line number Diff line change
Expand Up @@ -4,29 +4,37 @@ load _helpers

@test "Service: headless TLS service uses server TLS port instead of non-existent server.service.tls.port (non-regression test)" {
cd "$(chart_dir)"
local actual=$((helm template \
run helm template \
--set 'server.service.type=ClusterIP' \
--set 'server.service.clusterIP=None' \
--set 'server.service.https.enabled=true' \
--set 'server.tls.enabled=true' \
--set 'server.tls.port=443' \
--namespace default \
--show-only templates/service.yaml \
. || echo "---") | tee -a /dev/stderr |
yq -r '.spec.ports[1].port' | tee -a /dev/stderr)
[ "${actual}" = "443" ]
.
echo "$output"

[ "${status}" == 0 ]

local port=$( echo "$output" | yq -r '.spec.ports[1].port' )

echo Port: $port
[ "${port}" == "443" ]
}

@test "Service/externalTrafficPolicy: defaults to Cluster" {
cd "$(chart_dir)"

local object=$((helm template \
run helm template \
--namespace default \
--show-only templates/service.yaml \
. || echo "---") |
tee -a /dev/stderr)
.
echo "$output"

[ "${status}" == 0 ]

local actual=$(echo "$object" |
local actual=$(echo "$output" |
yq -r -c '.spec.externalTrafficPolicy' |
tee -a /dev/stderr)

Expand All @@ -36,14 +44,16 @@ load _helpers
@test "Service/externalTrafficPolicy: can be changed by user, for example Local" {
cd "$(chart_dir)"

local object=$((helm template \
run helm template \
--set 'server.service.externalTrafficPolicy=Local' \
--namespace default \
--show-only templates/service.yaml \
. || echo "---") |
tee -a /dev/stderr)
.
echo "$output"

[ "${status}" == 0 ]

local actual=$(echo "$object" |
local actual=$(echo "$output" |
yq -r -c '.spec.externalTrafficPolicy' |
tee -a /dev/stderr)

Expand Down
8 changes: 7 additions & 1 deletion varnish-enterprise/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,9 @@ global:
# Configures the NATS internal cluster domain name. Only change if NATS is deployed
# on a separate cluster.
clusterDomain: "cluster.local"

# Sets the option of a different repo than the quay.io image
repoType: "private-enterprise"

serviceAccount:
# Specifies whether a service account should be created
Expand Down Expand Up @@ -544,7 +547,7 @@ server:
# Sets the image and tag to use to deploy Varnish Enterprise.
# If tag is blank, appVersion is used.
image:
repository: "quay.io/varnish-software/varnish-plus"
repository: "-"
pullPolicy: IfNotPresent
tag: ""

Expand Down Expand Up @@ -909,6 +912,9 @@ server:
agent:
enabled: false

# Sets the option of a different repo than the quay.io image below.
# repoType: "private-enterprise"

# Sets the image and tag to use to deploy Varnish Controller Agent sidecar. The image
# should be the same version as varnish-controller.
image:
Expand Down