Skip to content
Snippets Groups Projects
Commit a8eeab3a authored by Alberto Gonzalez Barneo's avatar Alberto Gonzalez Barneo
Browse files

Fixed wrong identation

parent 095d634d
No related branches found
No related tags found
1 merge request!273Draft: Resolve "(OPT) Integrate QKD tests in TFS CI/CD pipeline"
...@@ -49,14 +49,23 @@ unit_test service: ...@@ -49,14 +49,23 @@ unit_test service:
before_script: before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY - 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 - if docker network list | grep teraflowbridge; then echo "teraflowbridge is already created"; else docker network create --driver=bridge teraflowbridge; fi
# Context-related
- if docker container ls | grep crdb; then docker rm -f crdb; else echo "CockroachDB container is not in the system"; fi - if docker container ls | grep crdb; then docker rm -f crdb; else echo "CockroachDB container is not in the system"; fi
- if docker volume ls | grep crdb; then docker volume rm -f crdb; else echo "CockroachDB volume is not in the system"; fi - if docker volume ls | grep crdb; then docker volume rm -f crdb; else echo "CockroachDB volume is not in the system"; fi
- if docker container ls | grep nats; then docker rm -f nats; else echo "NATS container is not in the system"; fi - if docker container ls | grep nats; then docker rm -f nats; else echo "NATS container is not in the system"; fi
# Device-related
- if docker container ls | grep context; then docker rm -f context; else echo "context image is not in the system"; fi - if docker container ls | grep context; then docker rm -f context; else echo "context image is not in the system"; fi
- if docker container ls | grep device; then docker rm -f device; else echo "device image is not in the system"; fi - if docker container ls | grep device; then docker rm -f device; else echo "device image is not in the system"; fi
# Pathcomp-related
- if docker container ls | grep pathcomp-frontend; then docker rm -f pathcomp-frontend; else echo "pathcomp-frontend image is not in the system"; fi - if docker container ls | grep pathcomp-frontend; then docker rm -f pathcomp-frontend; else echo "pathcomp-frontend image is not in the system"; fi
- if docker container ls | grep pathcomp-backend; then docker rm -f pathcomp-backend; else echo "pathcomp-backend image is not in the system"; fi - if docker container ls | grep pathcomp-backend; then docker rm -f pathcomp-backend; else echo "pathcomp-backend image is not in the system"; fi
# Service-related
- if docker container ls | grep $IMAGE_NAME; then docker rm -f $IMAGE_NAME; else echo "$IMAGE_NAME image is not in the system"; fi - if docker container ls | grep $IMAGE_NAME; then docker rm -f $IMAGE_NAME; else echo "$IMAGE_NAME image is not in the system"; fi
script: script:
- docker pull "cockroachdb/cockroach:latest-v22.2" - docker pull "cockroachdb/cockroach:latest-v22.2"
- docker pull "nats:2.9" - docker pull "nats:2.9"
...@@ -65,11 +74,19 @@ unit_test service: ...@@ -65,11 +74,19 @@ unit_test service:
- docker pull "$CI_REGISTRY_IMAGE/pathcomp-frontend:$IMAGE_TAG" - docker pull "$CI_REGISTRY_IMAGE/pathcomp-frontend:$IMAGE_TAG"
- docker pull "$CI_REGISTRY_IMAGE/pathcomp-backend:$IMAGE_TAG" - docker pull "$CI_REGISTRY_IMAGE/pathcomp-backend:$IMAGE_TAG"
- docker pull "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG" - docker pull "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG"
# Context preparation
- docker volume create crdb - docker volume create crdb
- docker run --name crdb -d --network=teraflowbridge -p 26257:26257 -p 8080:8080 --env COCKROACH_DATABASE=tfs_test --env COCKROACH_USER=tfs --env COCKROACH_PASSWORD=tfs123 --volume "crdb:/cockroach/cockroach-data" cockroachdb/cockroach:latest-v22.2 start-single-node - >
- docker run --name nats -d --network=teraflowbridge -p 4222:4222 -p 8222:8222 nats:2.9 --http_port 8222 --user tfs --pass tfs123 docker run --name crdb -d --network=teraflowbridge -p 26257:26257 -p 8080:8080
--env COCKROACH_DATABASE=tfs_test --env COCKROACH_USER=tfs --env COCKROACH_PASSWORD=tfs123
--volume "crdb:/cockroach/cockroach-data"
cockroachdb/cockroach:latest-v22.2 start-single-node
- >
docker run --name nats -d --network=teraflowbridge -p 4222:4222 -p 8222:8222
nats:2.9 --http_port 8222 --user tfs --pass tfs123
- echo "Waiting for initialization..." - echo "Waiting for initialization..."
- while ! docker logs crdb 2>&1 | grep -q 'finished creating default user "tfs"'; do sleep 1; done - while ! docker logs crdb 2>&1 | grep -q 'finished creating default user \"tfs\"'; do sleep 1; done
- docker logs crdb - docker logs crdb
- while ! docker logs nats 2>&1 | grep -q 'Server is ready'; do sleep 1; done - while ! docker logs nats 2>&1 | grep -q 'Server is ready'; do sleep 1; done
- docker logs nats - docker logs nats
...@@ -78,21 +95,55 @@ unit_test service: ...@@ -78,21 +95,55 @@ unit_test service:
- echo $CRDB_ADDRESS - echo $CRDB_ADDRESS
- NATS_ADDRESS=$(docker inspect nats --format "{{.NetworkSettings.Networks.teraflowbridge.IPAddress}}") - NATS_ADDRESS=$(docker inspect nats --format "{{.NetworkSettings.Networks.teraflowbridge.IPAddress}}")
- echo $NATS_ADDRESS - echo $NATS_ADDRESS
- docker run --name context -d -p 1010:1010 --env "CRDB_URI=cockroachdb://tfs:tfs123@${CRDB_ADDRESS}:26257/tfs_test?sslmode=require" --env "MB_BACKEND=nats" --env "NATS_URI=nats://tfs:tfs123@${NATS_ADDRESS}:4222" --network=teraflowbridge $CI_REGISTRY_IMAGE/context:$IMAGE_TAG - >
docker run --name context -d -p 1010:1010
--env "CRDB_URI=cockroachdb://tfs:tfs123@${CRDB_ADDRESS}:26257/tfs_test?sslmode=require"
--env "MB_BACKEND=nats"
--env "NATS_URI=nats://tfs:tfs123@${NATS_ADDRESS}:4222"
--network=teraflowbridge
$CI_REGISTRY_IMAGE/context:$IMAGE_TAG
- CONTEXTSERVICE_SERVICE_HOST=$(docker inspect context --format "{{.NetworkSettings.Networks.teraflowbridge.IPAddress}}") - CONTEXTSERVICE_SERVICE_HOST=$(docker inspect context --format "{{.NetworkSettings.Networks.teraflowbridge.IPAddress}}")
- echo $CONTEXTSERVICE_SERVICE_HOST - echo $CONTEXTSERVICE_SERVICE_HOST
- docker run --name device -d -p 2020:2020 --env "CONTEXTSERVICE_SERVICE_HOST=${CONTEXTSERVICE_SERVICE_HOST}" --network=teraflowbridge $CI_REGISTRY_IMAGE/device:$IMAGE_TAG
# Device preparation
- >
docker run --name device -d -p 2020:2020
--env "CONTEXTSERVICE_SERVICE_HOST=${CONTEXTSERVICE_SERVICE_HOST}"
--network=teraflowbridge
$CI_REGISTRY_IMAGE/device:$IMAGE_TAG
- DEVICESERVICE_SERVICE_HOST=$(docker inspect device --format "{{.NetworkSettings.Networks.teraflowbridge.IPAddress}}") - DEVICESERVICE_SERVICE_HOST=$(docker inspect device --format "{{.NetworkSettings.Networks.teraflowbridge.IPAddress}}")
- echo $DEVICESERVICE_SERVICE_HOST - echo $DEVICESERVICE_SERVICE_HOST
- docker run --name pathcomp-backend -d -p 8081:8081 --network=teraflowbridge $CI_REGISTRY_IMAGE/pathcomp-backend:$IMAGE_TAG
# PathComp preparation
- >
docker run --name pathcomp-backend -d -p 8081:8081
--network=teraflowbridge
$CI_REGISTRY_IMAGE/pathcomp-backend:$IMAGE_TAG
- PATHCOMP_BACKEND_HOST=$(docker inspect pathcomp-backend --format "{{.NetworkSettings.Networks.teraflowbridge.IPAddress}}") - PATHCOMP_BACKEND_HOST=$(docker inspect pathcomp-backend --format "{{.NetworkSettings.Networks.teraflowbridge.IPAddress}}")
- echo $PATHCOMP_BACKEND_HOST - echo $PATHCOMP_BACKEND_HOST
- sleep 1 - sleep 1
- docker run --name pathcomp-frontend -d -p 10020:10020 --env "CONTEXTSERVICE_SERVICE_HOST=${CONTEXTSERVICE_SERVICE_HOST}" --env "PATHCOMP_BACKEND_HOST=${PATHCOMP_BACKEND_HOST}" --env "PATHCOMP_BACKEND_PORT=8081" --network=teraflowbridge $CI_REGISTRY_IMAGE/pathcomp-frontend:$IMAGE_TAG - >
docker run --name pathcomp-frontend -d -p 10020:10020
--env "CONTEXTSERVICE_SERVICE_HOST=${CONTEXTSERVICE_SERVICE_HOST}"
--env "PATHCOMP_BACKEND_HOST=${PATHCOMP_BACKEND_HOST}"
--env "PATHCOMP_BACKEND_PORT=8081"
--network=teraflowbridge
$CI_REGISTRY_IMAGE/pathcomp-frontend:$IMAGE_TAG
- sleep 1 - sleep 1
- PATHCOMPSERVICE_SERVICE_HOST=$(docker inspect pathcomp-frontend --format "{{.NetworkSettings.Networks.teraflowbridge.IPAddress}}") - PATHCOMPSERVICE_SERVICE_HOST=$(docker inspect pathcomp-frontend --format "{{.NetworkSettings.Networks.teraflowbridge.IPAddress}}")
- echo $PATHCOMPSERVICE_SERVICE_HOST - echo $PATHCOMPSERVICE_SERVICE_HOST
- docker run --name $IMAGE_NAME -d -p 3030:3030 --env "CONTEXTSERVICE_SERVICE_HOST=${CONTEXTSERVICE_SERVICE_HOST}" --env "DEVICESERVICE_SERVICE_HOST=${DEVICESERVICE_SERVICE_HOST}" --env "PATHCOMPSERVICE_SERVICE_HOST=${PATHCOMPSERVICE_SERVICE_HOST}" --volume "$PWD/src/$IMAGE_NAME/tests:/opt/results" --network=teraflowbridge $CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG
# Service preparation
- >
docker run --name $IMAGE_NAME -d -p 3030:3030
--env "CONTEXTSERVICE_SERVICE_HOST=${CONTEXTSERVICE_SERVICE_HOST}"
--env "DEVICESERVICE_SERVICE_HOST=${DEVICESERVICE_SERVICE_HOST}"
--env "PATHCOMPSERVICE_SERVICE_HOST=${PATHCOMPSERVICE_SERVICE_HOST}"
--volume "$PWD/src/$IMAGE_NAME/tests:/opt/results"
--network=teraflowbridge
$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG
# Check status before the tests
- sleep 5 - sleep 5
- docker ps -a - docker ps -a
- docker logs context - docker logs context
...@@ -100,36 +151,76 @@ unit_test service: ...@@ -100,36 +151,76 @@ unit_test service:
- docker logs pathcomp-frontend - docker logs pathcomp-frontend
- docker logs pathcomp-backend - docker logs pathcomp-backend
- docker logs $IMAGE_NAME - docker logs $IMAGE_NAME
- docker exec -i $IMAGE_NAME bash -c "coverage run -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_unitary.py --junitxml=/opt/results/${IMAGE_NAME}_report.xml"
- docker exec -i $IMAGE_NAME bash -c "coverage report --include='${IMAGE_NAME}/*' --show-missing" # Mock QKD Nodes Deployment
- echo "Starting stage: deploy_mock_nodes" - 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..."; fuser -k $port/tcp; fi; done - for port in 11111 22222 33333; do
if lsof -i:$port >/dev/null 2>&1; then
echo "Freeing up port $port...";
fuser -k $port/tcp;
fi
done
- MOCK_NODES_DIR="$PWD/src/tests/tools/mock_qkd_nodes" - MOCK_NODES_DIR="$PWD/src/tests/tools/mock_qkd_nodes"
- if [ -d "$MOCK_NODES_DIR" ]; then cd "$MOCK_NODES_DIR" || exit; ./start.sh &; MOCK_NODES_PID=$!; else echo "Error: Mock QKD nodes directory '$MOCK_NODES_DIR' not found."; exit 1; fi - if [ -d "$MOCK_NODES_DIR" ]; then
cd "$MOCK_NODES_DIR" || exit;
./start.sh &;
MOCK_NODES_PID=$!;
else
echo "Error: Mock QKD nodes directory '$MOCK_NODES_DIR' not found.";
exit 1;
fi
- echo "Waiting for mock nodes to be up..." - echo "Waiting for mock nodes to be up..."
- RETRY_COUNT=0 - RETRY_COUNT=0
- MAX_RETRIES=15 - MAX_RETRIES=15
- while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do if curl -s http://127.0.0.1:11111 > /dev/null && curl -s http://127.0.0.1:22222 > /dev/null && curl -s http://127.0.0.1:33333 > /dev/null; then echo "Mock nodes are up!"; break; else echo "Mock nodes not ready, retrying in 5 seconds..."; RETRY_COUNT=$((RETRY_COUNT + 1)); sleep 5; fi; done - while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do
- if [ $RETRY_COUNT -ge $MAX_RETRIES ]; then echo "Error: Mock nodes failed to start after multiple attempts."; exit 1; fi if curl -s http://127.0.0.1:11111 > /dev/null && \
curl -s http://127.0.0.1:22222 > /dev/null && \
curl -s http://127.0.0.1:33333 > /dev/null; then
echo "Mock nodes are up!";
break;
else
echo "Mock nodes not ready, retrying in 5 seconds...";
RETRY_COUNT=$((RETRY_COUNT + 1));
sleep 5;
fi
done
- if [ $RETRY_COUNT -ge $MAX_RETRIES ]; then
echo "Error: Mock nodes failed to start after multiple attempts.";
exit 1;
fi
# Run the tests
- >
docker exec -i $IMAGE_NAME bash -c
"coverage run -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_unitary.py --junitxml=/opt/results/${IMAGE_NAME}_report.xml"
- docker exec -i $IMAGE_NAME bash -c "coverage report --include='${IMAGE_NAME}/*' --show-missing"
# Run QKD Bootstrap Test
- docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose service/tests/qkd/test_functional_bootstrap.py" - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose service/tests/qkd/test_functional_bootstrap.py"
coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/' coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/'
after_script: after_script:
# Check status after the tests
- docker ps -a - docker ps -a
- docker logs context - docker logs context
- docker logs device - docker logs device
- docker logs pathcomp-frontend - docker logs pathcomp-frontend
- docker logs pathcomp-backend - docker logs pathcomp-backend
- docker logs $IMAGE_NAME - docker logs $IMAGE_NAME
- docker rm -f $IMAGE_NAME - docker rm -f $IMAGE_NAME
- docker rm -f pathcomp-frontend - docker rm -f pathcomp-frontend
- docker rm -f pathcomp-backend - docker rm -f pathcomp-backend
- docker rm -f device - docker rm -f device
- docker rm -f context - docker rm -f context
- docker rm -f crdb nats
- docker rm -f $IMAGE_NAME crdb nats
- docker volume rm -f crdb - docker volume rm -f crdb
- docker network rm teraflowbridge - docker network rm teraflowbridge
- docker volume prune --force - docker volume prune --force
- docker image prune --force - docker image prune --force
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)' - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)'
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"' - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"'
- changes: - changes:
...@@ -140,10 +231,11 @@ unit_test service: ...@@ -140,10 +231,11 @@ unit_test service:
- src/$IMAGE_NAME/tests/*.py - src/$IMAGE_NAME/tests/*.py
- manifests/${IMAGE_NAME}service.yaml - manifests/${IMAGE_NAME}service.yaml
- .gitlab-ci.yml - .gitlab-ci.yml
artifacts: artifacts:
when: always when: always
reports: reports:
junit: src/$IMAGE_NAME/tests/${IMAGE_NAME}_report.xml junit: src/$IMAGE_NAME/tests/${IMAGE_NAME}_report.xml
## Deployment of the service in Kubernetes Cluster ## Deployment of the service in Kubernetes Cluster
#deploy service: #deploy service:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment