From f013090055e0a32bfe89072b65cf3bab1d6d31e4 Mon Sep 17 00:00:00 2001
From: "agbarneo@optaresolutions.com" <agbarneo@optaresolutions.com>
Date: Mon, 21 Oct 2024 14:31:00 +0000
Subject: [PATCH] Fixed some error

---
 src/service/.gitlab-ci.yml              |  6 ++++--
 src/service/Dockerfile                  |  3 +++
 src/tests/tools/mock_qkd_nodes/start.sh | 20 +++++++++-----------
 3 files changed, 16 insertions(+), 13 deletions(-)

diff --git a/src/service/.gitlab-ci.yml b/src/service/.gitlab-ci.yml
index e0ff82a12..0ca6cfa9b 100644
--- a/src/service/.gitlab-ci.yml
+++ b/src/service/.gitlab-ci.yml
@@ -49,6 +49,7 @@ unit_test service:
   before_script:
     - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
     - if docker network list | grep teraflowbridge; then echo "teraflowbridge is already created"; else docker network create --driver=bridge teraflowbridge; fi
+    - pip install flask
     - |
       # Context-related cleanup
       if docker container ls | grep crdb; then docker rm -f crdb; else echo "CockroachDB container is not in the system"; fi
@@ -151,8 +152,9 @@ unit_test service:
       docker logs $IMAGE_NAME
 
     # Mock QKD Nodes Deployment
+    - echo "Starting stage: deploy_mock_nodes"
+    - pip install flask  # Install Flask to ensure it is available
     - |
-      echo "Starting stage: deploy_mock_nodes"
       for port in 11111 22222 33333; do
         if lsof -i:$port >/dev/null 2>&1; then
           echo "Freeing up port $port..."
@@ -162,7 +164,7 @@ unit_test service:
       MOCK_NODES_DIR="$PWD/src/tests/tools/mock_qkd_nodes"
       if [ -d "$MOCK_NODES_DIR" ]; then
         cd "$MOCK_NODES_DIR" || exit
-        ./start.sh &
+        ./start.sh &  # The start script that invokes flask commands
         MOCK_NODES_PID=$!
       else
         echo "Error: Mock QKD nodes directory '$MOCK_NODES_DIR' not found."
diff --git a/src/service/Dockerfile b/src/service/Dockerfile
index 6f23f0a89..54cc46b96 100644
--- a/src/service/Dockerfile
+++ b/src/service/Dockerfile
@@ -32,6 +32,9 @@ RUN python3 -m pip install --upgrade pip
 RUN python3 -m pip install --upgrade setuptools wheel
 RUN python3 -m pip install --upgrade pip-tools
 
+# Install Flask
+RUN python3 -m pip install Flask
+
 # Get common Python packages
 # Note: this step enables sharing the previous Docker build steps among all the Python components
 WORKDIR /var/teraflow
diff --git a/src/tests/tools/mock_qkd_nodes/start.sh b/src/tests/tools/mock_qkd_nodes/start.sh
index 89797b9c9..cf7f340a3 100755
--- a/src/tests/tools/mock_qkd_nodes/start.sh
+++ b/src/tests/tools/mock_qkd_nodes/start.sh
@@ -13,30 +13,28 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-#!/bin/bash
 cd "$(dirname "$0")"
 
 # Function to kill all background processes
 killbg() {
-    for p in "${pids[@]}" ; do
-        kill "$p";
+    for p in "${pids[@]}"; do
+        kill "$p" 2>/dev/null
     done
 }
 
+# Trap exit and ensure cleanup of Flask processes
 trap killbg EXIT
 pids=()
 
 # Set FLASK_APP and run the Flask instances on different ports
 export FLASK_APP=wsgi
-flask run --host 0.0.0.0 --port 11111 & 
-pids+=($!)
-
-flask run --host 0.0.0.0 --port 22222 & 
-pids+=($!)
 
-flask run --host 0.0.0.0 --port 33333 & 
-pids+=($!)
+# Starting Flask instances on different ports
+for port in 11111 22222 33333; do
+    flask run --host 0.0.0.0 --port "$port" &
+    pids+=($!)
+    sleep 2 # To avoid conflicts during startup, giving each Flask instance time to initialize
+done
 
 # Wait for all background processes to finish
 wait
-
-- 
GitLab