From b02b6ceaebc83bfc04545dd547f6c8758a7d2658 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Thu, 29 Aug 2024 10:21:54 +0200
Subject: [PATCH] OZG-6301: OZG-6468: Fix health checks. Fix startup
 dependencies.

---
 alfa-client/apps/alfa-e2e/docker-compose.yml  | 39 +++++++++++++++++--
 .../apps/alfa-e2e/start-e2e-environment.sh    | 26 ++++++-------
 2 files changed, 48 insertions(+), 17 deletions(-)

diff --git a/alfa-client/apps/alfa-e2e/docker-compose.yml b/alfa-client/apps/alfa-e2e/docker-compose.yml
index f2bb797d43..3308cfaeb2 100644
--- a/alfa-client/apps/alfa-e2e/docker-compose.yml
+++ b/alfa-client/apps/alfa-e2e/docker-compose.yml
@@ -28,6 +28,11 @@ services:
       - 27018:27017
     environment:
       - MONGODB_EXTRA_FLAGS=--profile=2
+    healthcheck:
+      test: echo 'db.runCommand("ping").ok' | mongosh localhost:27017/test --quiet
+      interval: 10s
+      timeout: 10s
+      retries: 5
 
   vorgang-manager:
     image: docker.ozg-sh.de/vorgang-manager:${VORGANG_MANAGER_DOCKER_IMAGE:-snapshot-latest}
@@ -105,6 +110,7 @@ services:
     depends_on:
       - vorgang-manager
       - user-manager
+      - zufi-manager
 
   elastic:
     image: docker.elastic.co/elasticsearch/elasticsearch:8.3.2
@@ -162,7 +168,8 @@ services:
       - 9092:8080
       - 9000:9000
     depends_on:
-      - mongodb
+      mongodb:
+        condition: service_healthy
 
   zufi-manager-pvog:
     #TODO Ändere mich auf snapshot-latest
@@ -175,8 +182,10 @@ services:
       - OZGCLOUD_PVOG_ENDPOINTS_VERWALTUNGSOBJEKTE_PATH=/v2/verwaltungsobjekte
       - OZGCLOUD_PVOG_URL=http://smocker:8080
     depends_on:
-      - mongodb
-      - smocker
+      mongodb:
+        condition: service_healthy
+      smocker-curl:
+        condition: service_completed_successfully
 
   zufi-manager:
     #TODO Ändere mich auf snapshot-latest
@@ -189,10 +198,32 @@ services:
     ports:
       - 19090:9190
     depends_on:
-      - zufi-manager-pvog
+      mongodb:
+        condition: service_healthy
+      zufi-manager-pvog:
+        condition: service_completed_successfully
 
   smocker:
     image: thiht/smocker
     ports:
       - 7080:8080
       - 7081:8081
+    healthcheck:
+      test: [
+             'CMD-SHELL',
+             "wget --spider localhost:8081/version",
+      ]
+      interval: 5s
+      timeout: 5s
+      retries: 5
+
+  smocker-curl:
+    image: alpine/curl
+    volumes:
+      - ./src/fixtures/smocker:/mocks:ro
+    command: >
+      sh -c "curl -X POST http://smocker:8081/mocks -H 'Content-Type: application/x-yaml' --data-binary @/mocks/pvog-mock.yaml &&
+            curl -X POST http://smocker:8081/mocks -H 'Content-Type: application/x-yaml' --data-binary @/mocks/mocks.yaml"
+    depends_on:
+      smocker:
+        condition: service_healthy
\ No newline at end of file
diff --git a/alfa-client/apps/alfa-e2e/start-e2e-environment.sh b/alfa-client/apps/alfa-e2e/start-e2e-environment.sh
index 35b319e02a..6577b9ea43 100755
--- a/alfa-client/apps/alfa-e2e/start-e2e-environment.sh
+++ b/alfa-client/apps/alfa-e2e/start-e2e-environment.sh
@@ -66,7 +66,7 @@ echo
 echo
 echo "Starting VorgangManager and Alfa Server for normal operations."
 
-$DOCKER_COMPOSE_CMD up -d vorgang-manager alfa
+$DOCKER_COMPOSE_CMD up -d vorgang-manager alfa zufi-manager zufi-manager-pvog
 
 waitForServerStarted() {
 	($DOCKER_COMPOSE_CMD logs | awk 'BEGIN{RS="\0"} /Started AlfaServerApplication/ && /Started VorgangManagerServerApplication/ { exit 1 }')
@@ -81,19 +81,19 @@ do
 done
 echo
 
-echo
-echo "Init smocker"
-while [ $(curl -sw '%{http_code}' "http://localhost:7081/version" -o /dev/null) -ne 200 ]; do
-	echo -n "."
-    sleep 1
-done
+#echo
+#echo "Init smocker"
+#while [ $(curl -sw '%{http_code}' "http://localhost:7081/version" -o /dev/null) -ne 200 ]; do
+#	echo -n "."
+#    sleep 1
+#done
 
-curl -X POST http://localhost:7081/mocks -H 'Content-Type: application/x-yaml' --data-binary @src/fixtures/smocker/mocks.yaml
-curl -X POST http://localhost:7081/mocks -H 'Content-Type: application/x-yaml' --data-binary @src/fixtures/smocker/pvog-mock.yaml
+#curl -X POST http://localhost:7081/mocks -H 'Content-Type: application/x-yaml' --data-binary @src/fixtures/smocker/mocks.yaml
+#curl -X POST http://localhost:7081/mocks -H 'Content-Type: application/x-yaml' --data-binary @src/fixtures/smocker/pvog-mock.yaml
 
-echo
-echo "Start Zufi"
-$DOCKER_COMPOSE_CMD up zufi-manager zufi-manager-pvog --wait
+#echo
+#echo "Start Zufi"
+#$DOCKER_COMPOSE_CMD up zufi-manager zufi-manager-pvog --wait
 
-echo
+#echo
 echo "done."
\ No newline at end of file
-- 
GitLab