diff --git a/src/service/.gitlab-ci.yml b/src/service/.gitlab-ci.yml index e0ff82a125589a668db500f9eb49febb7d938412..0ca6cfa9bdabf3b997b79945c4c676864274b941 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 6f23f0a89387e2db3802ee20e003ccb6482844ff..54cc46b9679f3f6e32a4d81c028a2879ebf0572f 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 89797b9c9496cdf58061c406ad2886be0d9c47f6..cf7f340a35bd173ebcc08bff3825fc42a9d8f6ee 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 -