Skip to content

Commit

Permalink
feature: define a WorkerConfig
Browse files Browse the repository at this point in the history
  • Loading branch information
ClemDoum committed Jan 25, 2024
1 parent d7ce605 commit e28c79c
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 1 deletion.
2 changes: 1 addition & 1 deletion neo4j-app/neo4j_app/icij_worker/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from .app import ICIJApp
from .task import Task, TaskError, TaskEvent, TaskResult, TaskStatus
from .worker import Worker, Neo4jAsyncWorker
from .worker import Worker, Neo4jAsyncWorker, WorkerConfig
from .event_publisher import EventPublisher, Neo4jEventPublisher
1 change: 1 addition & 0 deletions neo4j-app/neo4j_app/icij_worker/worker/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from .worker import Worker
from .neo4j import Neo4jAsyncWorker
from .config import WorkerConfig
from .process import ProcessWorkerMixin
15 changes: 15 additions & 0 deletions neo4j-app/neo4j_app/icij_worker/worker/config.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from abc import ABC

from pydantic import Field

from neo4j_app.icij_worker.utils.registrable import RegistrableConfig


class WorkerConfig(RegistrableConfig, ABC):
registry_key: str = Field(const=True, default="type")
log_level: str = "INFO"
type: str

class Config:
env_prefix = "ICIJ_WORKER_"
case_sensitive = False
11 changes: 11 additions & 0 deletions neo4j-app/neo4j_app/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import os
import random
import traceback
from copy import copy
from datetime import datetime
from pathlib import Path
from time import monotonic, sleep
Expand Down Expand Up @@ -653,3 +654,13 @@ async def sleep_for(
@pytest.fixture(scope="session")
def test_async_app(test_config: AppConfig) -> ICIJApp:
return test_config.to_async_app()


@pytest.fixture()
def reset_env():
old_env = copy(dict(os.environ))
try:
yield
finally:
os.environ.clear()
os.environ.update(old_env)
31 changes: 31 additions & 0 deletions neo4j-app/neo4j_app/tests/icij_worker/worker/test_config.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# pylint: disable=redefined-outer-name
import os
from typing import Optional

import pytest

from neo4j_app.icij_worker import WorkerConfig


@pytest.fixture()
def env_log_level(reset_env, request): # pylint: disable=unused-argument
log_level = request.param
if log_level is not None:
os.environ["ICIJ_WORKER_LOG_LEVEL"] = log_level


@pytest.mark.parametrize(
"env_log_level,expected_level",
[(None, "INFO"), ("DEBUG", "DEBUG"), ("INFO", "INFO")],
indirect=["env_log_level"],
)
def test_config_from_env(
env_log_level: Optional[str], expected_level: str # pylint: disable=unused-argument
):
# When
class WorkerImplConfig(WorkerConfig):
type: str = "worker_impl"

config = WorkerImplConfig()
# Then
assert config.log_level == expected_level

0 comments on commit e28c79c

Please sign in to comment.