def test_respect_latest_run_after_rerun(mock_lookup_chronos_jobs): fake_job = { 'name': 'service1 test-job', 'lastSuccess': '2016-07-26T22:00:00+00:00', 'lastError': '2016-07-26T22:01:00+00:00' } mock_lookup_chronos_jobs.side_effect = [[fake_job]] fake_configured_jobs = [('service1', 'chronos_job')] fake_client = Mock(list=Mock(return_value=[('service1', 'chronos_job')])) assert check_chronos_jobs.build_service_job_mapping( fake_client, fake_configured_jobs) == { ('service1', 'chronos_job'): [(fake_job, chronos_tools.LastRunState.Fail)] } # simulate a re-run where we now pass reran_job = { 'name': 'service1 test-job', 'lastSuccess': '2016-07-26T22:12:00+00:00', } reran_job = chronos_rerun.set_tmp_naming_scheme(reran_job) mock_lookup_chronos_jobs.side_effect = [[fake_job, reran_job]] assert check_chronos_jobs.build_service_job_mapping( fake_client, fake_configured_jobs) == { ('service1', 'chronos_job'): [(reran_job, chronos_tools.LastRunState.Success)] }
def test_respect_latest_run_after_rerun(mock_lookup_chronos_jobs): fake_job = { 'name': 'service1 test-job', 'lastSuccess': '2016-07-26T22:00:00+00:00', 'lastError': '2016-07-26T22:01:00+00:00' } mock_lookup_chronos_jobs.side_effect = [[ fake_job ]] fake_configured_jobs = [('service1', 'chronos_job')] fake_client = Mock(list=Mock(return_value=[('service1', 'chronos_job')])) assert check_chronos_jobs.build_service_job_mapping(fake_client, fake_configured_jobs) == { ('service1', 'chronos_job'): [(fake_job, chronos_tools.LastRunState.Fail)] } # simulate a re-run where we now pass reran_job = { 'name': 'service1 test-job', 'lastSuccess': '2016-07-26T22:12:00+00:00', } reran_job = chronos_rerun.set_tmp_naming_scheme(reran_job) mock_lookup_chronos_jobs.side_effect = [[ fake_job, reran_job ]] assert check_chronos_jobs.build_service_job_mapping(fake_client, fake_configured_jobs) == { ('service1', 'chronos_job'): [(reran_job, chronos_tools.LastRunState.Success)] }
def test_respect_latest_run_after_rerun(mock_filter_chronos_jobs): fake_job = { 'name': 'service1 test-job', 'lastSuccess': '2016-07-26T22:00:00+00:00', 'lastError': '2016-07-26T22:01:00+00:00', } mock_filter_chronos_jobs.side_effect = [[ fake_job, ]] fake_configured_jobs = [('service1', 'chronos_job')] fake_client = Mock() assert check_chronos_jobs.build_service_job_mapping( fake_client, fake_configured_jobs) == { ('service1', 'chronos_job'): fake_job, } fake_client.list.assert_called_once_with() # simulate a re-run where we now pass reran_job = { 'name': 'service1 test-job', 'lastSuccess': '2016-07-26T22:12:00+00:00', } reran_job = chronos_rerun.set_tmp_naming_scheme(reran_job) mock_filter_chronos_jobs.side_effect = [[ fake_job, reran_job, ]] fake_client = Mock() assert check_chronos_jobs.build_service_job_mapping( fake_client, fake_configured_jobs) == { ('service1', 'chronos_job'): reran_job, } fake_client.list.assert_called_once_with()
def test_build_service_job_mapping(mock_last_run_state, mock_filter_enabled_jobs, mock_lookup_chronos_jobs): # iter() is a workaround # (http://lists.idyll.org/pipermail/testing-in-python/2013-April/005527.html) # for a bug in mock (http://bugs.python.org/issue17826) mock_lookup_chronos_jobs.side_effect = iter([[{}, {}, {}] for x in range(0, 3)]) mock_filter_enabled_jobs.side_effect = iter([[{}, {}, {}] for x in range(0, 3)]) mock_last_run_state.side_effect = iter([ ('faketimestamp', chronos_tools.LastRunState.Success), ('faketimestamp', chronos_tools.LastRunState.Fail), ('faketimestamp', chronos_tools.LastRunState.NotRun), ] * 3) fake_configured_jobs = [('service1', 'main'), ('service2', 'main'), ('service3', 'main')] fake_client = Mock(list=Mock(return_value=[('service1', 'main'), ('service2', 'main'), ('service3', 'main')])) expected_job_states = [ ({}, chronos_tools.LastRunState.Success), ({}, chronos_tools.LastRunState.Fail), ({}, chronos_tools.LastRunState.NotRun), ] expected = { ('service1', 'main'): expected_job_states, ('service2', 'main'): expected_job_states, ('service3', 'main'): expected_job_states, } assert check_chronos_jobs.build_service_job_mapping(fake_client, fake_configured_jobs) == expected
def test_build_service_job_mapping(mock_last_run_state, mock_filter_enabled_jobs, mock_lookup_chronos_jobs): # iter() is a workaround # (http://lists.idyll.org/pipermail/testing-in-python/2013-April/005527.html) # for a bug in mock (http://bugs.python.org/issue17826) mock_lookup_chronos_jobs.side_effect = iter([[{}, {}, {}] for x in range(0, 3)]) mock_filter_enabled_jobs.side_effect = iter([[{}, {}, {}] for x in range(0, 3)]) mock_last_run_state.side_effect = iter([ ('faketimestamp', chronos_tools.LastRunState.Success), ('faketimestamp', chronos_tools.LastRunState.Fail), ('faketimestamp', chronos_tools.LastRunState.NotRun), ] * 3) fake_configured_jobs = [('service1', 'main'), ('service2', 'main'), ('service3', 'main')] fake_client = Mock(list=Mock( return_value=[('service1', 'main'), ('service2', 'main'), ('service3', 'main')])) expected_job_states = [ ({}, chronos_tools.LastRunState.Success), ({}, chronos_tools.LastRunState.Fail), ({}, chronos_tools.LastRunState.NotRun), ] expected = { ('service1', 'main'): expected_job_states, ('service2', 'main'): expected_job_states, ('service3', 'main'): expected_job_states, } assert check_chronos_jobs.build_service_job_mapping( fake_client, fake_configured_jobs) == expected
def test_build_service_job_mapping(mock_filter_enabled_jobs, mock_lookup_chronos_jobs): services = ['service1', 'service2', 'service3'] latest_time = '2016-07-26T22:03:00+00:00' fake_jobs = [[ { 'name': service + ' foo', 'lastSuccess': '2016-07-26T22:02:00+00:00' }, { 'name': service + ' foo', 'lastError': latest_time }, { 'name': service + ' foo' } ] for service in services] mock_lookup_chronos_jobs.side_effect = fake_jobs mock_filter_enabled_jobs.side_effect = [[{}, {}, {}] for _ in range(0, 3)] fake_configured_jobs = [('service1', 'main'), ('service2', 'main'), ('service3', 'main')] fake_client = Mock(list=Mock(return_value=[('service1', 'main'), ('service2', 'main'), ('service3', 'main')])) expected = { ('service1', 'main'): [({'name': 'service1 foo', 'lastError': latest_time}, chronos_tools.LastRunState.Fail)], ('service2', 'main'): [({'name': 'service2 foo', 'lastError': latest_time}, chronos_tools.LastRunState.Fail)], ('service3', 'main'): [({'name': 'service3 foo', 'lastError': latest_time}, chronos_tools.LastRunState.Fail)], } assert check_chronos_jobs.build_service_job_mapping(fake_client, fake_configured_jobs) == expected
def test_build_service_job_mapping(mock_filter_enabled_jobs, mock_lookup_chronos_jobs): # iter() is a workaround # (http://lists.idyll.org/pipermail/testing-in-python/2013-April/005527.html) # for a bug in mock (http://bugs.python.org/issue17826) services = ['service1', 'service2', 'service3'] latest_time = '2016-07-26T22:03:00+00:00' fake_jobs = [[ { 'name': service + ' foo', 'lastSuccess': '2016-07-26T22:02:00+00:00' }, { 'name': service + ' foo', 'lastError': latest_time }, { 'name': service + ' foo' } ] for service in services] mock_lookup_chronos_jobs.side_effect = iter(fake_jobs) mock_filter_enabled_jobs.side_effect = iter([[{}, {}, {}] for x in range(0, 3)]) fake_configured_jobs = [('service1', 'main'), ('service2', 'main'), ('service3', 'main')] fake_client = Mock(list=Mock(return_value=[('service1', 'main'), ('service2', 'main'), ('service3', 'main')])) expected = { ('service1', 'main'): [({'name': 'service1 foo', 'lastError': latest_time}, chronos_tools.LastRunState.Fail)], ('service2', 'main'): [({'name': 'service2 foo', 'lastError': latest_time}, chronos_tools.LastRunState.Fail)], ('service3', 'main'): [({'name': 'service3 foo', 'lastError': latest_time}, chronos_tools.LastRunState.Fail)], } assert check_chronos_jobs.build_service_job_mapping(fake_client, fake_configured_jobs) == expected
def test_build_service_job_mapping(mock_filter_enabled_jobs, mock_lookup_chronos_jobs): services = ['service1', 'service2', 'service3'] latest_time = '2016-07-26T22:03:00+00:00' fake_jobs = [[ { 'name': service + ' foo', 'lastSuccess': '2016-07-26T22:02:00+00:00' }, { 'name': service + ' foo', 'lastError': latest_time }, { 'name': service + ' foo' } ] for service in services] mock_lookup_chronos_jobs.side_effect = fake_jobs mock_filter_enabled_jobs.side_effect = [[{}, {}, {}] for _ in range(0, 3)] fake_configured_jobs = [('service1', 'main'), ('service2', 'main'), ('service3', 'main')] fake_client = Mock(list=Mock(return_value=[('service1', 'main'), ('service2', 'main'), ('service3', 'main')])) expected = { ('service1', 'main'): [({'name': 'service1 foo', 'lastError': latest_time}, chronos_tools.LastRunState.Fail)], ('service2', 'main'): [({'name': 'service2 foo', 'lastError': latest_time}, chronos_tools.LastRunState.Fail)], ('service3', 'main'): [({'name': 'service3 foo', 'lastError': latest_time}, chronos_tools.LastRunState.Fail)], } assert check_chronos_jobs.build_service_job_mapping(fake_client, fake_configured_jobs) == expected
def test_build_service_job_mapping(mock_filter_enabled_jobs, mock_lookup_chronos_jobs): services = ['service1', 'service2', 'service3'] latest_time = '2016-07-26T22:03:00+00:00' fake_jobs = [[ { 'name': service + ' foo', 'lastSuccess': '2016-07-26T22:02:00+00:00' }, { 'name': service + ' foo', 'lastError': latest_time }, { 'name': service + ' foo' } ] for service in services] fake_jobs.append([ { 'name': 'tmp-2017-06-13T123738942755 service4 foo', 'lastError': latest_time, }, { 'name': 'service4 foo', 'lastSuccess': '2016-07-26T22:02:00+00:00', }, { 'name': 'service4 foo', } ]) mock_lookup_chronos_jobs.side_effect = fake_jobs mock_filter_enabled_jobs.side_effect = [[{}, {}, {}] for _ in range(0, 4)] fake_configured_jobs = [ ('service1', 'main'), ('service2', 'main'), ('service3', 'main'), ('service4', 'main') ] fake_client = Mock(list=Mock(return_value=[ ('service1', 'main'), ('service2', 'main'), ('service3', 'main'), ('service4', 'main') ])) expected = { ('service1', 'main'): {'name': 'service1 foo', 'lastError': latest_time}, ('service2', 'main'): {'name': 'service2 foo', 'lastError': latest_time}, ('service3', 'main'): {'name': 'service3 foo', 'lastError': latest_time}, ('service4', 'main'): {'name': 'tmp-2017-06-13T123738942755 service4 foo', 'lastError': latest_time}, } assert check_chronos_jobs.build_service_job_mapping(fake_client, fake_configured_jobs) == expected
def test_build_service_job_mapping(mock_filter_enabled_jobs, mock_lookup_chronos_jobs): # iter() is a workaround # (http://lists.idyll.org/pipermail/testing-in-python/2013-April/005527.html) # for a bug in mock (http://bugs.python.org/issue17826) services = ['service1', 'service2', 'service3'] latest_time = '2016-07-26T22:03:00+00:00' fake_jobs = [[{ 'name': service + ' foo', 'lastSuccess': '2016-07-26T22:02:00+00:00' }, { 'name': service + ' foo', 'lastError': latest_time }, { 'name': service + ' foo' }] for service in services] mock_lookup_chronos_jobs.side_effect = iter(fake_jobs) mock_filter_enabled_jobs.side_effect = iter([[{}, {}, {}] for x in range(0, 3)]) fake_configured_jobs = [('service1', 'main'), ('service2', 'main'), ('service3', 'main')] fake_client = Mock(list=Mock( return_value=[('service1', 'main'), ('service2', 'main'), ('service3', 'main')])) expected = { ('service1', 'main'): [({ 'name': 'service1 foo', 'lastError': latest_time }, chronos_tools.LastRunState.Fail)], ('service2', 'main'): [({ 'name': 'service2 foo', 'lastError': latest_time }, chronos_tools.LastRunState.Fail)], ('service3', 'main'): [({ 'name': 'service3 foo', 'lastError': latest_time }, chronos_tools.LastRunState.Fail)], } assert check_chronos_jobs.build_service_job_mapping( fake_client, fake_configured_jobs) == expected
def test_build_service_job_mapping(mock_filter_enabled_jobs, mock_filter_chronos_jobs): services = ["service1", "service2", "service3"] latest_time = "2016-07-26T22:03:00+00:00" fake_jobs = [[ { "name": service + " foo", "lastSuccess": "2016-07-26T22:02:00+00:00" }, { "name": service + " foo", "lastError": latest_time }, { "name": service + " foo" }, ] for service in services] fake_jobs.append([ { "name": "tmp-2017-06-13T123738942755 service4 foo", "lastError": latest_time, }, { "name": "service4 foo", "lastSuccess": "2016-07-26T22:02:00+00:00" }, { "name": "service4 foo" }, ]) mock_filter_chronos_jobs.side_effect = fake_jobs mock_filter_enabled_jobs.side_effect = [[{}, {}, {}] for _ in range(0, 4)] fake_configured_jobs = [ ("service1", "main"), ("service2", "main"), ("service3", "main"), ("service4", "main"), ] fake_client = Mock() expected = { ("service1", "main"): { "name": "service1 foo", "lastError": latest_time }, ("service2", "main"): { "name": "service2 foo", "lastError": latest_time }, ("service3", "main"): { "name": "service3 foo", "lastError": latest_time }, ("service4", "main"): { "name": "tmp-2017-06-13T123738942755 service4 foo", "lastError": latest_time, }, } assert (check_chronos_jobs.build_service_job_mapping( fake_client, fake_configured_jobs) == expected) fake_client.list.assert_called_once_with()