From aa1516b9ed6d169896a364ec001daa6d0c0d37e7 Mon Sep 17 00:00:00 2001
From: "Antoine R. Dumont (@ardumont)" <ardumont@softwareheritage.org>
Date: Tue, 23 May 2023 17:05:22 +0200
Subject: [PATCH] Add basic tests on checker-deposit chart

Refs. swh/infra/sysadm-environment#4886
---
 .../checker-deposit/configmap-utils.yaml      | 30 +++++++++++++++++++
 swh/templates/checker-deposit/configmap.yaml  | 29 ------------------
 swh/tests/checker_deposit_configmap_test.yaml | 24 +++++++++++++++
 .../checker_deposit_configmap_utils_test.yaml | 24 +++++++++++++++
 swh/tests/checker_deposit_global_test.yaml    | 13 ++++++++
 swh/tests/values/checker-deposit.yaml         | 11 +++++++
 6 files changed, 102 insertions(+), 29 deletions(-)
 create mode 100644 swh/templates/checker-deposit/configmap-utils.yaml
 create mode 100644 swh/tests/checker_deposit_configmap_test.yaml
 create mode 100644 swh/tests/checker_deposit_configmap_utils_test.yaml
 create mode 100644 swh/tests/checker_deposit_global_test.yaml
 create mode 100644 swh/tests/values/checker-deposit.yaml

diff --git a/swh/templates/checker-deposit/configmap-utils.yaml b/swh/templates/checker-deposit/configmap-utils.yaml
new file mode 100644
index 000000000..13f81b867
--- /dev/null
+++ b/swh/templates/checker-deposit/configmap-utils.yaml
@@ -0,0 +1,30 @@
+{{ if .Values.checker_deposit.enabled -}}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: checker-deposit-utils
+  namespace: {{ $.Values.namespace }}
+data:
+  pre-stop-idempotent.sh: |
+    #!/bin/bash
+
+    # pre-stop hook can be triggered multiple times but we want it to be applied only
+    # once so container can warm-shutdown properly.
+
+    # When celery receives multiple times the sigterm signal, this ends up doing an
+    # immediate shutdown which prevents long-standing tasks to finish properly.
+
+    set -ex
+
+    WITNESS_FILE=/tmp/already-stopped
+
+    # Seed awk with the number of nanoseconds since epoch
+    # and have it generate a number between 0 and 1
+    sleep $(date +%s%N | awk '{srand($1); print rand()}')
+
+    if [ ! -e $WITNESS_FILE ]; then
+      touch $WITNESS_FILE
+      kill 1
+    fi
+{{ end }}
diff --git a/swh/templates/checker-deposit/configmap.yaml b/swh/templates/checker-deposit/configmap.yaml
index eed4b347d..119617891 100644
--- a/swh/templates/checker-deposit/configmap.yaml
+++ b/swh/templates/checker-deposit/configmap.yaml
@@ -1,33 +1,4 @@
 {{ if .Values.checker_deposit.enabled -}}
----
-apiVersion: v1
-kind: ConfigMap
-metadata:
-  name: checker-deposit-utils
-  namespace: {{ $.Values.namespace }}
-data:
-  pre-stop-idempotent.sh: |
-    #!/bin/bash
-
-    # pre-stop hook can be triggered multiple times but we want it to be applied only
-    # once so container can warm-shutdown properly.
-
-    # When celery receives multiple times the sigterm signal, this ends up doing an
-    # immediate shutdown which prevents long-standing tasks to finish properly.
-
-    set -ex
-
-    WITNESS_FILE=/tmp/already-stopped
-
-    # Seed awk with the number of nanoseconds since epoch
-    # and have it generate a number between 0 and 1
-    sleep $(date +%s%N | awk '{srand($1); print rand()}')
-
-    if [ ! -e $WITNESS_FILE ]; then
-      touch $WITNESS_FILE
-      kill 1
-    fi
-
 ---
 apiVersion: v1
 kind: ConfigMap
diff --git a/swh/tests/checker_deposit_configmap_test.yaml b/swh/tests/checker_deposit_configmap_test.yaml
new file mode 100644
index 000000000..6daf4dddf
--- /dev/null
+++ b/swh/tests/checker_deposit_configmap_test.yaml
@@ -0,0 +1,24 @@
+suite: test checker_deposit configmap deployment
+templates:
+  - checker-deposit/configmap.yaml
+tests:
+  - it: checker-deposit configmap should be deployed when activated
+    values:
+      - values/checker-deposit.yaml
+    asserts:
+       - containsDocument:
+           kind: ConfigMap
+           apiVersion: v1
+           name: checker-deposit-template
+           namespace: swh
+  - it: checker-deposit configmap namespace should be overridable
+    values:
+      - values/checker-deposit.yaml
+    set:
+      namespace: mynamespace
+    asserts:
+      - equal:
+          path: metadata.namespace
+          value: mynamespace
+      - hasDocuments:
+          count: 1
diff --git a/swh/tests/checker_deposit_configmap_utils_test.yaml b/swh/tests/checker_deposit_configmap_utils_test.yaml
new file mode 100644
index 000000000..96d927ea9
--- /dev/null
+++ b/swh/tests/checker_deposit_configmap_utils_test.yaml
@@ -0,0 +1,24 @@
+suite: test checker_deposit configmap utils deployment
+templates:
+  - checker-deposit/configmap-utils.yaml
+tests:
+  - it: checker-deposit configmap utils should be deployed when activated
+    values:
+      - values/checker-deposit.yaml
+    asserts:
+      - containsDocument:
+           kind: ConfigMap
+           apiVersion: v1
+           name: checker-deposit-utils
+           namespace: swh
+  - it: checker deposit configmap utils namespace should be overridable
+    values:
+      - values/checker-deposit.yaml
+    set:
+      namespace: mynamespace
+    asserts:
+      - equal:
+          path: metadata.namespace
+          value: mynamespace
+      - hasDocuments:
+          count: 1
diff --git a/swh/tests/checker_deposit_global_test.yaml b/swh/tests/checker_deposit_global_test.yaml
new file mode 100644
index 000000000..2e3b3f835
--- /dev/null
+++ b/swh/tests/checker_deposit_global_test.yaml
@@ -0,0 +1,13 @@
+suite: test global checker deposit deployment
+templates:
+  - checker-deposit/deployment.yaml
+  - checker-deposit/configmap.yaml
+  - checker-deposit/configmap-utils.yaml
+  - checker-deposit/keda-autoscaling.yaml
+tests:
+  - it: Checker deposit is not deployed by default
+    values:
+      - ../values.yaml
+    asserts:
+      - hasDocuments:
+          count: 0
diff --git a/swh/tests/values/checker-deposit.yaml b/swh/tests/values/checker-deposit.yaml
new file mode 100644
index 000000000..a184cad2f
--- /dev/null
+++ b/swh/tests/values/checker-deposit.yaml
@@ -0,0 +1,11 @@
+checker_deposit:
+  enabled: true
+  storage:
+    host: storage.example.org
+    port: 5002
+  deposit:
+    host: deposit.example.org
+  amqp:
+    host: scheduler.example.org
+  autoScaling:
+    maxReplicaCount: 2
-- 
GitLab