Esempio n. 1
0
def test_get_default_worker_with_os_env(mock_kafka_consumer,
                                        mock_docker_client):
    try:
        os.environ['CODEPACK_CONFIG_DIR'] = 'config'
        os.environ['CODEPACK_CONFIG_PATH'] = 'sample.ini'
        worker = Default.get_employee('worker')
        assert isinstance(worker, Worker)
        arg_list = mock_kafka_consumer.call_args_list
        assert len(arg_list) == 1
        args, kwargs = arg_list[0]
        assert kwargs.get('bootstrap_servers', '') == '?:9092,?:9092,?:9092'
        assert isinstance(kwargs.get('value_deserializer', ''), Callable)
        assert len(args) == 1 and args[0] == 'codepack'
        assert hasattr(worker.messenger, 'consumer')
        assert getattr(worker.messenger,
                       'consumer').session is mock_kafka_consumer()
        mock_docker_client.assert_called_once_with(
            base_url='unix://var/run/docker.sock')
        assert worker.docker_manager.docker.session == mock_docker_client()
        assert isinstance(worker.callback_service, CallbackService)
        assert isinstance(worker.logger, logging.Logger)
        assert worker.logger.name == 'worker-logger'
        assert hasattr(worker, 'script') and worker.script == 'run_snapshot.py'
        default_dir = Default.get_config_instance().get_default_config_dir()
        script_dir = os.path.join(default_dir, 'scripts')
        assert hasattr(worker,
                       'script_dir') and worker.script_dir == script_dir
        assert hasattr(worker,
                       'script_path') and worker.script_path == os.path.join(
                           default_dir, 'scripts/run_snapshot.py')
    finally:
        os.environ.pop('CODEPACK_CONFIG_DIR', None)
        os.environ.pop('CODEPACK_CONFIG_PATH', None)
Esempio n. 2
0
def test_get_default_docker_manager(mock_client):
    docker_manager = Default.get_docker_manager()
    mock_client.assert_called_once_with(base_url='unix://var/run/docker.sock')
    assert isinstance(docker_manager, DockerManager)
    default_dir = Default.get_config_instance().get_default_config_dir()
    assert docker_manager.path == os.path.join(default_dir, 'scripts')
    assert docker_manager.run_opt == {'dns': ['8.8.8.8'], 'auto_remove': True}
Esempio n. 3
0
def test_default_get_storage_config():
    Default(config_path='config/test.ini')
    assert len(Default.instances) == 0
    config = Default.get_config_instance()
    storage_config = config.get_storage_config('worker')
    assert storage_config == {
        'source': 'kafka',
        'topic': 'test',
        'kafka': {
            'bootstrap_servers': 'localhost:9092'
        },
        'group_id': 'codepack_worker_test',
        'interval': '5',
        'supervisor': 'http://localhost:8000',
        'script_path': 'scripts/run_snapshot.py',
        'logger': 'worker-logger'
    }
Esempio n. 4
0
def test_get_default_worker_without_os_env(mock_docker_client):
    worker = Default.get_employee('worker')
    assert isinstance(worker, Worker)
    assert isinstance(worker.messenger, MemoryMessenger)
    assert worker.messenger.topic == 'codepack'
    assert worker.supervisor is None
    mock_docker_client.assert_called_once_with(
        base_url='unix://var/run/docker.sock')
    assert worker.docker_manager.docker.session == mock_docker_client()
    assert isinstance(worker.callback_service, CallbackService)
    assert isinstance(worker.callback_service.storage, FileStorage)
    default_dir = Default.get_config_instance().get_default_config_dir()
    assert worker.callback_service.storage.path == os.path.join(
        default_dir, 'scripts')
    assert isinstance(worker.logger, logging.Logger)
    assert worker.logger.name == 'worker-logger'
    assert hasattr(worker, 'script') and worker.script == 'run_snapshot.py'
    assert hasattr(worker, 'script_dir') and worker.script_dir == os.path.join(
        default_dir, 'scripts')
    assert hasattr(worker,
                   'script_path') and worker.script_path == os.path.join(
                       default_dir, 'scripts/run_snapshot.py')