Skip to content
Snippets Groups Projects
Verified Commit 3b997411 authored by Antoine R. Dumont's avatar Antoine R. Dumont
Browse files

Add tests around the loader-metadata chart

Refs. swh/infra/sysadm-environment#4794
parent fb2fcdd0
No related tags found
No related merge requests found
{{ if .Values.loader_metadata.enabled -}}
{{- $autoscalingConfig := $.Values.loader_metadata.autoScaling -}}
{{ if $autoscalingConfig }}
{{- $journalUser := .Values.loader_metadata.journalBrokers.user -}}
{{- $consumerGroup := .Values.loader_metadata.consumerGroup -}}
---
......@@ -23,14 +22,9 @@ spec:
- type: kafka
metadata:
bootstrapServers: {{ first .Values.loader_metadata.journalBrokers.hosts }}
{{ if $journalUser }}
consumerGroup: {{ $journalUser }}-{{ $consumerGroup }}
{{ else }}
consumerGroup: {{ $consumerGroup }}
{{ end }}
lagThreshold: {{ get $autoscalingConfig "lagThreshold" | default 1000 | quote }}
offsetResetPolicy: earliest
authenticationRef:
name: {{ .Values.loader_metadata.authenticationRef }}
{{ end }}
{{ end }}
name: keda-loader-metadata-trigger-authentication
{{- end -}}
{{ if .Values.loader_metadata.enabled -}}
{{- $journalUser := .Values.loader_metadata.journalBrokers.user -}}
apiVersion: v1
kind: Secret
metadata:
name: keda-loader-metadata-kafka-secrets
namespace: {{ .Values.namespace }}
type: Opaque
stringData:
sasl: "scram_sha512"
username: {{ $journalUser }}
tls: "enable"
---
apiVersion: keda.sh/v1alpha1
kind: TriggerAuthentication
metadata:
name: keda-loader-metadata-trigger-authentication
namespace: {{ .Values.namespace }}
spec:
secretTargetRef:
- parameter: sasl
name: keda-loader-metadata-kafka-secrets
key: sasl
- parameter: username
name: keda-loader-metadata-kafka-secrets
key: username
- parameter: tls
name: keda-loader-metadata-kafka-secrets
key: tls
- parameter: password
name: {{ .Values.loader_metadata.journalBrokers.secretName }}
key: BROKER_USER_PASSWORD
{{- end -}}
suite: test loader_metadata configmap deployment
templates:
- loader-metadata/configmap.yaml
tests:
- it: loader-metadata configmap should be deployed when activated
# set:
# loader_metadata.enabled: true
values:
- values/loader-metadata.yaml
asserts:
# - containsDocument:
# kind: ConfigMap
# apiVersion: v1
# name: loader-metadata-utils
# namespace: swh
- containsDocument:
kind: ConfigMap
apiVersion: v1
name: loader-metadata-template
namespace: swh
# not testable as there is a dot in the entry name
# - contains:
# path: data.config.yml
# content:
# debug: false
# count: 1
- it: loader metadata configmap namespace should be overridable
values:
- values/loader-metadata.yaml
set:
namespace: mynamespace
asserts:
- equal:
path: metadata.namespace
value: mynamespace
- hasDocuments:
count: 1
suite: test loader_metadata configmap utils deployment
templates:
- loader-metadata/configmap-utils.yaml
tests:
- it: loader-metadata configmap utils should be deployed when activated
values:
- values/loader-metadata.yaml
asserts:
- containsDocument:
kind: ConfigMap
apiVersion: v1
name: loader-metadata-utils
namespace: swh
- it: loader metadata configmap utils namespace should be overridable
values:
- values/loader-metadata.yaml
set:
namespace: mynamespace
asserts:
- equal:
path: metadata.namespace
value: mynamespace
- hasDocuments:
count: 1
suite: test loader_metadata deployment
templates:
- loader-metadata/configmap.yaml
- loader-metadata/configmap-utils.yaml
- loader-metadata/deployment.yaml
tests:
- it: Loader metadata deployment should be deployed with default values
templates:
- loader-metadata/deployment.yaml
values:
- ./values/loader-metadata.yaml
asserts:
- containsDocument:
kind: Deployment
apiVersion: apps/v1
namespace: swh
name: loader-metadata
- lengthEqual:
path: spec.template.spec.containers
count: 1
- equal:
path: spec.template.spec.containers[?(@.name == "loader_metadata")].image
value: image:version
- equal:
path: spec.template.spec.containers[?(@.name == "loader_metadata")].resources.requests.memory
value: "512Mi"
- equal:
path: spec.template.spec.containers[?(@.name == "loader_metadata")].resources.requests.cpu
value: "500m"
- equal:
path: spec.template.spec.containers[?(@.name == "loader_metadata")].env[?(@.name == "STATSD_HOST")].value
value: "prometheus-statsd-exporter"
- equal:
path: spec.template.spec.containers[?(@.name == "loader_metadata")].env[?(@.name == "STATSD_PORT")].value
value: "9125"
- equal:
path: spec.template.spec.containers[?(@.name == "loader_metadata")].env[?(@.name == "LOGLEVEL")].value
value: INFO
- equal:
path: spec.template.spec.containers[?(@.name == "loader_metadata")].env[?(@.name == "SWH_SENTRY_ENVIRONMENT")].value
value: production
- isNull:
path: spec.template.spec.containers[?(@.name == "loader_metadata")].env[?(@.name == "SWH_MAIN_PACKAGE")].value
- equal:
path: spec.template.spec.containers[?(@.name == "loader_metadata")].env[?(@.name == "SWH_SENTRY_DSN")].valueFrom.secretKeyRef.name
value: common-secrets
- equal:
path: spec.template.spec.containers[?(@.name == "loader_metadata")].env[?(@.name == "SWH_SENTRY_DSN")].valueFrom.secretKeyRef.key
value: loader-metadata-sentry-dsn
- it: Loader metadata deployment should be deployed with overriden values
templates:
- loader-metadata/deployment.yaml
set:
# global values
namespace: test
statsdExternalHost: testing-statsd-exporter
statsdPort: 5219
sentry:
environment: testing
swh_loader_metadata_image: test.image
swh_loader_metadata_image_version: test.version
# specific values
loader_metadata:
enabled: true
logLevel: DEBUG
storage:
host: test.storage.org
port: 2005
scheduler:
host: test.scheduler.org
port: 8005
consumerGroup: test.loader_metadata.journal_client
prefix: test.journal.objects
journalBrokers:
hosts:
- journal.test.org
user: ""
autoScaling:
maxReplicaCount: 2
requestedMemory: "256Mi"
requestedCpu: "250m"
sentrySwhPackage: test.swh.loader.metadata
asserts:
- containsDocument:
kind: Deployment
apiVersion: apps/v1
namespace: test
name: loader-metadata
- lengthEqual:
path: spec.template.spec.containers
count: 1
- equal:
path: spec.template.spec.containers[?(@.name == "loader_metadata")].image
value: test.image:test.version
- equal:
path: spec.template.spec.containers[?(@.name == "loader_metadata")].resources.requests.memory
value: "256Mi"
- equal:
path: spec.template.spec.containers[?(@.name == "loader_metadata")].resources.requests.cpu
value: "250m"
- equal:
path: spec.template.spec.containers[?(@.name == "loader_metadata")].env[?(@.name == "STATSD_HOST")].value
value: "testing-statsd-exporter"
- equal:
path: spec.template.spec.containers[?(@.name == "loader_metadata")].env[?(@.name == "STATSD_PORT")].value
value: "5219"
- equal:
path: spec.template.spec.containers[?(@.name == "loader_metadata")].env[?(@.name == "LOGLEVEL")].value
value: DEBUG
- equal:
path: spec.template.spec.containers[?(@.name == "loader_metadata")].env[?(@.name == "SWH_SENTRY_ENVIRONMENT")].value
value: testing
- equal:
path: spec.template.spec.containers[?(@.name == "loader_metadata")].env[?(@.name == "SWH_MAIN_PACKAGE")].value
value: test.swh.loader.metadata
- equal:
path: spec.template.spec.containers[?(@.name == "loader_metadata")].env[?(@.name == "SWH_SENTRY_DSN")].valueFrom.secretKeyRef.name
value: common-secrets
- equal:
path: spec.template.spec.containers[?(@.name == "loader_metadata")].env[?(@.name == "SWH_SENTRY_DSN")].valueFrom.secretKeyRef.key
value: loader-metadata-sentry-dsn
suite: test global loader metadata deployment
templates:
- loader-metadata/deployment.yaml
- loader-metadata/configmap.yaml
- loader-metadata/configmap-utils.yaml
- loader-metadata/keda-autoscaling.yaml
- loader-metadata/keda-secrets.yaml
tests:
- it: Metadata Loader is not deployed by default
values:
- ../values.yaml
asserts:
- hasDocuments:
count: 0
suite: test loader_metadata keda-scaling
tests:
- it: Loader metadata keda scaling deployment should be deployed
templates:
- loader-metadata/keda-autoscaling.yaml
values:
- ./values/loader-metadata.yaml
set:
namespace: test
loader_metadata:
enabled: true
logLevel: DEBUG
requestedMemory: "256Mi"
requestedCpu: "250m"
sentrySwhPackage: test.swh.loader.metadata
storage:
host: test.storage.org
port: 2005
scheduler:
host: test.scheduler.org
port: 8005
prefix: test.journal.objects
consumerGroup: test.consumerGroup
journalBrokers:
hosts:
- journal.test.org
user: testuser
secretName: test-secret-key
autoScaling:
poolInterval: 10
minReplicaCount: 10
maxReplicaCount: 50
lagThreshold: 200
asserts:
- containsDocument:
kind: ScaledObject
apiVersion: keda.sh/v1alpha1
namespace: test
name: loader-metadata-scaledobject
- equal:
path: spec.pollingInterval
value: 10
- equal:
path: spec.minReplicaCount
value: 10
- equal:
path: spec.maxReplicaCount
value: 50
- equal:
path: spec.triggers[?(@.type == "kafka")].metadata.bootstrapServers
value: journal.test.org
- equal:
path: spec.triggers[?(@.type == "kafka")].metadata.consumerGroup
value: testuser-test.consumerGroup
- equal:
path: spec.triggers[?(@.type == "kafka")].metadata.lagThreshold
value: "200"
suite: test loader_metadata keda-secrets
tests:
- it: Loader metadata keda secrets deployment should be deployed
templates:
- loader-metadata/keda-secrets.yaml
set:
namespace: test
values:
- ./values/loader-metadata.yaml
asserts:
- containsDocument:
kind: Secret
apiVersion: v1
namespace: test
name: keda-loader-metadata-kafka-secrets
- containsDocument:
kind: TriggerAuthentication
apiVersion: keda.sh/v1alpha1
namespace: test
name: keda-loader-metadata-trigger-authentication
loader_metadata:
enabled: true
storage:
host: storage.test.org
port: 2005
scheduler:
host: scheduler.test.org
port: 8005
consumerGroup: test.loader_metadata.journal_client
prefix: test.journal.objects
journalBrokers:
secretName: test-loader-metadata-secret
hosts:
- journal.test.org
user: test
autoScaling:
maxReplicaCount: 2
swh_loader_metadata_image: image
swh_loader_metadata_image_version: version
......@@ -105,7 +105,6 @@ storage_replayer:
loader_metadata:
enabled: false
authenticationRef: keda-storage-replayer-trigger-authentication
# storage:
# host: ...
# port: 5002
......
......@@ -350,10 +350,13 @@ loader_metadata:
consumerGroup: swh.loader_metadata.journal_client
prefix: swh.journal.objects
journalBrokers:
secretName: swh-archive-broker-secret
hosts:
- journal1.internal.staging.swh.network:9092
user: swh-archive-stg
autoScaling:
maxReplicaCount: 2
indexers:
enabled: true
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment