From 13fb6028bfa62d32ab81944bc1e053ca6b5cb76f Mon Sep 17 00:00:00 2001 From: Ildar Iskhakov Date: Tue, 13 Jun 2023 00:02:45 +0800 Subject: [PATCH 1/3] Add helm rabbitmq tests --- helm/oncall/tests/rabbitmq_env_test.yaml | 256 +++++++++++++++++++++++ 1 file changed, 256 insertions(+) create mode 100644 helm/oncall/tests/rabbitmq_env_test.yaml diff --git a/helm/oncall/tests/rabbitmq_env_test.yaml b/helm/oncall/tests/rabbitmq_env_test.yaml new file mode 100644 index 000000000..69431530a --- /dev/null +++ b/helm/oncall/tests/rabbitmq_env_test.yaml @@ -0,0 +1,256 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json + +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: "" \ No newline at end of file From 62df256bb663628895e168a1776891a46d7d5015 Mon Sep 17 00:00:00 2001 From: Ildar Iskhakov Date: Tue, 13 Jun 2023 00:15:43 +0800 Subject: [PATCH 2/3] Add helm redis tests --- helm/oncall/tests/rabbitmq_env_test.yaml | 2 - helm/oncall/tests/redis_env_test.yaml | 135 +++++++++++++++++++++++ 2 files changed, 135 insertions(+), 2 deletions(-) create mode 100644 helm/oncall/tests/redis_env_test.yaml diff --git a/helm/oncall/tests/rabbitmq_env_test.yaml b/helm/oncall/tests/rabbitmq_env_test.yaml index 69431530a..438d2d450 100644 --- a/helm/oncall/tests/rabbitmq_env_test.yaml +++ b/helm/oncall/tests/rabbitmq_env_test.yaml @@ -1,5 +1,3 @@ -# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json - suite: test Rabbitmq configs for deployments templates: - engine/deployment.yaml diff --git a/helm/oncall/tests/redis_env_test.yaml b/helm/oncall/tests/redis_env_test.yaml new file mode 100644 index 000000000..b1bc48713 --- /dev/null +++ b/helm/oncall/tests/redis_env_test.yaml @@ -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 From 5af954a729d142e0463a08ba1f646fc0aa6bfc04 Mon Sep 17 00:00:00 2001 From: Ildar Iskhakov Date: Tue, 13 Jun 2023 09:16:19 +0800 Subject: [PATCH 3/3] Update CHANGELOG.md --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e706b590..61107688a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,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)