Exemplo n.º 1
0
def test_build_worker_context(mock_secrets, test_env):
    # Given
    mock_secrets.return_value = dict()

    # When
    actual = build_context('worker', **test_env)

    # Then
    assert isinstance(actual, WorkerContext)
    assert isinstance(actual.READER_CONTEXT, DatabaseContext)
    assert isinstance(actual.WRITER_CONTEXT, DatabaseContext)

    assert actual.SQL_PATH == WORKER_SQL_PATH

    assert actual.WORK_QUEUE_CONTEXT.PATH == './work_queue'
    assert actual.WORK_QUEUE_CONTEXT.TYPE == 'filesystem'

    assert actual.READER_CONTEXT.VAULT_SECRETS == dict()
    assert actual.READER_CONTEXT.DATABASE_HOST == "DATABASE_HOST"
    assert actual.READER_CONTEXT.DATABASE_PORT == 5555
    assert actual.READER_CONTEXT.DATABASE_USERNAME == "DATABASE_USERNAME"
    assert actual.READER_CONTEXT.DATABASE_PASSWORD_KEY == "DATABASE_PASSWORD_KEY"

    assert actual.WRITER_CONTEXT.VAULT_SECRETS == dict()
    assert actual.WRITER_CONTEXT.DATABASE_HOST == "DATABASE_HOST"
    assert actual.WRITER_CONTEXT.DATABASE_PORT == 5555
    assert actual.WRITER_CONTEXT.DATABASE_USERNAME == "DATABASE_USERNAME"
    assert actual.WRITER_CONTEXT.DATABASE_PASSWORD_KEY == "DATABASE_PASSWORD_KEY"

    assert actual.PRODUCER_CONSUMER_CONTEXT.QUEUE_KWARGS == dict(max_size=50)
    assert actual.PRODUCER_CONSUMER_CONTEXT.MAX_CONSUMERS == 5
    assert actual.PRODUCER_CONSUMER_CONTEXT.QUEUE_TYPE == 'memory'

    assert actual.SLEEP_TIME == 60
Exemplo n.º 2
0
def test_build_service_context(mock_secrets, test_env):
    # Given
    mock_secrets.return_value = dict()

    # When
    actual = build_context('service', **test_env)

    # Then
    assert isinstance(actual, ServiceContext)
    assert isinstance(actual.WORK_QUEUE_CONTEXT, WorkQueueContext)
Exemplo n.º 3
0
def main():
    """
    Iterate forever and sleep for the configured time between iterations.
    If there is work to be processed, start a WorkManager.

    :return:
    """
    context = build_context('worker')
    work_queue = FileSystemWorkQueue(context.WORK_QUEUE_CONTEXT)
    while True:
        if not work_queue.empty:
            WorkManager(context, work_queue).run()
        sleep(context.SLEEP_TIME)
Exemplo n.º 4
0
 def __init__(self, context: ServiceContext = None):
     if context is None:
         context = build_context('service')
     self.context = context
     self.work_queue = WorkQueue(self.context.WORK_QUEUE_CONTEXT)
     self.queue_key = QueueKeys.PRODUCT_DATA
Exemplo n.º 5
0
def get_db_connection():
    restore_os_env()
    context = build_context('worker')
    return get_connection_object(context.WRITER_CONTEXT)