Exemple #1
0
def test_failing_chronos_job_missing_parent(
    mock_path_to_soa_dir_service,
    mock_load_chronos_job_config,
    mock_list_all_instances_for_service,
    mock_list_clusters,
    mock_get_services_for_cluster,
    capfd,
):
    fake_service = 'fake-service'
    fake_instance = 'fake-instance'
    fake_cluster = 'penguin'
    chronos_spacer = paasta_tools.chronos_tools.INTERNAL_SPACER

    mock_chronos_job = mock.Mock(autospec=True)
    mock_chronos_job.get_parents.return_value = [
        "{}{}{}".format(fake_service, chronos_spacer, 'parent-1')
    ]
    mock_chronos_job.validate.return_value = (True, [])

    mock_path_to_soa_dir_service.return_value = ('fake_soa_dir', fake_service)
    mock_list_clusters.return_value = [fake_cluster]
    mock_list_all_instances_for_service.return_value = [fake_instance]
    mock_get_services_for_cluster.return_value = [(fake_service, fake_instance)
                                                  ]
    mock_load_chronos_job_config.return_value = mock_chronos_job

    assert not validate_chronos('fake_service_path')

    output, _ = capfd.readouterr()
    expected_output = 'Parent job fake-service.parent-1 could not be found'
    assert invalid_chronos_instance(fake_cluster, fake_instance,
                                    expected_output) in output
Exemple #2
0
def test_failing_chronos_job_validate(
    mock_path_to_soa_dir_service,
    mock_load_chronos_job_config,
    mock_list_all_instances_for_service,
    mock_list_clusters,
    mock_get_services_for_cluster,
    capfd,
):
    fake_service = 'fake-service'
    fake_instance = 'fake-instance'
    fake_cluster = 'penguin'

    mock_chronos_job = mock.Mock(autospec=True)
    mock_chronos_job.get_parents.return_value = None
    mock_chronos_job.validate.return_value = (False, [
        'something is wrong with the config'
    ])

    mock_path_to_soa_dir_service.return_value = ('fake_soa_dir', fake_service)
    mock_list_clusters.return_value = [fake_cluster]
    mock_list_all_instances_for_service.return_value = [fake_instance]
    mock_get_services_for_cluster.return_value = [(fake_service, fake_instance)
                                                  ]
    mock_load_chronos_job_config.return_value = mock_chronos_job

    assert not validate_chronos('fake_service_path')

    output, _ = capfd.readouterr()
    expected_output = 'something is wrong with the config'
    assert invalid_chronos_instance(fake_cluster, fake_instance,
                                    expected_output) in output
Exemple #3
0
def test_failing_chronos_job_self_dependent(
    mock_path_to_soa_dir_service,
    mock_load_chronos_job_config,
    mock_list_all_instances_for_service,
    mock_list_clusters,
    mock_get_services_for_cluster,
    capfd,
):
    fake_service = 'fake-service'
    fake_instance = 'fake-instance'
    fake_cluster = 'penguin'
    chronos_spacer = paasta_tools.chronos_tools.INTERNAL_SPACER

    mock_chronos_job = mock.Mock(autospec=True)
    mock_chronos_job.get_parents.return_value = [
        f"{fake_service}{chronos_spacer}{fake_instance}"
    ]
    mock_chronos_job.validate.return_value = (True, [])

    mock_path_to_soa_dir_service.return_value = ('fake_soa_dir', fake_service)
    mock_list_clusters.return_value = [fake_cluster]
    mock_list_all_instances_for_service.return_value = [fake_instance]
    mock_get_services_for_cluster.return_value = [(fake_service, fake_instance)
                                                  ]
    mock_load_chronos_job_config.return_value = mock_chronos_job

    assert not validate_chronos('fake_service_path')

    output, _ = capfd.readouterr()
    expected_output = 'Job fake-service.fake-instance cannot depend on itself'
    assert invalid_chronos_instance(fake_cluster, fake_instance,
                                    expected_output) in output
def test_failing_chronos_job_missing_parent(
    mock_stdout,
    mock_path_to_soa_dir_service,
    mock_load_chronos_job_config,
    mock_list_all_instances_for_service,
    mock_list_clusters,
    mock_get_services_for_cluster
):
    fake_service = 'fake-service'
    fake_instance = 'fake-instance'
    fake_cluster = 'penguin'
    chronos_spacer = paasta_tools.chronos_tools.INTERNAL_SPACER

    mock_chronos_job = mock.Mock(autospec=True)
    mock_chronos_job.get_parents.return_value = ["%s%s%s" % (fake_service, chronos_spacer, 'parent-1')]
    mock_chronos_job.validate.return_value = (True, [])

    mock_path_to_soa_dir_service.return_value = ('fake_soa_dir', fake_service)
    mock_list_clusters.return_value = [fake_cluster]
    mock_list_all_instances_for_service.return_value = [fake_instance]
    mock_get_services_for_cluster.return_value = [(fake_service, fake_instance)]
    mock_load_chronos_job_config.return_value = mock_chronos_job

    assert not validate_chronos('fake_service_path')

    output = mock_stdout.getvalue()

    expected_output = 'Parent job fake-service.parent-1 could not be found'
    assert invalid_chronos_instance(fake_cluster, fake_instance, expected_output) in output
def test_failing_chronos_job_validate(
    mock_stdout,
    mock_path_to_soa_dir_service,
    mock_load_chronos_job_config,
    mock_list_all_instances_for_service,
    mock_list_clusters,
    mock_get_services_for_cluster
):
    fake_service = 'fake-service'
    fake_instance = 'fake-instance'
    fake_cluster = 'penguin'

    mock_chronos_job = mock.Mock(autospec=True)
    mock_chronos_job.get_parents.return_value = None
    mock_chronos_job.validate.return_value = (False, ['something is wrong with the config'])

    mock_path_to_soa_dir_service.return_value = ('fake_soa_dir', fake_service)
    mock_list_clusters.return_value = [fake_cluster]
    mock_list_all_instances_for_service.return_value = [fake_instance]
    mock_get_services_for_cluster.return_value = [(fake_service, fake_instance)]
    mock_load_chronos_job_config.return_value = mock_chronos_job

    assert not validate_chronos('fake_service_path')

    output = mock_stdout.getvalue()

    expected_output = 'something is wrong with the config'
    assert invalid_chronos_instance(fake_cluster, fake_instance, expected_output) in output
def test_failing_chronos_job_self_dependent(
    mock_stdout,
    mock_path_to_soa_dir_service,
    mock_load_chronos_job_config,
    mock_list_all_instances_for_service,
    mock_list_clusters,
    mock_get_services_for_cluster,
):
    fake_service = "fake-service"
    fake_instance = "fake-instance"
    fake_cluster = "penguin"
    chronos_spacer = paasta_tools.chronos_tools.INTERNAL_SPACER

    mock_chronos_job = mock.Mock(autospec=True)
    mock_chronos_job.get_parents.return_value = ["%s%s%s" % (fake_service, chronos_spacer, fake_instance)]
    mock_chronos_job.validate.return_value = (True, [])

    mock_path_to_soa_dir_service.return_value = ("fake_soa_dir", fake_service)
    mock_list_clusters.return_value = [fake_cluster]
    mock_list_all_instances_for_service.return_value = [fake_instance]
    mock_get_services_for_cluster.return_value = [(fake_service, fake_instance)]
    mock_load_chronos_job_config.return_value = mock_chronos_job

    assert not validate_chronos("fake_service_path")

    output = mock_stdout.getvalue()

    expected_output = "Job fake-service.fake-instance cannot depend on itself"
    assert invalid_chronos_instance(fake_cluster, fake_instance, expected_output) in output
Exemple #7
0
def test_validate_chronos_invalid_instance(
    mock_stdout,
    mock_path_to_soa_dir_service,
    mock_load_chronos_job_config,
    mock_list_all_instances_for_service,
    mock_list_clusters
):
    fake_service = 'test-service'
    fake_instance = 'fake-instance'
    fake_job_name = 'test'
    fake_cluster = 'penguin'
    fake_monitoring_info = {'fake_monitoring_info': 'fake_monitoring_value'}
    fake_config_dict = {
        'bounce_method': 'graceful',
        'cmd': '/bin/sleep 40',
        'epsilon': 'PT30M',
        'retries': 5,
        'cpus': 5.5,
        'mem': 1024.4,
        'disabled': True,
        'schedule': 'P1DT09:00:00',
        'schedule_time_zone': 'Zulu',
        'monitoring': fake_monitoring_info,
    }
    fake_branch_dict = {
        'desired_state': 'start',
        'docker_image': 'paasta-%s-%s' % (fake_service, fake_cluster),
    }
    fake_chronos_job_config = ChronosJobConfig(fake_service,
                                               fake_job_name,
                                               fake_config_dict,
                                               fake_branch_dict)

    mock_path_to_soa_dir_service.return_value = ('fake_soa_dir', 'fake_service')
    mock_list_clusters.return_value = [fake_cluster]
    mock_list_all_instances_for_service.return_value = [fake_instance]
    mock_load_chronos_job_config.return_value = fake_chronos_job_config

    assert validate_chronos('fake_service_path') == 1

    output = mock_stdout.getvalue()

    expected_output = 'The specified schedule "%s" is invalid' % \
        fake_config_dict['schedule']
    assert invalid_chronos_instance(fake_cluster, fake_instance, expected_output) in output
Exemple #8
0
def test_failing_chronos_job_validate(
    mock_stdout,
    mock_path_to_soa_dir_service,
    mock_load_chronos_job_config,
    mock_list_all_instances_for_service,
    mock_list_clusters
):
    fake_instance = 'fake-instance'
    fake_cluster = 'penguin'

    mock_chronos_job = mock.Mock(autospec=True)
    mock_chronos_job.validate.return_value = (False, ['something is wrong with the config'])

    mock_path_to_soa_dir_service.return_value = ('fake_soa_dir', 'fake_service')
    mock_list_clusters.return_value = [fake_cluster]
    mock_list_all_instances_for_service.return_value = [fake_instance]
    mock_load_chronos_job_config.return_value = mock_chronos_job

    assert validate_chronos('fake_service_path') == 1

    output = mock_stdout.getvalue()

    expected_output = 'something is wrong with the config'
    assert invalid_chronos_instance(fake_cluster, fake_instance, expected_output) in output