diff --git a/src/context/.gitlab-ci.yml b/src/context/.gitlab-ci.yml index 0da2b582edf879f793341887adef9cef5ad4fff2..ef780f7e3da5440f17f6a83cfcc7ba22201acf7c 100644 --- a/src/context/.gitlab-ci.yml +++ b/src/context/.gitlab-ci.yml @@ -49,22 +49,40 @@ unit test context: 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 -d bridge teraflowbridge; fi - - if docker container ls | grep redis; then docker rm -f redis; else echo "redis image 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 container ls | grep $IMAGE_NAME; then docker rm -f $IMAGE_NAME; else echo "$IMAGE_NAME image is not in the system"; fi script: - docker pull "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG" - - docker pull "redis:6.2" - - docker run --name redis -d --network=teraflowbridge redis:6.2 + - docker pull "cockroachdb/cockroach:latest-v22.2" + - 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" + --volume "~/init-scripts:/docker-entrypoint-initdb.d" + cockroachdb/cockroach:latest-v22.2 start-single-node - sleep 10 - - docker run --name $IMAGE_NAME -d -p 1010:1010 --env "DB_BACKEND=redis" --env "REDIS_SERVICE_HOST=redis" --env "REDIS_SERVICE_PORT=6379" --env "REDIS_DATABASE_ID=0" -v "$PWD/src/$IMAGE_NAME/tests:/opt/results" --network=teraflowbridge $CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG + - CRDB_ADDRESS=$(docker inspect crdb --format "{{.NetworkSettings.Networks.teraflowbridge.IPAddress}}") + - > + docker run --name $IMAGE_NAME -d -p 1010:1010 + --env "CRDB_URI=cockroachdb://tfs:tfs123@${CRDB_ADDRESS}:26257/tfs_test?sslmode=require" + --volume "$PWD/src/$IMAGE_NAME/tests:/opt/results" + --network=teraflowbridge + $CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG - docker ps -a - 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 run -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/*.py --junitxml=/opt/results/${IMAGE_NAME}_report.xml" - docker exec -i $IMAGE_NAME bash -c "coverage report --include='${IMAGE_NAME}/*' --show-missing" coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/' after_script: - docker rm -f $IMAGE_NAME - - docker rm -f redis + - docker rm -f crdb + - docker volume rm -f crdb - docker network rm teraflowbridge rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)' diff --git a/src/context/service/__main__.py b/src/context/service/__main__.py index fbdabb2d7d624aa5ba97f859bd9cfd50e792b8b1..9960e94b519c5f4604557a70bab6c8e80eab6fc5 100644 --- a/src/context/service/__main__.py +++ b/src/context/service/__main__.py @@ -17,10 +17,9 @@ from prometheus_client import start_http_server from common.Settings import get_log_level, get_metrics_port from common.message_broker.Factory import get_messagebroker_backend from common.message_broker.MessageBroker import MessageBroker -from sqlalchemy.orm import sessionmaker -from .database import rebuild_database from .ContextService import ContextService -from .Engine import Engine +from .database.Engine import Engine +from .database.models._Base import rebuild_database LOG_LEVEL = get_log_level() logging.basicConfig(level=LOG_LEVEL, format="[%(asctime)s] %(levelname)s:%(name)s:%(message)s") @@ -46,7 +45,8 @@ def main(): start_http_server(metrics_port) db_engine = Engine.get_engine() - rebuild_database(db_engine, drop_if_exists=False) + Engine.create_database(db_engine) + rebuild_database(db_engine) # Get message broker instance messagebroker = MessageBroker(get_messagebroker_backend()) diff --git a/src/context/service/Engine.py b/src/context/service/database/Engine.py similarity index 100% rename from src/context/service/Engine.py rename to src/context/service/database/Engine.py diff --git a/src/context/tests/conftest.py b/src/context/tests/conftest.py index 38e488af476e0ef69533a6b2551c3bfe762b2330..dc54c8cdcbdc29e8bbdfb316f3214172c1a993b7 100644 --- a/src/context/tests/conftest.py +++ b/src/context/tests/conftest.py @@ -25,7 +25,7 @@ from common.message_broker.Factory import get_messagebroker_backend, BackendEnum from common.message_broker.MessageBroker import MessageBroker from context.client.ContextClient import ContextClient from context.service.ContextService import ContextService -from context.service.Engine import Engine +from context.service.database.Engine import Engine from context.service.database.models._Base import rebuild_database LOCAL_HOST = '127.0.0.1'