Add helm tests for rabbitmq and redis (#2165)

# What this PR does

## Which issue(s) this PR fixes

## Checklist

- [ ] Unit, integration, and e2e (if applicable) tests updated
- [ ] Documentation added (or `pr:no public docs` PR label added if not
required)
- [ ] `CHANGELOG.md` updated (or `pr:no changelog` PR label added if not
required)
This commit is contained in:
Ildar Iskhakov 2023-06-13 09:45:07 +08:00 committed by GitHub
parent fd9904cd2e
commit 30b8401f03
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 393 additions and 0 deletions

View file

@ -23,6 +23,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fix receive channel filter in alert groups API [#2140](https://github.com/grafana/oncall/pull/2140)
- Helm chart: Fix usage of `env` settings as map;
Fix usage of `mariadb.auth.database` and `mariadb.auth.username` for MYSQL env variables by @alexintech [#2146](https://github.com/grafana/oncall/pull/2146)
### Added
- Helm chart: Add unittests for rabbitmq and redis [2165](https://github.com/grafana/oncall/pull/2165)
## v1.2.41 (2023-06-08)

View file

@ -0,0 +1,254 @@
suite: test Rabbitmq configs for deployments
templates:
- engine/deployment.yaml
- engine/job-migrate.yaml
- celery/deployment-celery.yaml
- secrets.yaml
release:
name: oncall
tests:
- it: rabbitmq.enabled=true -> should use default values from rabbitmq subchart
templates:
- engine/deployment.yaml
- engine/job-migrate.yaml
- celery/deployment-celery.yaml
set:
broker.type: rabbitmq
rabbitmq.enabled: true
asserts:
- contains:
path: spec.template.spec.containers[0].env
content:
name: BROKER_TYPE
value: rabbitmq
- contains:
path: spec.template.spec.containers[0].env
content:
name: RABBITMQ_USERNAME
value: user
- contains:
path: spec.template.spec.containers[0].env
content:
name: BROKER_TYPE
value: rabbitmq
- contains:
path: spec.template.spec.containers[0].env
content:
name: RABBITMQ_PASSWORD
valueFrom:
secretKeyRef:
key: rabbitmq-password
name: oncall-rabbitmq
- contains:
path: spec.template.spec.containers[0].env
content:
name: RABBITMQ_HOST
value: oncall-rabbitmq
- contains:
path: spec.template.spec.containers[0].env
content:
name: RABBITMQ_PORT
value: "5672"
- contains:
path: spec.template.spec.containers[0].env
content:
name: RABBITMQ_PROTOCOL
value: amqp
- contains:
path: spec.template.spec.containers[0].env
content:
name: RABBITMQ_VHOST
value: ""
- it: rabbitmq.enabled=true -> should use custom auth values from rabbitmq subchart
templates:
- engine/deployment.yaml
- engine/job-migrate.yaml
- celery/deployment-celery.yaml
set:
broker.type: rabbitmq
rabbitmq.enabled: true
rabbitmq:
auth:
username: test_user
password: test_password
asserts:
- contains:
path: spec.template.spec.containers[0].env
content:
name: BROKER_TYPE
value: rabbitmq
- contains:
path: spec.template.spec.containers[0].env
content:
name: RABBITMQ_USERNAME
value: user
- contains:
path: spec.template.spec.containers[0].env
content:
name: RABBITMQ_PASSWORD
valueFrom:
secretKeyRef:
key: rabbitmq-password
name: oncall-rabbitmq
- contains:
path: spec.template.spec.containers[0].env
content:
name: RABBITMQ_HOST
value: oncall-rabbitmq
- contains:
path: spec.template.spec.containers[0].env
content:
name: RABBITMQ_PORT
value: "5672"
- contains:
path: spec.template.spec.containers[0].env
content:
name: RABBITMQ_PROTOCOL
value: amqp
- contains:
path: spec.template.spec.containers[0].env
content:
name: RABBITMQ_VHOST
value: ""
- it: rabbitmq.enabled=false -> should fail if not externalRabbitmq.existingSecret or not externalRabbitmq.password
templates:
- engine/deployment.yaml
- engine/job-migrate.yaml
- celery/deployment-celery.yaml
set:
broker.type: rabbitmq
rabbitmq.enabled: false
asserts:
- failedTemplate:
errorMessage: externalRabbitmq.password is required if not rabbitmq.enabled and not externalRabbitmq.existingSecret
template: secrets.yaml
- it: rabbitmq.enabled=false -> should use internal custom values
templates:
- engine/deployment.yaml
- engine/job-migrate.yaml
- celery/deployment-celery.yaml
set:
broker.type: rabbitmq
rabbitmq.enabled: false
externalRabbitmq:
host: custom-host
port: custom-port
user: custom-user
password: custom-password
protocol: custom-protocol
vhost: custom-vhost
asserts:
- contains:
path: spec.template.spec.containers[0].env
content:
name: BROKER_TYPE
value: rabbitmq
- contains:
path: spec.template.spec.containers[0].env
content:
name: RABBITMQ_USERNAME
value: custom-user
- contains:
path: spec.template.spec.containers[0].env
content:
name: RABBITMQ_HOST
value: custom-host
- contains:
path: spec.template.spec.containers[0].env
content:
name: RABBITMQ_PORT
value: custom-port
- contains:
path: spec.template.spec.containers[0].env
content:
name: RABBITMQ_PROTOCOL
value: custom-protocol
- contains:
path: spec.template.spec.containers[0].env
content:
name: RABBITMQ_VHOST
value: custom-vhost
- contains:
path: spec.template.spec.containers[0].env
content:
name: RABBITMQ_PASSWORD
valueFrom:
secretKeyRef:
key: password
name: oncall-rabbitmq-external
- containsDocument:
kind: Secret
apiVersion: v1
name: oncall-rabbitmq-external
template: secrets.yaml
- equal:
path: data.rabbitmq-password
value: custom-password
decodeBase64: true
documentIndex: 1
template: secrets.yaml
- it: rabbitmq.enabled=false -> should use default internal values and auth from existing secret
templates:
- engine/deployment.yaml
- engine/job-migrate.yaml
- celery/deployment-celery.yaml
set:
broker.type: rabbitmq
rabbitmq.enabled: false
externalRabbitmq:
existingSecret: existing-secret
passwordKey: password-key
asserts:
- contains:
path: spec.template.spec.containers[0].env
content:
name: RABBITMQ_PASSWORD
valueFrom:
secretKeyRef:
name: existing-secret
key: password-key
- contains:
path: spec.template.spec.containers[0].env
content:
name: BROKER_TYPE
value: rabbitmq
- contains:
path: spec.template.spec.containers[0].env
content:
name: RABBITMQ_USERNAME
valueFrom:
secretKeyRef:
key: username
name: existing-secret
- contains:
path: spec.template.spec.containers[0].env
content:
name: RABBITMQ_PASSWORD
valueFrom:
secretKeyRef:
key: password-key
name: existing-secret
- contains:
path: spec.template.spec.containers[0].env
content:
name: RABBITMQ_HOST
value: oncall-rabbitmq
- contains:
path: spec.template.spec.containers[0].env
content:
name: RABBITMQ_PORT
value: "5672"
- contains:
path: spec.template.spec.containers[0].env
content:
name: RABBITMQ_PROTOCOL
value: amqp
- contains:
path: spec.template.spec.containers[0].env
content:
name: RABBITMQ_VHOST
value: ""

View file

@ -0,0 +1,135 @@
suite: test Redis configs for deployments
templates:
- engine/deployment.yaml
- engine/job-migrate.yaml
- celery/deployment-celery.yaml
- secrets.yaml
release:
name: oncall
tests:
- it: redis.enabled=true -> should use default values from redis subchart
templates:
- engine/deployment.yaml
- engine/job-migrate.yaml
- celery/deployment-celery.yaml
set:
broker.type: redis
redis.enabled: true
asserts:
- contains:
path: spec.template.spec.containers[0].env
content:
name: BROKER_TYPE
value: redis
- contains:
path: spec.template.spec.containers[0].env
content:
name: REDIS_HOST
value: oncall-redis-master
- contains:
path: spec.template.spec.containers[0].env
content:
name: REDIS_PORT
value: "6379"
- contains:
path: spec.template.spec.containers[0].env
content:
name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
key: redis-password
name: oncall-redis
- it: redis.enabled=true -> should use custom auth values from redis subchart
templates:
- engine/deployment.yaml
- engine/job-migrate.yaml
- celery/deployment-celery.yaml
set:
broker.type: redis
redis.enabled: true
rabbitmq:
auth:
username: test_user
password: test_password
asserts:
- contains:
path: spec.template.spec.containers[0].env
content:
name: BROKER_TYPE
value: redis
- contains:
path: spec.template.spec.containers[0].env
content:
name: REDIS_HOST
value: oncall-redis-master
- contains:
path: spec.template.spec.containers[0].env
content:
name: REDIS_PORT
value: "6379"
- contains:
path: spec.template.spec.containers[0].env
content:
name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
key: redis-password
name: oncall-redis
- it: redis.enabled=false -> should fail if not externalRabbitmq.existingSecret or not externalRabbitmq.password
templates:
- engine/deployment.yaml
- engine/job-migrate.yaml
- celery/deployment-celery.yaml
set:
broker.type: redis
rabbitmq.enabled: false
redis.enabled: false
asserts:
- failedTemplate:
errorMessage: externalRedis.password is required if not redis.enabled
template: secrets.yaml
- it: redis.enabled=false -> should use internal custom values
templates:
- engine/deployment.yaml
- engine/job-migrate.yaml
- celery/deployment-celery.yaml
set:
broker.type: redis
rabbitmq.enabled: false
redis.enabled: false
externalRedis:
host: custom-host
password: custom-password
asserts:
- contains:
path: spec.template.spec.containers[0].env
content:
name: BROKER_TYPE
value: redis
- contains:
path: spec.template.spec.containers[0].env
content:
name: REDIS_HOST
value: custom-host
- contains:
path: spec.template.spec.containers[0].env
content:
name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
key: redis-password
name: oncall-redis-external
- containsDocument:
kind: Secret
apiVersion: v1
name: oncall-redis-external
template: secrets.yaml
- equal:
path: data.redis-password
value: custom-password
decodeBase64: true
documentIndex: 1
template: secrets.yaml