diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0732ec651f3cd032e4d6392482599c37b28f749d..1922772a3744381068bd8e19af87befbadc3dc79 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,8 +3,6 @@ variables: HOSTALIASES: "./hosts" DOCKER_HOST: "unix:///var/run/dind/docker.sock" DOCKER_VERSION: "27" - TESTCONTAINERS_RYUK_DISABLED: "false" - TESTCONTAINERS_HOST_OVERRIDE: "docker" ALPINE_VERSION: "3.21" PYTHON_VERSION: "3.11" JAVA_VERSION: "17" @@ -144,94 +142,6 @@ lint-open-api-version: - yq '.info.version' ./.docs/.openapi/api.base.yaml | grep -o "${APP_VERSION}" > ./openapi-app-version.txt - diff ./openapi-app-version.txt ./app-version.txt -build-metadata-service: - image: maven:3-openjdk-${JAVA_VERSION} - stage: build - only: - - merge_requests - - master - script: - - "mvn -f ./dbrepo-metadata-service/pom.xml clean install $MAVEN_OPTS -DskipTests" - # Compiled classes are needed for SonarQube in later stages - artifacts: - when: always - paths: - - ./dbrepo-metadata-service/test/target/classes - - ./dbrepo-metadata-service/services/target/classes - - ./dbrepo-metadata-service/repositories/target/classes - - ./dbrepo-metadata-service/rest-service/target/classes - - ./dbrepo-metadata-service/api/target/classes - - ./dbrepo-metadata-service/oai/target/classes - - ./dbrepo-metadata-service/entities/target/classes - expire_in: 1 days - -build-analyse-service: - image: docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION} - stage: build - only: - - merge_requests - - master - variables: - PIPENV_PIPFILE: "./dbrepo-analyse-service/Pipfile" - script: - - "pip install pipenv" - - "pipenv install gunicorn && pipenv install --dev --system --deploy" - -build-lib: - image: docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION} - stage: build - only: - - merge_requests - - master - variables: - PIPENV_PIPFILE: "./lib/python/Pipfile" - script: - - "pip install pipenv" - - "pipenv install gunicorn && pipenv install --dev --system --deploy" - -build-data-service: - image: maven:3-openjdk-${JAVA_VERSION} - stage: build - only: - - merge_requests - - master - needs: - - build-metadata-service - dependencies: - - build-metadata-service - before_script: - - "mvn -f ./dbrepo-metadata-service/pom.xml clean install $MAVEN_OPTS -DskipTests" - script: - - "mvn -f ./dbrepo-data-service/pom.xml clean package $MAVEN_OPTS -DskipTests" - # Compiled classes are needed for SonarQube in later stages - artifacts: - when: always - paths: - - ./dbrepo-data-service/services/target/classes - - ./dbrepo-data-service/rest-service/target/classes - - ./dbrepo-data-service/querystore/target/classes - expire_in: 1 days - -build-ui: - image: oven/bun:${BUN_VERSION}-alpine - stage: build - only: - - merge_requests - - master - script: - - "cd ./dbrepo-ui && bun install && bun run build" - -build-search-service: - image: docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION} - stage: build - only: - - merge_requests - - master - before_script: - - "pip install pipenv" - script: - - "cd dbrepo-search-service && pipenv install --system --deploy" - build-dashboard-service: image: docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION} stage: build @@ -243,167 +153,6 @@ build-dashboard-service: script: - "cd dbrepo-dashboard-service && pipenv install --system --deploy" -build-images: - image: docker.io/docker:${DOCKER_VERSION}-dind - stage: build - only: - - merge_requests - - master - before_script: - - "apk add --no-cache make" - - echo "$CI_REGISTRY_PASSWORD" | docker login --username "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY_URL - script: - - docker build -q --network=host -t dbrepo-metadata-service:build --target build dbrepo-metadata-service - - docker build -q --network=host -t dbrepo-data-service:build --target build dbrepo-data-service - - docker compose build -q --parallel - -build-helm: - image: docker.io/docker:${DOCKER_VERSION}-dind - stage: build - only: - - merge_requests - - tags - - /^release-.*/ - before_script: - - apk add --no-cache helm make - - echo "$CI_GPG_KEYRING" | base64 -d > ./secring.gpg - - echo "$CI_REGISTRY_PASSWORD" | docker login --username "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY_URL - script: - - make build-helm - -test-metadata-service: - image: maven:3-openjdk-${JAVA_VERSION} - stage: test - only: - - merge_requests - - master - needs: - - build-metadata-service - dependencies: - - build-metadata-service - script: - - "mvn -f ./dbrepo-metadata-service/pom.xml clean test verify $MAVEN_OPTS" - - "cat ./dbrepo-metadata-service/report/target/site/jacoco-aggregate/index.html | grep -o 'Total[^%]*%' | sed 's/<.*>/ /; s/Total/Jacoco Coverage Total:/'" - artifacts: - when: always - paths: - - ./dbrepo-metadata-service/report/target/site/jacoco-aggregate/ - - ./dbrepo-metadata-service/rest-service/target/surefire-reports/ - expire_in: 1 days - reports: - junit: ./dbrepo-metadata-service/rest-service/target/surefire-reports/TEST-*.xml - coverage: '/Total.*?([0-9]{1,3})%/' - -test-data-service: - image: maven:3-openjdk-${JAVA_VERSION} - stage: test - only: - - merge_requests - - master - needs: - - build-data-service - dependencies: - - build-data-service - script: - - "mvn -f ./dbrepo-metadata-service/pom.xml clean install -DskipTests $MAVEN_OPTS" - - "mvn -f ./dbrepo-data-service/pom.xml clean test verify $MAVEN_OPTS" - - "cat ./dbrepo-data-service/report/target/site/jacoco-aggregate/index.html | grep -o 'Total[^%]*%' | sed 's/<.*>/ /; s/Total/Jacoco Coverage Total:/'" - artifacts: - when: always - paths: - - ./dbrepo-data-service/report/target/site/jacoco-aggregate/ - - ./dbrepo-data-service/rest-service/target/surefire-reports/ - expire_in: 1 days - reports: - junit: ./dbrepo-data-service/rest-service/target/surefire-reports/TEST-*.xml - coverage: '/Total.*?([0-9]{1,3})%/' - -test-analyse-service: - image: docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION} - stage: test - only: - - merge_requests - - master - variables: - PIPENV_PIPFILE: "./dbrepo-analyse-service/Pipfile" - needs: - - build-analyse-service - dependencies: - - build-analyse-service - script: - - "pip install pipenv" - - "pipenv install gunicorn && pipenv install --dev --system --deploy" - - cd ./dbrepo-analyse-service/ && coverage run --rcfile=.coveragerc -m pytest tests/test_determine_dt.py tests/test_determine_pk.py tests/test_s3_client.py && coverage html && coverage xml && coverage report > ./coverage.txt - - "cat ./coverage.txt | grep -o 'TOTAL[^%]*%'" - artifacts: - when: always - paths: - - ./dbrepo-analyse-service/coverage.xml - - ./dbrepo-analyse-service/coverage.txt - expire_in: 1 days - reports: - junit: ./dbrepo-analyse-service/coverage.xml - coverage: '/TOTAL.*?([0-9]{1,3})%/' - -test-auth-service-init: - image: docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION} - stage: test - only: - - merge_requests - - master - variables: - PIPENV_PIPFILE: "./dbrepo-auth-service/init/Pipfile" - before_script: - - "apk add --no-cache alpine-sdk gcc python3-dev mariadb-connector-c-dev" - - "pip install pipenv" - - "pipenv install gunicorn && pipenv install --dev --system --deploy" - script: - - cd ./dbrepo-auth-service/init/ && coverage run --rcfile=.coveragerc -m pytest tests/test_unit_app.py && coverage html && coverage xml && coverage report > ./coverage.txt - - "cat ./coverage.txt | grep -o 'TOTAL[^%]*%'" - artifacts: - when: always - paths: - - ./dbrepo-auth-service/init/coverage.xml - - ./dbrepo-auth-service/init/coverage.txt - expire_in: 1 days - reports: - junit: ./dbrepo-auth-service/init/coverage.xml - coverage: '/TOTAL.*?([0-9]{1,3})%/' - -test-search-service: - image: docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION} - stage: test - only: - - merge_requests - - master - variables: - PIPENV_PIPFILE: "./dbrepo-search-service/Pipfile" - needs: - - build-search-service - dependencies: - - build-search-service - before_script: - - "cp -r ./dbrepo-search-service/init/clients ./dbrepo-search-service" - - "cp -r ./dbrepo-search-service/init/omlib ./dbrepo-search-service" - - "cp -r ./dbrepo-search-service/init/tests/rsa ./dbrepo-search-service/tests" - - "cp ./dbrepo-search-service/init/tests/test_keycloak_client.py ./dbrepo-search-service/tests" - - "cp ./dbrepo-search-service/init/tests/test_opensearch_client.py ./dbrepo-search-service/tests" - - "cp ./dbrepo-search-service/init/friendly_names_overrides.json ./dbrepo-search-service/friendly_names_overrides.json" - script: - - "pip install pipenv" - - "pipenv install gunicorn && pipenv install --dev --system --deploy" - - cd ./dbrepo-search-service/ && coverage run --rcfile=.coveragerc -m pytest tests/test_app.py tests/test_jwt.py tests/test_opensearch_client.py tests/test_keycloak_client.py && coverage html && coverage xml && coverage report > ./coverage.txt - - "cat ./coverage.txt | grep -o 'TOTAL[^%]*%'" - artifacts: - when: always - paths: - - ./dbrepo-search-service/coverage.xml - - ./dbrepo-search-service/coverage.txt - expire_in: 1 days - reports: - junit: ./dbrepo-search-service/coverage.xml - coverage: '/TOTAL.*?([0-9]{1,3})%/' - test-dashboard-service: image: docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION} stage: test @@ -463,258 +212,3 @@ test-dashboard-service-init: junit: ./dbrepo-dashboard-service/init/coverage.xml coverage: '/TOTAL.*?([0-9]{1,3})%/' -test-search-service-init: - image: docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION} - stage: test - only: - - merge_requests - - master - variables: - PIPENV_PIPFILE: "./dbrepo-search-service/init/Pipfile" - needs: - - build-search-service - dependencies: - - build-search-service - script: - - "pip install pipenv" - - "pipenv install gunicorn && pipenv install --dev --system --deploy" - - cd ./dbrepo-search-service/init/ && coverage run --rcfile=.coveragerc -m pytest tests/test_app.py tests/test_keycloak_client.py tests/test_opensearch_client.py && coverage html && coverage xml && coverage report > ./coverage.txt - - "cat ./coverage.txt | grep -o 'TOTAL[^%]*%'" - artifacts: - when: always - paths: - - ./dbrepo-search-service/coverage.xml - - ./dbrepo-search-service/coverage.txt - expire_in: 1 days - reports: - junit: ./dbrepo-search-service/coverage.xml - coverage: '/TOTAL.*?([0-9]{1,3})%/' - -test-lib: - image: docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION} - stage: test - only: - - merge_requests - - master - variables: - PIPENV_PIPFILE: "./lib/python/Pipfile" - needs: - - build-lib - dependencies: - - build-lib - script: - - "pip install pipenv" - - "pipenv install gunicorn && pipenv install --dev --system --deploy" - - cd ./lib/python/ && coverage run --rcfile=.coveragerc -m pytest tests/test_unit_container.py tests/test_unit_messages.py tests/test_unit_image.py tests/test_unit_concept.py tests/test_unit_database.py tests/test_unit_identifier.py tests/test_unit_license.py tests/test_unit_query.py tests/test_unit_rest_client.py tests/test_unit_table.py tests/test_unit_user.py tests/test_unit_view.py tests/test_unit_unit.py && coverage html && coverage xml && coverage report > ./coverage.txt - - "cat ./coverage.txt | grep -o 'TOTAL[^%]*%'" - artifacts: - when: always - paths: - - ./lib/python/coverage.xml - - ./lib/python/coverage.txt - expire_in: 1 days - reports: - junit: ./lib/python/coverage.xml - coverage: '/TOTAL.*?([0-9]{1,3})%/' - -test-ui: - image: docker.io/docker:${DOCKER_VERSION}-dind - stage: test - only: - - merge_requests - - master - needs: - - build-ui - dependencies: - - build-ui - before_script: - - "apk add --no-cache bash apache2-utils" - - "docker compose build dbrepo-ui" - - "docker run --name dbrepo-ui -e NODE_OPTIONS='--max_old_space_size=256' -p 3000:3000 -d dbrepo-ui:latest" - script: - - "sleep 30" - - "ENDPOINT=http://localhost:3000 bash ./dbrepo-ui/tests/test_heap.sh" - -clean-images: - stage: clean - image: docker:${DOCKER_VERSION}-dind - only: - refs: - - tags - - dev - before_script: - - "docker logout ${CI_REGISTRY_URL}" - - "echo ${CI_REGISTRY_PASSWORD} | docker login --username ${CI_REGISTRY_USER} --password-stdin ${CI_REGISTRY_URL}" - - "docker logout ${CI_REGISTRY2_URL}" - - "echo ${CI_REGISTRY2_PASSWORD} | docker login --username ${CI_REGISTRY2_USER} --password-stdin ${CI_REGISTRY2_URL}" - - "apk add --no-cache wget bash" - - "wget -O /usr/local/sbin/regctl https://github.com/regclient/regclient/releases/download/v0.8.2/regctl-linux-amd64" - - "chmod +x /usr/local/sbin/regctl" - script: - - bash ./.gitlab/remove-unsupported-images.sh - -release-images: - stage: release - image: docker:${DOCKER_VERSION}-dind - dependencies: - - clean-images - - test-analyse-service - - test-auth-service-init - - test-data-service - - test-lib - - test-metadata-service - - test-search-service - - test-search-service-init - - test-ui - only: - - tags - - dev - before_script: - - "docker logout ${CI_REGISTRY_URL}" - - "echo ${CI_REGISTRY_PASSWORD} | docker login --username ${CI_REGISTRY_USER} --password-stdin ${CI_REGISTRY_URL}" - - "docker logout ${CI_REGISTRY2_URL}" - - "echo ${CI_REGISTRY2_PASSWORD} | docker login --username ${CI_REGISTRY2_USER} --password-stdin ${CI_REGISTRY2_URL}" - script: - - docker build -q --network=host -t dbrepo-metadata-service:build --target build dbrepo-metadata-service - - docker build -q --network=host -t dbrepo-data-service:build --target build dbrepo-data-service - - docker compose build -q --parallel - - docker tag dbrepo-analyse-service:latest "${CI_REGISTRY2_URL}/analyse-service:${APP_VERSION}${BUILD_VERSION}" - - docker tag dbrepo-dashboard-service:latest "${CI_REGISTRY2_URL}/dashboard-service:${APP_VERSION}${BUILD_VERSION}" - - docker tag dbrepo-ui:latest "${CI_REGISTRY2_URL}/ui:${APP_VERSION}${BUILD_VERSION}" - - docker tag dbrepo-data-service:latest "${CI_REGISTRY2_URL}/data-service:${APP_VERSION}${BUILD_VERSION}" - - docker tag dbrepo-auth-service-init:latest "${CI_REGISTRY2_URL}/auth-service-init:${APP_VERSION}${BUILD_VERSION}" - - docker tag dbrepo-metadata-service:latest "${CI_REGISTRY2_URL}/metadata-service:${APP_VERSION}${BUILD_VERSION}" - - docker tag dbrepo-search-db:latest "${CI_REGISTRY2_URL}/search-db:${APP_VERSION}${BUILD_VERSION}" - - docker tag dbrepo-search-service:latest "${CI_REGISTRY2_URL}/search-service:${APP_VERSION}${BUILD_VERSION}" - - docker tag dbrepo-search-service-init:latest "${CI_REGISTRY2_URL}/search-service-init:${APP_VERSION}${BUILD_VERSION}" - - docker tag dbrepo-storage-service-init:latest "${CI_REGISTRY2_URL}/storage-service-init:${APP_VERSION}${BUILD_VERSION}" - - docker push "${CI_REGISTRY2_URL}/analyse-service:${APP_VERSION}${BUILD_VERSION}" - - docker push "${CI_REGISTRY2_URL}/dashboard-service:${APP_VERSION}${BUILD_VERSION}" - - docker push "${CI_REGISTRY2_URL}/ui:${APP_VERSION}${BUILD_VERSION}" - - docker push "${CI_REGISTRY2_URL}/data-service:${APP_VERSION}${BUILD_VERSION}" - - docker push "${CI_REGISTRY2_URL}/auth-service-init:${APP_VERSION}${BUILD_VERSION}" - - docker push "${CI_REGISTRY2_URL}/search-db:${APP_VERSION}${BUILD_VERSION}" - - docker push "${CI_REGISTRY2_URL}/metadata-service:${APP_VERSION}${BUILD_VERSION}" - - docker push "${CI_REGISTRY2_URL}/search-service:${APP_VERSION}${BUILD_VERSION}" - - docker push "${CI_REGISTRY2_URL}/search-service-init:${APP_VERSION}${BUILD_VERSION}" - - docker push "${CI_REGISTRY2_URL}/storage-service-init:${APP_VERSION}${BUILD_VERSION}" - -release-helm: - stage: release - image: docker:${DOCKER_VERSION}-dind - only: - - tags - needs: - - build-helm - dependencies: - - build-helm - before_script: - - "apk add --no-cache sed helm make" - - "docker logout ${CI_REGISTRY_URL}" - - "echo ${CI_REGISTRY_PASSWORD} | docker login --username ${CI_REGISTRY_USER} --password-stdin ${CI_REGISTRY_URL}" - - "docker logout ${CI_REGISTRY2_URL}" - - "echo ${CI_REGISTRY2_PASSWORD} | docker login --username ${CI_REGISTRY2_USER} --password-stdin ${CI_REGISTRY2_URL}" - - "mkdir -p ~/.gnupg" - - echo "$CI_GPG_KEYRING" | base64 -d > ./secring.gpg - - echo "$CI_GPG_KEYRING2" | base64 -d > ./pubring.gpg - - helm registry login --username "${CI_REGISTRY_USER}" --password "${CI_REGISTRY_PASSWORD}" "${CI_REGISTRY_URL}" - - helm registry login --username "${CI_REGISTRY2_USER}" --password "${CI_REGISTRY2_PASSWORD}" "${CI_REGISTRY2_URL}" - - make build-helm - - "helm package ./helm/dbrepo --sign --key 'Martin Weise' --keyring ./secring.gpg --destination ./build" - - "helm plugin install https://github.com/sigstore/helm-sigstore" - script: - - "helm push ./build/dbrepo-${CHART_VERSION}.tgz oci://${CI_REGISTRY2_URL}/helm" - - "helm sigstore upload --keyring ./pubring.gpg ./build/dbrepo-${CHART_VERSION}.tgz" - -release-docs: - stage: release - image: docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION} - only: - refs: - - /^release-.*/ - before_script: - - "apk add --no-cache alpine-sdk bash sed wget openssh jq curl" - - "pip install pipenv" - - "pipenv install --dev --system --deploy" - - "mkdir -p ./final/${DOC_VERSION}/rest" - - "mkdir -p ./final/${APP_VERSION}" - script: - - "make gen-lib-doc gen-docs-doc package-config" - - "cp -r ./lib/python/docs/build/html ./final/${DOC_VERSION}/python" # sphinx - - "cp .docs/.openapi/api.yaml ./final/${DOC_VERSION}/rest/api.yaml" # openapi - - "cp .docs/.openapi/swagger-ui.html ./final/${DOC_VERSION}/rest/index.html" # openapi - - "cp .docs/.openapi/custom.css ./final/${DOC_VERSION}/rest/custom.css" # openapi - - "cp -r ./site/* ./final/${DOC_VERSION}" # mkdocs - - "cp .docker/dist.tar.gz ./final/${APP_VERSION}/dist.tar.gz" # dist - - "cp .docs/index.html.tpl ./final/index.html" # redirect patch docs - - sed -i "s/DOC_VERSION/$DOC_VERSION/g" ./final/index.html - - "bash ./.gitlab/gen-badge.sh" - - eval $(ssh-agent -s) - - "mkdir -p /root/.ssh" - - echo "$CI_KEY_PRIVATE" > /root/.ssh/id_rsa && chmod 0600 /root/.ssh/id_rsa - - echo "$CI_KEY_PUBLIC" > /root/.ssh/id_rsa.pub - - echo "$CI_DOC_ID" > ~/.ssh/known_hosts - - tar czf ./final.tar.gz ./final - - "scp -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedAlgorithms=+ssh-rsa final.tar.gz $CI_DOC_USER@$CI_DOC_IP:final.tar.gz" - - "scp -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedAlgorithms=+ssh-rsa versions.json $CI_DOC_USER@$CI_DOC_IP:/system/user/ifs/infrastructures/public_html/dbrepo/versions.json" - - "scp -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedAlgorithms=+ssh-rsa .docs/index.html.tpl $CI_DOC_USER@$CI_DOC_IP:/system/user/ifs/infrastructures/public_html/dbrepo/index.html" - - 'ssh -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedAlgorithms=+ssh-rsa $CI_DOC_USER@$CI_DOC_IP "rm -rf /system/user/ifs/infrastructures/public_html/dbrepo/${DOC_VERSION}; tar xzf ./final.tar.gz; rm -f ./final.tar.gz; cp -r ./final/* /system/user/ifs/infrastructures/public_html/dbrepo; rm -rf ./final"' - -release-libs: - stage: release - image: docker.io/python:${PYTHON_VERSION}-alpine${ALPINE_VERSION} - only: - - tags - variables: - PIPENV_PIPFILE: "./dbrepo-analyse-service/Pipfile" - before_script: - - "apk add sed bash" - - "pip install pipenv twine build" - - "pipenv install gunicorn && pipenv install --dev --system --deploy" - script: - - bash ./lib/python/package.sh - - bash ./lib/python/release.sh - -verify-install-script: - image: docker.io/docker:${DOCKER_VERSION}-dind - stage: verify - only: - refs: - - /^release-.*/ - variables: - SKIP_CHECKS: 1 - before_script: - - "apk add bash curl" - script: - - "curl -sSL https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/release-${DOC_VERSION}/install.sh | bash | grep 'Success!'" - -verify-dist: - image: docker.io/alpine:${ALPINE_VERSION} - stage: verify - only: - refs: - - /^release-.*/ - before_script: - - "apk add curl" - script: - - "curl -v --output /dev/null --fail https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/${APP_VERSION}/dist.tar.gz" - -scan-sonarqube: - image: sonarsource/sonar-scanner-cli:${SONARQUBE_VERSION} - stage: scan - only: - - master - needs: - - build-data-service - - build-metadata-service - dependencies: - - build-data-service - - build-metadata-service - script: - - 'sonar-scanner -Dsonar.token="${CI_SONAR_TOKEN}"' - allow_failure: true - cache: - policy: pull - key: "${CI_COMMIT_SHORT_SHA}" - paths: - - sonar-scanner/ diff --git a/dbrepo-dashboard-service/init/tests/conftest.py b/dbrepo-dashboard-service/init/tests/conftest.py index a110a28b14647effb06e3a23ba4de8bc5dac452f..e2bf9ce16c0298c4424835e41cd6cb3054309c0d 100644 --- a/dbrepo-dashboard-service/init/tests/conftest.py +++ b/dbrepo-dashboard-service/init/tests/conftest.py @@ -3,12 +3,21 @@ import os import pytest +from app import app from clients.grafana_client import GrafanaClient from tests.grafana import GrafanaContainer +logging.basicConfig(level=logging.DEBUG) -@pytest.fixture(scope="session", autouse=True) -def session(request): + +@pytest.fixture(scope="session") +def app_context(): + with app.app_context(): + yield + + +@pytest.fixture(scope="session") +def session(request, app_context): """ Create one Grafana container per test run only (admin:admin) :param request: /