def test_configure_and_run_command_uses_cmd_from_config(
    mock_get_instance_config,
    mock_load_system_paasta_config,
    mock_run_docker_container,
    mock_socket_getfqdn,
):
    mock_load_system_paasta_config.return_value = SystemPaastaConfig(
        {'cluster': 'fake_cluster', 'volumes': []}, '/fake_dir/')
    mock_docker_client = mock.MagicMock(spec_set=docker.Client)
    mock_get_instance_config.return_value.get_cmd.return_value = 'fake_command'
    mock_socket_getfqdn.return_value = 'fake_hostname'

    fake_service = 'fake_service'
    docker_hash = '8' * 40
    args = mock.MagicMock()
    args.cmd = ''
    args.service = fake_service
    args.instance = 'fake_instance'
    args.healthcheck = False
    args.healthcheck_only = False
    args.interactive = False

    configure_and_run_docker_container(
        docker_client=mock_docker_client,
        docker_hash=docker_hash,
        service=fake_service,
        instance='fake_instance',
        cluster='fake_cluster',
        args=args,
    ) is None
    mock_run_docker_container.assert_called_once_with(
        docker_client=mock_docker_client,
        service=fake_service,
        instance=args.instance,
        docker_hash=docker_hash,
        volumes=[],
        interactive=args.interactive,
        command=shlex.split(mock_get_instance_config.return_value.get_cmd.return_value),
        hostname=mock_socket_getfqdn.return_value,
        healthcheck=args.healthcheck,
        healthcheck_only=args.healthcheck_only,
        instance_config=mock_get_instance_config.return_value,
        soa_dir=args.yelpsoa_config_root,
    )
def test_configure_and_run_pulls_image_when_asked(
    mock_validate_service_instance,
    mock_get_instance_config,
    mock_load_system_paasta_config,
    mock_run_docker_container,
    mock_docker_pull_image,
    mock_socket_getfqdn,
):
    mock_validate_service_instance.return_value = 'marathon'
    mock_load_system_paasta_config.return_value = SystemPaastaConfig(
        {'cluster': 'fake_cluster', 'volumes': [], 'docker_registry': 'fake_registry'}, '/fake_dir/')
    mock_docker_client = mock.MagicMock(spec_set=docker.Client)
    mock_socket_getfqdn.return_value = 'fake_hostname'

    fake_instance_config = mock.MagicMock(InstanceConfig)
    fake_instance_config.get_docker_image.return_value = 'fake_image'
    mock_get_instance_config.return_value = fake_instance_config
    fake_service = 'fake_service'
    args = mock.MagicMock()
    args.cmd = None
    args.service = fake_service
    args.instance = 'fake_instance'
    args.healthcheck = False
    args.healthcheck_only = False
    args.interactive = True

    assert configure_and_run_docker_container(
        docker_client=mock_docker_client,
        docker_hash=None,
        service=fake_service,
        instance='fake_instance',
        cluster='fake_cluster',
        args=args,
        pull_image=True,
    ) is None
    mock_docker_pull_image.assert_called_once_with('fake_registry/fake_image')
    mock_run_docker_container.assert_called_once_with(
        docker_client=mock_docker_client,
        service=fake_service,
        instance=args.instance,
        docker_hash='fake_registry/fake_image',
        volumes=[],
        interactive=args.interactive,
        command=['bash'],
        hostname=mock_socket_getfqdn.return_value,
        healthcheck=args.healthcheck,
        healthcheck_only=args.healthcheck_only,
        instance_config=mock_get_instance_config.return_value,
        soa_dir=args.yelpsoa_config_root,
        dry_run=False,
    )
def test_configure_and_run_uses_bash_by_default_when_interactive(
    mock_validate_service_instance,
    mock_get_instance_config,
    mock_load_system_paasta_config,
    mock_run_docker_container,
    mock_socket_getfqdn,
):
    mock_validate_service_instance.return_value = 'marathon'
    mock_load_system_paasta_config.return_value = SystemPaastaConfig(
        {'cluster': 'fake_cluster', 'volumes': []}, '/fake_dir/')
    mock_docker_client = mock.MagicMock(spec_set=docker.Client)
    mock_socket_getfqdn.return_value = 'fake_hostname'

    fake_service = 'fake_service'
    docker_hash = '8' * 40
    args = mock.MagicMock()
    args.cmd = None
    args.service = fake_service
    args.healthcheck = False
    args.healthcheck_only = False
    args.instance = 'fake_instance'
    args.interactive = True

    assert configure_and_run_docker_container(
        docker_client=mock_docker_client,
        docker_hash=docker_hash,
        service=fake_service,
        instance='fake_instance',
        cluster='fake_cluster',
        args=args,
    ) is None
    mock_run_docker_container.assert_called_once_with(
        docker_client=mock_docker_client,
        service=fake_service,
        instance=args.instance,
        docker_hash=docker_hash,
        volumes=[],
        interactive=args.interactive,
        command=['bash'],
        hostname=mock_socket_getfqdn.return_value,
        healthcheck=args.healthcheck,
        healthcheck_only=args.healthcheck_only,
        instance_config=mock_get_instance_config.return_value,
        soa_dir=args.yelpsoa_config_root,
    )
Example #4
0
def test_configure_and_run_uses_bash_by_default_when_interactive(
    mock_get_instance_config,
    mock_load_system_paasta_config,
    mock_run_docker_container,
):
    mock_load_system_paasta_config.return_value = SystemPaastaConfig(
        {
            'cluster': 'fake_cluster',
            'volumes': []
        }, '/fake_dir/')
    mock_docker_client = mock.MagicMock(spec_set=docker.Client)
    fake_service = 'fake_service'
    docker_hash = '8' * 40
    args = mock.MagicMock()
    args.cmd = None
    args.service = fake_service
    args.healthcheck = False
    args.healthcheck_only = False
    args.instance = 'fake_instance'
    args.interactive = True

    assert configure_and_run_docker_container(
        docker_client=mock_docker_client,
        docker_hash=docker_hash,
        service=fake_service,
        instance='fake_instance',
        cluster='fake_cluster',
        args=args,
    ) is None
    mock_run_docker_container.assert_called_once_with(
        docker_client=mock_docker_client,
        service=fake_service,
        instance=args.instance,
        docker_hash=docker_hash,
        volumes=[],
        interactive=args.interactive,
        command=['bash'],
        healthcheck=args.healthcheck,
        healthcheck_only=args.healthcheck_only,
        instance_config=mock_get_instance_config.return_value,
        soa_dir=args.yelpsoa_config_root,
    )