Exemple #1
0
def step_impl_when(context):
    context.deployments_file = os.path.join('fake_soa_configs',
                                            'fake_deployments_json_service',
                                            'deployments.json')
    try:
        os.remove(context.deployments_file)
    except OSError:
        pass
    fake_args = mock.MagicMock(
        service='fake_deployments_json_service',
        soa_dir='fake_soa_configs',
        verbose=True,
    )
    with contextlib.nested(
            mock.patch(
                'paasta_tools.generate_deployments_for_service.get_git_url',
                autospec=True,
                return_value=context.test_git_repo_dir),
            mock.patch(
                'paasta_tools.generate_deployments_for_service.parse_args',
                autospec=True,
                return_value=fake_args),
    ) as (
            mock_get_git_url,
            mock_parse_args,
    ):
        generate_deployments_for_service.main()
def test_main():
    fake_soa_dir = '/etc/true/null'
    file_mock = mock.MagicMock(spec=file)
    with contextlib.nested(
        mock.patch('paasta_tools.generate_deployments_for_service.parse_args',
                   return_value=mock.Mock(verbose=False, soa_dir=fake_soa_dir, service='fake_service'),
                   autospec=True),
        mock.patch('os.path.abspath', return_value='ABSOLUTE', autospec=True),
        mock.patch(
            'paasta_tools.generate_deployments_for_service.get_deploy_group_mappings',
            return_value=({'MAP': {'docker_image': 'PINGS', 'desired_state': 'start'}}, mock.sentinel.v2_mappings),
            autospec=True,
        ),
        mock.patch('os.path.join', return_value='JOIN', autospec=True),
        mock.patch('paasta_tools.generate_deployments_for_service.open',
                   create=True, return_value=file_mock, autospec=None),
        mock.patch('json.dump', autospec=True),
        mock.patch('json.load', return_value={'OLD_MAP': 'PINGS'}, autospec=True),
        mock.patch('paasta_tools.generate_deployments_for_service.atomic_file_write', autospec=True),
    ) as (
        parse_patch,
        abspath_patch,
        mappings_patch,
        join_patch,
        open_patch,
        json_dump_patch,
        json_load_patch,
        atomic_file_write_patch,
    ):
        generate_deployments_for_service.main()
        parse_patch.assert_called_once_with()
        abspath_patch.assert_called_once_with(fake_soa_dir)
        mappings_patch.assert_called_once_with(
            soa_dir='ABSOLUTE',
            service='fake_service',
            old_mappings={'OLD_MAP': {'desired_state': 'start', 'docker_image': 'PINGS', 'force_bounce': None}},
        ),

        join_patch.assert_any_call('ABSOLUTE', 'fake_service', generate_deployments_for_service.TARGET_FILE),
        assert join_patch.call_count == 2

        atomic_file_write_patch.assert_called_once_with('JOIN')
        open_patch.assert_called_once_with('JOIN', 'r')
        json_dump_patch.assert_called_once_with(
            {
                'v1': {
                    'MAP': {'docker_image': 'PINGS', 'desired_state': 'start'}
                },
                'v2': mock.sentinel.v2_mappings,
            },
            atomic_file_write_patch().__enter__()
        )
        json_load_patch.assert_called_once_with(file_mock.__enter__())
Exemple #3
0
def test_main():
    fake_soa_dir = '/etc/true/null'
    file_mock = mock.MagicMock(spec=file)
    with contextlib.nested(
        mock.patch('paasta_tools.generate_deployments_for_service.parse_args',
                   return_value=mock.Mock(verbose=False, soa_dir=fake_soa_dir, service='fake_service'),
                   autospec=True),
        mock.patch('os.path.abspath', return_value='ABSOLUTE', autospec=True),
        mock.patch(
            'paasta_tools.generate_deployments_for_service.get_deploy_group_mappings',
            return_value={'MAP': {'docker_image': 'PINGS', 'desired_state': 'start'}},
            autospec=True,
        ),
        mock.patch('os.path.join', return_value='JOIN', autospec=True),
        mock.patch('paasta_tools.generate_deployments_for_service.open', create=True, return_value=file_mock),
        mock.patch('json.dump', autospec=True),
        mock.patch('json.load', return_value={'OLD_MAP': 'PINGS'}, autospec=True),
        mock.patch('paasta_tools.generate_deployments_for_service.atomic_file_write', autospec=True),
    ) as (
        parse_patch,
        abspath_patch,
        mappings_patch,
        join_patch,
        open_patch,
        json_dump_patch,
        json_load_patch,
        atomic_file_write_patch,
    ):
        generate_deployments_for_service.main()
        parse_patch.assert_called_once_with()
        abspath_patch.assert_called_once_with(fake_soa_dir)
        mappings_patch.assert_called_once_with(
            soa_dir='ABSOLUTE',
            service='fake_service',
            old_mappings={'OLD_MAP': {'desired_state': 'start', 'docker_image': 'PINGS', 'force_bounce': None}},
        ),

        join_patch.assert_any_call('ABSOLUTE', 'fake_service', generate_deployments_for_service.TARGET_FILE),
        assert join_patch.call_count == 2

        atomic_file_write_patch.assert_called_once_with('JOIN')
        open_patch.assert_called_once_with('JOIN', 'r')
        json_dump_patch.assert_called_once_with(
            {
                'v1': {
                    'MAP': {'docker_image': 'PINGS', 'desired_state': 'start'}
                }
            },
            atomic_file_write_patch().__enter__()
        )
        json_load_patch.assert_called_once_with(file_mock.__enter__())
def test_main():
    fake_soa_dir = "/etc/true/null"
    file_mock = mock.MagicMock(spec=file)
    with contextlib.nested(
        mock.patch(
            "paasta_tools.generate_deployments_for_service.parse_args",
            return_value=mock.Mock(verbose=False, soa_dir=fake_soa_dir, service="fake_service"),
            autospec=True,
        ),
        mock.patch("os.path.abspath", return_value="ABSOLUTE", autospec=True),
        mock.patch(
            "paasta_tools.generate_deployments_for_service.get_deploy_group_mappings",
            return_value={"MAP": {"docker_image": "PINGS", "desired_state": "start"}},
            autospec=True,
        ),
        mock.patch("os.path.join", return_value="JOIN", autospec=True),
        mock.patch("paasta_tools.generate_deployments_for_service.open", create=True, return_value=file_mock),
        mock.patch("json.dump", autospec=True),
        mock.patch("json.load", return_value={"OLD_MAP": "PINGS"}, autospec=True),
        mock.patch("paasta_tools.generate_deployments_for_service.atomic_file_write", autospec=True),
    ) as (
        parse_patch,
        abspath_patch,
        mappings_patch,
        join_patch,
        open_patch,
        json_dump_patch,
        json_load_patch,
        atomic_file_write_patch,
    ):
        generate_deployments_for_service.main()
        parse_patch.assert_called_once_with()
        abspath_patch.assert_called_once_with(fake_soa_dir)
        mappings_patch.assert_called_once_with(
            soa_dir="ABSOLUTE",
            service="fake_service",
            old_mappings={"OLD_MAP": {"desired_state": "start", "docker_image": "PINGS", "force_bounce": None}},
        ),

        join_patch.assert_any_call("ABSOLUTE", "fake_service", generate_deployments_for_service.TARGET_FILE),
        assert join_patch.call_count == 2

        atomic_file_write_patch.assert_called_once_with("JOIN")
        open_patch.assert_called_once_with("JOIN", "r")
        json_dump_patch.assert_called_once_with(
            {"v1": {"MAP": {"docker_image": "PINGS", "desired_state": "start"}}}, atomic_file_write_patch().__enter__()
        )
        json_load_patch.assert_called_once_with(file_mock.__enter__())
def step_impl_when(context):
    context.deployments_file = os.path.join("fake_soa_configs", "fake_deployments_json_service", "deployments.json")
    try:
        os.remove(context.deployments_file)
    except OSError:
        pass
    fake_args = mock.MagicMock(service="fake_deployments_json_service", soa_dir="fake_soa_configs", verbose=True)
    with contextlib.nested(
        mock.patch(
            "paasta_tools.generate_deployments_for_service.get_git_url",
            autospec=True,
            return_value=context.test_git_repo_dir,
        ),
        mock.patch("paasta_tools.generate_deployments_for_service.parse_args", autospec=True, return_value=fake_args),
    ) as (mock_get_git_url, mock_parse_args):
        generate_deployments_for_service.main()
def step_impl_when(context):
    context.deployments_file = os.path.join(
        "fake_soa_configs", "fake_deployments_json_service", "deployments.json"
    )
    try:
        os.remove(context.deployments_file)
    except OSError:
        pass
    fake_args = mock.MagicMock(
        service="fake_deployments_json_service",
        soa_dir="fake_soa_configs",
        verbose=True,
    )
    with mock.patch(
        "paasta_tools.generate_deployments_for_service.get_git_url",
        autospec=True,
        return_value=context.test_git_repo_dir,
    ), mock.patch(
        "paasta_tools.generate_deployments_for_service.parse_args",
        autospec=True,
        return_value=fake_args,
    ):
        generate_deployments_for_service.main()
def step_impl_when(context):
    context.deployments_file = os.path.join('fake_soa_configs', 'fake_deployments_json_service', 'deployments.json')
    try:
        os.remove(context.deployments_file)
    except OSError:
        pass
    fake_args = mock.MagicMock(
        service='fake_deployments_json_service',
        soa_dir='fake_soa_configs',
        verbose=True,
    )
    with contextlib.nested(
        mock.patch('paasta_tools.generate_deployments_for_service.get_git_url', autospec=True,
                   return_value=context.test_git_repo_dir),
        mock.patch('paasta_tools.generate_deployments_for_service.parse_args',
                   autospec=True, return_value=fake_args),
        mock.patch('paasta_tools.generate_deployments_for_service.get_branches_for_service', autospec=True,
                   return_value=['paasta-test_cluster.test_instance']),
    ) as (
        mock_get_git_url,
        mock_parse_args,
        mock_get_branches_for_service,
    ):
        generate_deployments_for_service.main()
Exemple #8
0
def test_main():
    fake_soa_dir = "/etc/true/null"
    file_mock = mock.mock_open()
    with mock.patch(
            "paasta_tools.generate_deployments_for_service.parse_args",
            return_value=mock.Mock(verbose=False,
                                   soa_dir=fake_soa_dir,
                                   service="fake_service"),
            autospec=True,
    ) as parse_patch, mock.patch(
            "os.path.abspath", return_value="ABSOLUTE", autospec=True
    ) as abspath_patch, mock.patch(
            "paasta_tools.generate_deployments_for_service.get_deploy_group_mappings",
            return_value=(
                {
                    "MAP": {
                        "docker_image": "PINGS",
                        "desired_state": "start"
                    }
                },
                mock.sentinel.v2_mappings,
            ),
            autospec=True,
    ) as mappings_patch, mock.patch(
            "os.path.join", return_value="JOIN", autospec=True
    ) as join_patch, mock.patch(
            "builtins.open", file_mock, autospec=None
    ) as open_patch, mock.patch(
            "json.dump", autospec=True
    ) as json_dump_patch, mock.patch(
            "json.load", return_value={"OLD_MAP": "PINGS"}, autospec=True
    ) as json_load_patch, mock.patch(
            "paasta_tools.generate_deployments_for_service.atomic_file_write",
            autospec=True) as atomic_file_write_patch:
        generate_deployments_for_service.main()
        parse_patch.assert_called_once_with()
        abspath_patch.assert_called_once_with(fake_soa_dir)
        mappings_patch.assert_called_once_with(soa_dir="ABSOLUTE",
                                               service="fake_service"),

        join_patch.assert_any_call(
            "ABSOLUTE", "fake_service",
            generate_deployments_for_service.TARGET_FILE),
        assert join_patch.call_count == 2

        atomic_file_write_patch.assert_called_once_with("JOIN")
        open_patch.assert_called_once_with("JOIN", "r")
        json_dump_patch.assert_called_once_with(
            {
                "v1": {
                    "MAP": {
                        "docker_image": "PINGS",
                        "desired_state": "start"
                    }
                },
                "v2": mock.sentinel.v2_mappings,
            },
            atomic_file_write_patch.return_value.__enter__.return_value,
        )
        json_load_patch.assert_called_once_with(
            file_mock.return_value.__enter__.return_value)

        # test no update to file if content unchanged
        json_load_patch.return_value = {
            "v1": {
                "MAP": {
                    "docker_image": "PINGS",
                    "desired_state": "start"
                }
            },
            "v2": mock.sentinel.v2_mappings,
        }
        json_dump_patch.reset_mock()
        generate_deployments_for_service.main()
        assert not json_dump_patch.called

        # test IOError path
        open_patch.side_effect = IOError
        generate_deployments_for_service.main()
        assert json_dump_patch.called
def test_main():
    fake_soa_dir = '/etc/true/null'
    file_mock = mock.mock_open()
    with mock.patch(
            'paasta_tools.generate_deployments_for_service.parse_args',
            return_value=mock.Mock(verbose=False,
                                   soa_dir=fake_soa_dir,
                                   service='fake_service'),
            autospec=True,
    ) as parse_patch, mock.patch(
            'os.path.abspath',
            return_value='ABSOLUTE',
            autospec=True,
    ) as abspath_patch, mock.patch(
            'paasta_tools.generate_deployments_for_service.get_deploy_group_mappings',
            return_value=({
                'MAP': {
                    'docker_image': 'PINGS',
                    'desired_state': 'start'
                }
            }, mock.sentinel.v2_mappings),
            autospec=True,
    ) as mappings_patch, mock.patch(
            'os.path.join',
            return_value='JOIN',
            autospec=True,
    ) as join_patch, mock.patch(
            'builtins.open',
            file_mock,
            autospec=None,
    ) as open_patch, mock.patch(
            'json.dump',
            autospec=True,
    ) as json_dump_patch, mock.patch(
            'json.load',
            return_value={'OLD_MAP': 'PINGS'},
            autospec=True,
    ) as json_load_patch, mock.patch(
            'paasta_tools.generate_deployments_for_service.atomic_file_write',
            autospec=True,
    ) as atomic_file_write_patch:
        generate_deployments_for_service.main()
        parse_patch.assert_called_once_with()
        abspath_patch.assert_called_once_with(fake_soa_dir)
        mappings_patch.assert_called_once_with(
            soa_dir='ABSOLUTE',
            service='fake_service',
        ),

        join_patch.assert_any_call(
            'ABSOLUTE', 'fake_service',
            generate_deployments_for_service.TARGET_FILE),
        assert join_patch.call_count == 2

        atomic_file_write_patch.assert_called_once_with('JOIN')
        open_patch.assert_called_once_with('JOIN', 'r')
        json_dump_patch.assert_called_once_with(
            {
                'v1': {
                    'MAP': {
                        'docker_image': 'PINGS',
                        'desired_state': 'start'
                    },
                },
                'v2': mock.sentinel.v2_mappings,
            },
            atomic_file_write_patch.return_value.__enter__.return_value,
        )
        json_load_patch.assert_called_once_with(
            file_mock.return_value.__enter__.return_value)

        # test no update to file if content unchanged
        json_load_patch.return_value = {
            'v1': {
                'MAP': {
                    'docker_image': 'PINGS',
                    'desired_state': 'start'
                },
            },
            'v2': mock.sentinel.v2_mappings,
        }
        json_dump_patch.reset_mock()
        generate_deployments_for_service.main()
        assert not json_dump_patch.called

        # test IOError path
        open_patch.side_effect = IOError
        generate_deployments_for_service.main()
        assert json_dump_patch.called