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
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)
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)
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
def get_db_connection(): restore_os_env() context = build_context('worker') return get_connection_object(context.WRITER_CONTEXT)