test config options for logging and docker; changed object name construction
This commit is contained in:
parent
147416bfad
commit
24be8d3f13
@ -1,6 +1,7 @@
|
||||
service:
|
||||
logging_level: $LOGGING_LEVEL_ROOT|DEBUG # Logging level for service logger
|
||||
response_file_extension: $RESPONSE_FILE_EXTENSION|"json.gz" # Extension for files uploaded to storage
|
||||
target_file_extension: $TARGET_FILE_EXTENSION|"pdf.gz" # Extension for files to download from storage and process
|
||||
response_file_extension: $RESPONSE_FILE_EXTENSION|"json.gz" # Extension for response files to upload to storage
|
||||
# In case a service is not supposed to place response files under the root folder `dossierId/fileId` and requests do
|
||||
# not specify an operation, this parameter can specify an output folder
|
||||
response_folder: $RESPONSE_FOLDER|null
|
||||
|
||||
@ -8,7 +8,7 @@ from copy import deepcopy
|
||||
from operator import itemgetter
|
||||
from typing import Callable, Dict, Union
|
||||
|
||||
from funcy import omit, filter, lmap, lflatten
|
||||
from funcy import omit, filter, lflatten
|
||||
from more_itertools import peekable
|
||||
|
||||
from pyinfra.config import CONFIG, parse_disjunction_string
|
||||
@ -31,21 +31,19 @@ def unique_hash(pages):
|
||||
return hsh
|
||||
|
||||
|
||||
def get_object_name(body):
|
||||
def get_object_name(body: dict):
|
||||
|
||||
def get_key(key):
|
||||
return key if key in body else False
|
||||
|
||||
body = deepcopy(body)
|
||||
|
||||
if "pages" not in body:
|
||||
body["pages"] = []
|
||||
folder = f"/{folder}/" if (folder := get_key("pages") or get_key("images")) else ""
|
||||
idnt = f"id:{idnt}" if (idnt := body.get("id", "0" if folder else False)) else ""
|
||||
|
||||
if "id" not in body:
|
||||
body["id"] = 0
|
||||
dossier_id, file_id = itemgetter("dossierId", "fileId")(body)
|
||||
|
||||
dossier_id, file_id, pages, idnt, target_file_extension = itemgetter(
|
||||
"dossierId", "fileId", "pages", "id", "targetFileExtension"
|
||||
)(body)
|
||||
|
||||
object_name = f"{dossier_id}/{file_id}/{unique_hash(pages)}-id:{idnt}.{CONFIG.service.response_file_extension}"
|
||||
object_name = f"{dossier_id}/{file_id}{folder}{idnt}.{CONFIG.service.target_file_extension}"
|
||||
|
||||
return object_name
|
||||
|
||||
@ -339,7 +337,7 @@ class MultiDownloadStrategy(DownloadStrategy):
|
||||
|
||||
def download(self, storage: Storage, queue_item_body):
|
||||
pages = "|".join(map(str, queue_item_body["pages"]))
|
||||
matches_page = r".*-id:(" + pages + r").*"
|
||||
matches_page = r".*id:(" + pages + r").*"
|
||||
|
||||
object_names = storage.get_all_object_names(self.bucket_name)
|
||||
object_names = filter(matches_page, object_names)
|
||||
|
||||
@ -22,4 +22,7 @@ webserver:
|
||||
mode: $SERVER_MODE|production # webserver mode: {development, production}
|
||||
|
||||
|
||||
mock_analysis_endpoint: "http://127.0.0.1:5000"
|
||||
mock_analysis_endpoint: "http://127.0.0.1:5000"
|
||||
|
||||
use_docker_fixture: False
|
||||
logging: False
|
||||
@ -40,9 +40,10 @@ logging.getLogger("PIL.PngImagePlugin").setLevel(level=logging.CRITICAL + 1)
|
||||
logging.getLogger("waitress").setLevel(level=logging.CRITICAL + 1)
|
||||
|
||||
|
||||
@pytest.fixture(autouse=False)
|
||||
@pytest.fixture(autouse=True)
|
||||
def mute_logger():
|
||||
logger.setLevel(logging.CRITICAL + 1)
|
||||
if not CONFIG.logging:
|
||||
logger.setLevel(logging.CRITICAL + 1)
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
@ -99,13 +100,15 @@ def s3_backend(request):
|
||||
|
||||
@pytest.fixture(scope="session", autouse=True)
|
||||
def docker_compose(sleep_seconds=30):
|
||||
logger.info(f"Starting docker containers with {COMPOSE_PATH}/docker-compose.yml...")
|
||||
compose = DockerCompose(COMPOSE_PATH, compose_file_name="docker-compose.yml")
|
||||
compose.start()
|
||||
logger.info(f"Sleeping for {sleep_seconds} seconds to wait for containers to finish startup... ")
|
||||
time.sleep(sleep_seconds)
|
||||
yield compose
|
||||
compose.stop()
|
||||
if CONFIG.use_docker_fixture:
|
||||
logger.info(f"Starting docker containers with {COMPOSE_PATH}/docker-compose.yml...")
|
||||
compose = DockerCompose(COMPOSE_PATH, compose_file_name="docker-compose.yml")
|
||||
compose.start()
|
||||
logger.info(f"Sleeping for {sleep_seconds} seconds to wait for containers to finish startup... ")
|
||||
time.sleep(sleep_seconds)
|
||||
yield compose
|
||||
compose.stop()
|
||||
yield None
|
||||
|
||||
|
||||
def get_pika_connection_params():
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user