def test_paasta_rollback_mark_for_deployment_wrong_cluster( mock_mark_for_deployment, mock_get_git_url, mock_list_clusters, mock_figure_out_service_name, mock_validate_given_instances, mock_list_all_instances_for_service, ): fake_args = Mock( cluster='cluster1', instances='instance1', commit='123456' ) mock_get_git_url.return_value = 'git://git.repo' mock_figure_out_service_name.return_value = 'fakeservice' mock_list_clusters.return_value = ['cluster0', 'cluster2'] mock_list_all_instances_for_service.return_value = ['instance1', 'instance2'] mock_validate_given_instances.return_value = [['instance1'], []] with raises(SystemExit) as sys_exit: paasta_rollback(fake_args) assert sys_exit.value_code == 1 assert mock_mark_for_deployment.call_count == 0
def test_paasta_rollback_mark_for_deployment_wrong_cluster( mock_mark_for_deployment, mock_get_git_url, mock_list_clusters, mock_figure_out_service_name, mock_validate_given_instances, mock_list_all_instances_for_service, ): fake_args = Mock(cluster='cluster1', instances='instance1', commit='123456') mock_get_git_url.return_value = 'git://git.repo' mock_figure_out_service_name.return_value = 'fakeservice' mock_list_clusters.return_value = ['cluster0', 'cluster2'] mock_list_all_instances_for_service.return_value = [ 'instance1', 'instance2' ] mock_validate_given_instances.return_value = [['instance1'], []] with raises(SystemExit) as sys_exit: paasta_rollback(fake_args) assert sys_exit.value_code == 1 assert mock_mark_for_deployment.call_count == 0
def test_paasta_rollback_mark_for_deployment_wrong_deploy_group_args( mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_get_instance_config_for_service, ): fake_args = Mock( commit='123456', deploy_groups='test_group,fake_deploy.group', ) mock_get_git_url.return_value = 'git://git.repo' mock_figure_out_service_name.return_value = 'fakeservice' mock_get_instance_config_for_service.return_value = [ MarathonServiceConfig( instance='some_other_instance', cluster='some_other_cluster', service=mock_figure_out_service_name.return_value, config_dict={}, branch_dict={}, ), ] with raises(SystemExit) as sys_exit: paasta_rollback(fake_args) assert sys_exit.value_code == 1 assert mock_mark_for_deployment.call_count == 0
def test_paasta_rollback_mark_for_deployment_simple_invocation( mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_get_instance_config, ): fake_args = Mock( deploy_groups='fake_deploy_groups', commit='123456' ) mock_get_git_url.return_value = 'git://git.repo' mock_figure_out_service_name.return_value = 'fakeservice' mock_get_instance_config.return_value = [MarathonServiceConfig( service='', cluster='', instance='', branch_dict={}, config_dict={'deploy_group': 'fake_deploy_groups'}, )] with raises(SystemExit) as sys_exit: paasta_rollback(fake_args) assert sys_exit.value_code == 0 mock_mark_for_deployment.assert_called_once_with( git_url=mock_get_git_url.return_value, deploy_group=fake_args.deploy_groups, service=mock_figure_out_service_name.return_value, commit=fake_args.commit ) assert mock_mark_for_deployment.call_count == 1
def test_paasta_rollback_mark_for_deployment_no_deploy_group_arg( mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_get_instance_config, ): fake_args = Mock( commit='123456', deploy_groups='', ) mock_get_git_url.return_value = 'git://git.repo' mock_figure_out_service_name.return_value = 'fakeservice' mock_get_instance_config.return_value = [ MarathonServiceConfig( service=mock_figure_out_service_name.return_value, cluster='', instance='', config_dict={'deploy_group': 'fake_deploy_group'}, branch_dict={}, ), MarathonServiceConfig( service=mock_figure_out_service_name.return_value, cluster='fake_cluster', instance='fake_instance', config_dict={}, branch_dict={}, ), ] with raises(SystemExit) as sys_exit: paasta_rollback(fake_args) assert sys_exit.value_code == 0 expected = [ call( git_url=mock_get_git_url.return_value, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, deploy_group='fake_cluster.fake_instance', ), call( git_url=mock_get_git_url.return_value, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, deploy_group='fake_deploy_group', ), ] assert all([x in expected for x in mock_mark_for_deployment.mock_calls]) assert len(expected) == len(mock_mark_for_deployment.mock_calls) assert mock_mark_for_deployment.call_count == 2
def test_paasta_rollback_mark_for_deployment_multiple_instance_args( mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_get_instance_config_for_service, ): fake_args = Mock( deploy_groups='cluster.instance1,cluster.instance2', commit='123456', ) mock_get_git_url.return_value = 'git://git.repo' mock_figure_out_service_name.return_value = 'fakeservice' mock_get_instance_config_for_service.return_value = [ MarathonServiceConfig( instance='instance1', cluster='cluster', service=mock_figure_out_service_name.return_value, config_dict={}, branch_dict={}, ), MarathonServiceConfig( instance='instance2', cluster='cluster', service=mock_figure_out_service_name.return_value, config_dict={}, branch_dict={}, ), ] with raises(SystemExit) as sys_exit: paasta_rollback(fake_args) assert sys_exit.value_code == 0 expected = [ call( git_url=mock_get_git_url.return_value, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, deploy_group='cluster.instance1', ), call( git_url=mock_get_git_url.return_value, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, deploy_group='cluster.instance2', ), ] mock_mark_for_deployment.assert_has_calls(expected, any_order=True) assert mock_mark_for_deployment.call_count == 2
def test_paasta_rollback_mark_for_deployment_simple_invocation( mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_list_deploy_groups, ): fake_args = Mock( deploy_groups='fake_deploy_groups', commit='123456' ) mock_get_git_url.return_value = 'git://git.repo' mock_figure_out_service_name.return_value = 'fakeservice' mock_list_deploy_groups.return_value = ['fake_deploy_groups'] mock_mark_for_deployment.return_value = 0 assert paasta_rollback(fake_args) == 0 mock_mark_for_deployment.assert_called_once_with( git_url=mock_get_git_url.return_value, deploy_group=fake_args.deploy_groups, service=mock_figure_out_service_name.return_value, commit=fake_args.commit ) assert mock_mark_for_deployment.call_count == 1
def test_paasta_rollback_git_sha_was_not_marked_before( mock_get_git_shas_for_service, mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_list_deploy_groups, mock_log_audit, ): fake_args, _ = parse_args( ["rollback", "-s", "fakeservice", "-k", "abcd" * 10, "-l", "fake_deploy_group1"] ) mock_get_git_shas_for_service.return_value = { "fake_sha1": ("20170403T025512", "fake_deploy_group1"), "fake_sha2": ("20161006T025416", "fake_deploy_group2"), } mock_get_git_url.return_value = "git://git.repo" mock_figure_out_service_name.return_value = fake_args.service mock_list_deploy_groups.return_value = [fake_args.deploy_groups] mock_mark_for_deployment.return_value = 0 assert paasta_rollback(fake_args) == 1 assert not mock_mark_for_deployment.called assert not mock_log_audit.called
def test_paasta_rollback_mark_for_deployment_simple_invocation( mock_get_git_shas_for_service, mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_list_deploy_groups, ): fake_args, _ = parse_args([ "rollback", "-s", "fakeservice", "-k", "abcd" * 10, "-l", "fake_deploy_group1" ]) mock_get_git_shas_for_service.return_value = { fake_args.commit: ("20170403T025512", fake_args.deploy_groups), "dcba" * 10: ("20161006T025416", "fake_deploy_group2"), } mock_get_git_url.return_value = "git://git.repo" mock_figure_out_service_name.return_value = fake_args.service mock_list_deploy_groups.return_value = [fake_args.deploy_groups] mock_mark_for_deployment.return_value = 0 assert paasta_rollback(fake_args) == 0 mock_mark_for_deployment.assert_called_once_with( git_url=mock_get_git_url.return_value, deploy_group=fake_args.deploy_groups, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, )
def test_paasta_rollback_mark_for_deployment_simple_invocation( mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_get_instance_config, ): fake_args = Mock(deploy_groups='fake_deploy_groups', commit='123456') mock_get_git_url.return_value = 'git://git.repo' mock_figure_out_service_name.return_value = 'fakeservice' mock_get_instance_config.return_value = [ MarathonServiceConfig( service='', cluster='', instance='', branch_dict={}, config_dict={'deploy_group': 'fake_deploy_groups'}, ) ] mock_mark_for_deployment.return_value = 0 assert paasta_rollback(fake_args) == 0 mock_mark_for_deployment.assert_called_once_with( git_url=mock_get_git_url.return_value, deploy_group=fake_args.deploy_groups, service=mock_figure_out_service_name.return_value, commit=fake_args.commit) assert mock_mark_for_deployment.call_count == 1
def test_paasta_rollback_with_force( mock_get_git_shas_for_service, mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_list_deploy_groups, ): fake_args, _ = parse_args([ 'rollback', '-s', 'fakeservice', '-k', 'abcd' * 10, '-l', 'fake_deploy_group1', '-f', ]) mock_get_git_shas_for_service.return_value = { 'fake_sha1': ('20170403T025512', 'fake_deploy_group1'), 'fake_sha2': ('20161006T025416', 'fake_deploy_group2'), } mock_get_git_url.return_value = 'git://git.repo' mock_figure_out_service_name.return_value = fake_args.service mock_list_deploy_groups.return_value = [fake_args.deploy_groups] mock_mark_for_deployment.return_value = 0 assert paasta_rollback(fake_args) == 0 mock_mark_for_deployment.assert_called_once_with( git_url=mock_get_git_url.return_value, deploy_group=fake_args.deploy_groups, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, )
def test_paasta_rollback_mark_for_deployment_wrong_deploy_group_args( mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_get_instance_config_for_service, ): fake_args = Mock( commit='123456', deploy_groups='test_group,fake_deploy.group', ) mock_get_git_url.return_value = 'git://git.repo' mock_figure_out_service_name.return_value = 'fakeservice' mock_get_instance_config_for_service.return_value = [ MarathonServiceConfig( instance='some_other_instance', cluster='some_other_cluster', service=mock_figure_out_service_name.return_value, config_dict={}, branch_dict={}, ), ] assert paasta_rollback(fake_args) == 1 assert mock_mark_for_deployment.call_count == 0
def test_paasta_rollback_git_sha_was_not_marked_before( mock_get_git_shas_for_service, mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_list_deploy_groups, ): fake_args, _ = parse_args([ 'rollback', '-s', 'fakeservice', '-k', 'abcd' * 10, '-l', 'fake_deploy_group1', ]) mock_get_git_shas_for_service.return_value = { 'fake_sha1': ('20170403T025512', 'fake_deploy_group1'), 'fake_sha2': ('20161006T025416', 'fake_deploy_group2'), } mock_get_git_url.return_value = 'git://git.repo' mock_figure_out_service_name.return_value = fake_args.service mock_list_deploy_groups.return_value = [fake_args.deploy_groups] mock_mark_for_deployment.return_value = 0 assert paasta_rollback(fake_args) == 1 assert not mock_mark_for_deployment.called
def test_paasta_rollback_with_force( mock_deploy_authz_check, mock_get_git_shas_for_service, mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_list_deploy_groups, mock_log_audit, mock_get_currently_deployed_sha, ): fake_args, _ = parse_args( [ "rollback", "-s", "fakeservice", "-k", "abcd" * 10, "-l", "fake_deploy_group1", "-f", ] ) mock_get_git_shas_for_service.return_value = { "fake_sha1": ("20170403T025512", "fake_deploy_group1"), "fake_sha2": ("20161006T025416", "fake_deploy_group2"), } mock_get_git_url.return_value = "git://git.repo" mock_figure_out_service_name.return_value = fake_args.service mock_list_deploy_groups.return_value = [fake_args.deploy_groups] mock_mark_for_deployment.return_value = 0 mock_get_currently_deployed_sha.return_value = "1234" * 10 assert paasta_rollback(fake_args) == 0 mock_mark_for_deployment.assert_called_once_with( git_url=mock_get_git_url.return_value, deploy_group=fake_args.deploy_groups, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, ) # ensure that we logged each deploy group that was rolled back AND that we logged things correctly mock_log_audit.call_count == len(fake_args.deploy_groups) for call_args in mock_log_audit.call_args_list: _, call_kwargs = call_args assert call_kwargs["action"] == "rollback" assert ( call_kwargs["action_details"]["rolled_back_from"] == mock_get_currently_deployed_sha.return_value ) assert call_kwargs["action_details"]["rolled_back_to"] == fake_args.commit assert ( call_kwargs["action_details"]["rollback_type"] == RollbackTypes.USER_INITIATED_ROLLBACK.value ) assert call_kwargs["action_details"]["deploy_group"] in fake_args.deploy_groups assert call_kwargs["service"] == fake_args.service
def test_paasta_rollback_mark_for_deployment_simple_invocation( mock_can_user_deploy_service, mock_get_versions_for_service, mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_list_deploy_groups, mock_log_audit, mock_get_currently_deployed_version, ): fake_args, _ = parse_args([ "rollback", "-s", "fakeservice", "-k", "abcd" * 10, "-l", "fake_deploy_group1" ]) mock_get_versions_for_service.return_value = { DeploymentVersion(sha=fake_args.commit, image_version=None): ( "20170403T025512", fake_args.deploy_groups, ), DeploymentVersion(sha="dcba" * 10, image_version=None): ( "20161006T025416", "fake_deploy_group2", ), } mock_get_git_url.return_value = "git://git.repo" mock_figure_out_service_name.return_value = fake_args.service mock_list_deploy_groups.return_value = [fake_args.deploy_groups] mock_mark_for_deployment.return_value = 0 mock_get_currently_deployed_version.return_value = DeploymentVersion( sha="1234" * 10, image_version=None) assert paasta_rollback(fake_args) == 0 mock_mark_for_deployment.assert_called_once_with( git_url=mock_get_git_url.return_value, deploy_group=fake_args.deploy_groups, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, image_version=None, ) # ensure that we logged each deploy group that was rolled back AND that we logged things correctly mock_log_audit.call_count == len(fake_args.deploy_groups) for call_args in mock_log_audit.call_args_list: _, call_kwargs = call_args assert call_kwargs["action"] == "rollback" assert call_kwargs["action_details"]["rolled_back_from"] == str( mock_get_currently_deployed_version.return_value) assert call_kwargs["action_details"][ "rolled_back_to"] == fake_args.commit assert (call_kwargs["action_details"]["rollback_type"] == RollbackTypes.USER_INITIATED_ROLLBACK.value) assert call_kwargs["action_details"][ "deploy_group"] in fake_args.deploy_groups assert call_kwargs["service"] == fake_args.service
def test_paasta_rollback_mark_for_deployment_multiple_instance_args( mock_mark_for_deployment, mock_get_git_url, mock_list_clusters, mock_figure_out_service_name, mock_validate_given_instances, mock_list_all_instances_for_service, ): fake_args = Mock( cluster='cluster1', instances='instance1,instance2', commit='123456' ) mock_get_git_url.return_value = 'git://git.repo' mock_figure_out_service_name.return_value = 'fakeservice' mock_list_clusters.return_value = ['cluster1', 'cluster2'] mock_list_all_instances_for_service.return_value = ['instance1', 'instance2', 'instance3'] mock_validate_given_instances.return_value = [['instance1', 'instance2'], []] with raises(SystemExit) as sys_exit: paasta_rollback(fake_args) assert sys_exit.value_code == 0 expected = [ call( git_url=mock_get_git_url.return_value, cluster=fake_args.cluster, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, instance='instance1' ), call( git_url=mock_get_git_url.return_value, cluster=fake_args.cluster, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, instance='instance2' ), ] mock_mark_for_deployment.assert_has_calls(expected, any_order=True) assert mock_mark_for_deployment.call_count == 2
def test_paasta_rollback_mark_for_deployment_no_instance_arg( mock_mark_for_deployment, mock_get_git_url, mock_list_clusters, mock_figure_out_service_name, mock_validate_given_instances, mock_list_all_instances_for_service, ): fake_args = Mock( cluster='cluster1', commit='123456', instances='', ) mock_get_git_url.return_value = 'git://git.repo' mock_figure_out_service_name.return_value = 'fakeservice' mock_list_clusters.return_value = ['cluster1', 'cluster2'] mock_list_all_instances_for_service.return_value = [ 'instance1', 'instance2' ] mock_validate_given_instances.return_value = [['instance1', 'instance2'], []] with raises(SystemExit) as sys_exit: paasta_rollback(fake_args) assert sys_exit.value_code == 0 expected = [ call(git_url=mock_get_git_url.return_value, cluster=fake_args.cluster, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, instance='instance1'), call(git_url=mock_get_git_url.return_value, cluster=fake_args.cluster, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, instance='instance2'), ] assert expected == mock_mark_for_deployment.mock_calls assert mock_mark_for_deployment.call_count == 2
def test_paasta_rollback_mark_for_deployment_no_deploy_group_arg( mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_get_instance_config, ): fake_args = Mock( commit='123456', deploy_groups='', ) mock_get_git_url.return_value = 'git://git.repo' mock_figure_out_service_name.return_value = 'fakeservice' mock_get_instance_config.return_value = [ MarathonServiceConfig( service=mock_figure_out_service_name.return_value, cluster='', instance='', config_dict={'deploy_group': 'fake_deploy_group'}, branch_dict={}, ), MarathonServiceConfig( service=mock_figure_out_service_name.return_value, cluster='fake_cluster', instance='fake_instance', config_dict={}, branch_dict={}, ), ] mock_mark_for_deployment.return_value = 0 assert paasta_rollback(fake_args) == 0 expected = [ call( git_url=mock_get_git_url.return_value, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, deploy_group='fake_cluster.fake_instance', ), call( git_url=mock_get_git_url.return_value, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, deploy_group='fake_deploy_group', ), ] assert all([x in expected for x in mock_mark_for_deployment.mock_calls]) assert len(expected) == len(mock_mark_for_deployment.mock_calls) assert mock_mark_for_deployment.call_count == 2
def test_paasta_rollback_mark_for_deployment_multiple_instance_args( mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_get_instance_config_for_service, ): fake_args = Mock( deploy_groups='cluster.instance1,cluster.instance2', commit='123456', ) mock_get_git_url.return_value = 'git://git.repo' mock_figure_out_service_name.return_value = 'fakeservice' mock_get_instance_config_for_service.return_value = [ MarathonServiceConfig( instance='instance1', cluster='cluster', service=mock_figure_out_service_name.return_value, config_dict={}, branch_dict={}, ), MarathonServiceConfig( instance='instance2', cluster='cluster', service=mock_figure_out_service_name.return_value, config_dict={}, branch_dict={}, ), ] mock_mark_for_deployment.return_value = 0 assert paasta_rollback(fake_args) == 0 expected = [ call( git_url=mock_get_git_url.return_value, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, deploy_group='cluster.instance1', ), call( git_url=mock_get_git_url.return_value, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, deploy_group='cluster.instance2', ), ] mock_mark_for_deployment.assert_has_calls(expected, any_order=True) assert mock_mark_for_deployment.call_count == 2
def test_paasta_rollback_mark_for_deployment_no_deploy_group_arg( mock_can_user_deploy_service, mock_get_versions_for_service, mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_list_deploy_groups, mock_log_audit, mock_get_currently_deployed_version, ): fake_args, _ = parse_args( ["rollback", "-s", "fakeservice", "-k", "abcd" * 10]) mock_get_versions_for_service.return_value = { DeploymentVersion(sha="fake_sha1", image_version=None): ( "20170403T025512", "fake_deploy_group1", ), DeploymentVersion(sha=fake_args.commit, image_version=None): ( "20161006T025416", "fake_deploy_group2", ), } mock_get_git_url.return_value = "git://git.repo" mock_figure_out_service_name.return_value = fake_args.service mock_list_deploy_groups.return_value = [ "fake_deploy_group", "fake_cluster.fake_instance", ] mock_mark_for_deployment.return_value = 0 mock_get_currently_deployed_version.return_value = DeploymentVersion( sha="1234" * 10, image_version=None) assert paasta_rollback(fake_args) == 1 assert mock_mark_for_deployment.call_count == 0 mock_log_audit.call_count == len(fake_args.deploy_groups) for call_args in mock_log_audit.call_args_list: _, call_kwargs = call_args assert call_kwargs["action"] == "rollback" assert call_kwargs["action_details"]["rolled_back_from"] == str( mock_get_currently_deployed_version.return_value) assert call_kwargs["action_details"][ "rolled_back_to"] == fake_args.commit assert (call_kwargs["action_details"]["rollback_type"] == RollbackTypes.USER_INITIATED_ROLLBACK.value) assert (call_kwargs["action_details"]["deploy_group"] in mock_list_deploy_groups.return_value) assert call_kwargs["service"] == fake_args.service
def test_paasta_rollback_mark_for_deployment_wrong_deploy_group_args( mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_list_deploy_groups, mock_log_audit, ): fake_args, _ = parse_args( ["rollback", "-s", "fakeservice", "-k", "abcd" * 10, "-l", "wrong_deploy_group"] ) mock_get_git_url.return_value = "git://git.repo" mock_figure_out_service_name.return_value = fake_args.service mock_list_deploy_groups.return_value = ["some_other_instance.some_other_cluster"] assert paasta_rollback(fake_args) == 1 assert not mock_mark_for_deployment.called assert not mock_log_audit.called
def test_paasta_rollback_mark_for_deployment_no_deploy_group_arg( mock_get_git_shas_for_service, mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_list_deploy_groups, ): fake_args, _ = parse_args([ 'rollback', '-s', 'fakeservice', '-k', 'abcd' * 10, ]) mock_get_git_shas_for_service.return_value = { 'fake_sha1': ('20170403T025512', 'fake_deploy_group1'), fake_args.commit: ('20161006T025416', 'fake_deploy_group2'), } mock_get_git_url.return_value = 'git://git.repo' mock_figure_out_service_name.return_value = fake_args.service mock_list_deploy_groups.return_value = [ 'fake_deploy_group', 'fake_cluster.fake_instance', ] mock_mark_for_deployment.return_value = 0 assert paasta_rollback(fake_args) == 0 expected = [ call( git_url=mock_get_git_url.return_value, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, deploy_group='fake_cluster.fake_instance', ), call( git_url=mock_get_git_url.return_value, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, deploy_group='fake_deploy_group', ), ] assert all([x in expected for x in mock_mark_for_deployment.mock_calls]) assert mock_mark_for_deployment.call_count == len(expected)
def test_paasta_rollback_mark_for_deployment_wrong_deploy_group_args( mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_list_deploy_groups, ): fake_args, _ = parse_args([ 'rollback', '-s', 'fakeservice', '-k', 'abcd' * 10, '-l', 'wrong_deploy_group', ]) mock_get_git_url.return_value = 'git://git.repo' mock_figure_out_service_name.return_value = fake_args.service mock_list_deploy_groups.return_value = ['some_other_instance.some_other_cluster'] assert paasta_rollback(fake_args) == 1 assert not mock_mark_for_deployment.called
def test_paasta_rollback_mark_for_deployment_wrong_deploy_group_args( mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_list_deploy_groups, ): fake_args = Mock( commit='123456', deploy_groups='test_group,fake_deploy.group', ) mock_get_git_url.return_value = 'git://git.repo' mock_figure_out_service_name.return_value = 'fakeservice' mock_list_deploy_groups.return_value = ['some_other_instance.some_other_cluster'] assert paasta_rollback(fake_args) == 1 assert mock_mark_for_deployment.call_count == 0
def test_paasta_rollback_mark_for_deployment_multiple_deploy_group_args( mock_get_git_shas_for_service, mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_list_deploy_groups, ): fake_args, _ = parse_args([ "rollback", "-s", "fakeservice", "-k", "abcd" * 10, "-l", "cluster.instance1,cluster.instance2", ]) fake_deploy_groups = fake_args.deploy_groups.split(",") mock_get_git_shas_for_service.return_value = { "fake_sha1": ("20170403T025512", "fake_deploy_group1"), fake_args.commit: ("20161006T025416", "fake_deploy_group2"), } mock_get_git_url.return_value = "git://git.repo" mock_figure_out_service_name.return_value = fake_args.service mock_list_deploy_groups.return_value = fake_deploy_groups mock_mark_for_deployment.return_value = 0 assert paasta_rollback(fake_args) == 0 expected = [ call( git_url=mock_get_git_url.return_value, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, deploy_group=deploy_group, ) for deploy_group in fake_deploy_groups ] mock_mark_for_deployment.assert_has_calls(expected, any_order=True) assert mock_mark_for_deployment.call_count == len(fake_deploy_groups)
def test_paasta_rollback_mark_for_deployment_no_deploy_group_arg( mock_get_git_shas_for_service, mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_list_deploy_groups, ): fake_args, _ = parse_args( ["rollback", "-s", "fakeservice", "-k", "abcd" * 10]) mock_get_git_shas_for_service.return_value = { "fake_sha1": ("20170403T025512", "fake_deploy_group1"), fake_args.commit: ("20161006T025416", "fake_deploy_group2"), } mock_get_git_url.return_value = "git://git.repo" mock_figure_out_service_name.return_value = fake_args.service mock_list_deploy_groups.return_value = [ "fake_deploy_group", "fake_cluster.fake_instance", ] mock_mark_for_deployment.return_value = 0 assert paasta_rollback(fake_args) == 0 expected = [ call( git_url=mock_get_git_url.return_value, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, deploy_group="fake_cluster.fake_instance", ), call( git_url=mock_get_git_url.return_value, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, deploy_group="fake_deploy_group", ), ] assert all([x in expected for x in mock_mark_for_deployment.mock_calls]) assert mock_mark_for_deployment.call_count == len(expected)
def test_paasta_rollback_mark_for_deployment_multiple_instance_args( mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_list_deploy_groups, ): fake_args = Mock( deploy_groups='cluster.instance1,cluster.instance2', commit='123456', ) mock_get_git_url.return_value = 'git://git.repo' mock_figure_out_service_name.return_value = 'fakeservice' mock_list_deploy_groups.return_value = [ 'cluster.instance1', 'cluster.instance2' ] mock_mark_for_deployment.return_value = 0 assert paasta_rollback(fake_args) == 0 expected = [ call( git_url=mock_get_git_url.return_value, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, deploy_group='cluster.instance1', ), call( git_url=mock_get_git_url.return_value, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, deploy_group='cluster.instance2', ), ] mock_mark_for_deployment.assert_has_calls(expected, any_order=True) assert mock_mark_for_deployment.call_count == 2
def test_paasta_rollback_mark_for_deployment_no_deploy_group_arg( mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_list_deploy_groups, ): fake_args = Mock( commit='123456', deploy_groups='', ) mock_get_git_url.return_value = 'git://git.repo' mock_figure_out_service_name.return_value = 'fakeservice' mock_list_deploy_groups.return_value = [ 'fake_deploy_group', 'fake_cluster.fake_instance'] mock_mark_for_deployment.return_value = 0 assert paasta_rollback(fake_args) == 0 expected = [ call( git_url=mock_get_git_url.return_value, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, deploy_group='fake_cluster.fake_instance', ), call( git_url=mock_get_git_url.return_value, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, deploy_group='fake_deploy_group', ), ] assert all([x in expected for x in mock_mark_for_deployment.mock_calls]) assert len(expected) == len(mock_mark_for_deployment.mock_calls) assert mock_mark_for_deployment.call_count == 2
def test_paasta_rollback_mark_for_deployment_multiple_deploy_group_args( mock_get_git_shas_for_service, mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_list_deploy_groups, ): fake_args, _ = parse_args([ 'rollback', '-s', 'fakeservice', '-k', 'abcd' * 10, '-l', 'cluster.instance1,cluster.instance2', ]) fake_deploy_groups = fake_args.deploy_groups.split(',') mock_get_git_shas_for_service.return_value = { 'fake_sha1': ('20170403T025512', 'fake_deploy_group1'), fake_args.commit: ('20161006T025416', 'fake_deploy_group2'), } mock_get_git_url.return_value = 'git://git.repo' mock_figure_out_service_name.return_value = fake_args.service mock_list_deploy_groups.return_value = fake_deploy_groups mock_mark_for_deployment.return_value = 0 assert paasta_rollback(fake_args) == 0 expected = [ call( git_url=mock_get_git_url.return_value, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, deploy_group=deploy_group, ) for deploy_group in fake_deploy_groups ] mock_mark_for_deployment.assert_has_calls(expected, any_order=True) assert mock_mark_for_deployment.call_count == len(fake_deploy_groups)
def test_paasta_rollback_mark_for_deployment_multiple_deploy_group_args( mock_get_git_shas_for_service, mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_list_deploy_groups, mock_log_audit, mock_get_currently_deployed_sha, ): fake_args, _ = parse_args( [ "rollback", "-s", "fakeservice", "-k", "abcd" * 10, "-l", "cluster.instance1,cluster.instance2", ] ) fake_deploy_groups = fake_args.deploy_groups.split(",") mock_get_git_shas_for_service.return_value = { "fake_sha1": ("20170403T025512", "fake_deploy_group1"), fake_args.commit: ("20161006T025416", "fake_deploy_group2"), } mock_get_git_url.return_value = "git://git.repo" mock_figure_out_service_name.return_value = fake_args.service mock_list_deploy_groups.return_value = fake_deploy_groups mock_mark_for_deployment.return_value = 0 mock_get_currently_deployed_sha.return_value = "1234" * 10 assert paasta_rollback(fake_args) == 0 expected = [ call( git_url=mock_get_git_url.return_value, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, deploy_group=deploy_group, ) for deploy_group in fake_deploy_groups ] mock_mark_for_deployment.assert_has_calls(expected, any_order=True) assert mock_mark_for_deployment.call_count == len(fake_deploy_groups) mock_log_audit.call_count == len(fake_args.deploy_groups) for call_args in mock_log_audit.call_args_list: _, call_kwargs = call_args assert call_kwargs["action"] == "rollback" assert ( call_kwargs["action_details"]["rolled_back_from"] == mock_get_currently_deployed_sha.return_value ) assert call_kwargs["action_details"]["rolled_back_to"] == fake_args.commit assert ( call_kwargs["action_details"]["rollback_type"] == RollbackTypes.USER_INITIATED_ROLLBACK.value ) assert ( call_kwargs["action_details"]["deploy_group"] in mock_list_deploy_groups.return_value ) assert call_kwargs["service"] == fake_args.service
def test_paasta_rollback_mark_for_deployment_no_deploy_group_arg( mock_get_git_shas_for_service, mock_mark_for_deployment, mock_get_git_url, mock_figure_out_service_name, mock_list_deploy_groups, mock_log_audit, mock_get_currently_deployed_sha, ): fake_args, _ = parse_args(["rollback", "-s", "fakeservice", "-k", "abcd" * 10]) mock_get_git_shas_for_service.return_value = { "fake_sha1": ("20170403T025512", "fake_deploy_group1"), fake_args.commit: ("20161006T025416", "fake_deploy_group2"), } mock_get_git_url.return_value = "git://git.repo" mock_figure_out_service_name.return_value = fake_args.service mock_list_deploy_groups.return_value = [ "fake_deploy_group", "fake_cluster.fake_instance", ] mock_mark_for_deployment.return_value = 0 mock_get_currently_deployed_sha.return_value = "1234" * 10 assert paasta_rollback(fake_args) == 0 expected = [ call( git_url=mock_get_git_url.return_value, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, deploy_group="fake_cluster.fake_instance", ), call( git_url=mock_get_git_url.return_value, service=mock_figure_out_service_name.return_value, commit=fake_args.commit, deploy_group="fake_deploy_group", ), ] assert all([x in expected for x in mock_mark_for_deployment.mock_calls]) assert mock_mark_for_deployment.call_count == len(expected) mock_log_audit.call_count == len(fake_args.deploy_groups) for call_args in mock_log_audit.call_args_list: _, call_kwargs = call_args assert call_kwargs["action"] == "rollback" assert ( call_kwargs["action_details"]["rolled_back_from"] == mock_get_currently_deployed_sha.return_value ) assert call_kwargs["action_details"]["rolled_back_to"] == fake_args.commit assert ( call_kwargs["action_details"]["rollback_type"] == RollbackTypes.USER_INITIATED_ROLLBACK.value ) assert ( call_kwargs["action_details"]["deploy_group"] in mock_list_deploy_groups.return_value ) assert call_kwargs["service"] == fake_args.service