def test_process_event_duplicate(self, mock_Queue): '''Tests processing an event that was previously handled.''' event = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 10, 12, tzinfo=timezone.utc)) last = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 10, 10, tzinfo=timezone.utc)) self.processor.process_event(event, last) self.assertFalse(mock_Queue.objects.queue_new_job.called)
def test_process_event_last(self, mock_Queue): '''Tests processing an event that was triggered before.''' event = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 10, 12, second=9, tzinfo=timezone.utc)) last = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 9, 12, second=10, tzinfo=timezone.utc)) self.processor.process_event(event, last) job_data = {u'input_data': [{u'name': u'Day', u'value': u'2015-01-09'}]} mock_Queue.objects.queue_new_job.assert_called_with(self.job_type, job_data, event)
def test_check_rule_last_event(self, mock_check_schedule, mock_trigger_event): '''Tests a valid rule checks the most recent matching event type.''' rule = job_test_utils.create_clock_rule(name='test-name', schedule='PT1H0M0S') job_test_utils.create_clock_event(rule=rule, occurred=datetime.datetime( 2013, 1, 1, tzinfo=timezone.utc)) job_test_utils.create_clock_event(rule=rule, occurred=datetime.datetime( 2012, 1, 1, tzinfo=timezone.utc)) last = job_test_utils.create_clock_event(rule=rule, occurred=datetime.datetime( 2014, 1, 1, tzinfo=timezone.utc)) job_test_utils.create_clock_event(rule=rule, occurred=datetime.datetime( 2011, 1, 1, tzinfo=timezone.utc)) job_test_utils.create_clock_event( occurred=datetime.datetime(2015, 1, 1, tzinfo=timezone.utc)) clock._check_rule(rule) mock_check_schedule.assert_called_with(datetime.timedelta(hours=1), last)
def test_process_event_last(self, mock_Queue): """Tests processing an event that was triggered before.""" event = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 10, 12, second=9, tzinfo=timezone.utc)) last = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 9, 12, second=10, tzinfo=timezone.utc)) self.processor.process_event(event, last) call_args = mock_Queue.objects.queue_new_job.call_args[0] self.assertEqual(self.job_type, call_args[0]) self.assertDictEqual({'input_data': [{'name': 'Day', 'value': '2015-01-09'}], 'output_data': [], 'version': '1.0'}, call_args[1].get_dict()) self.assertEqual(event, call_args[2])
def test_process_event_last(self, mock_Queue): """Tests processing an event that was triggered before.""" event = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 10, 12, second=9, tzinfo=utc)) last = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 9, 12, second=10, tzinfo=utc)) self.processor.process_event(event, last) call_args = mock_Queue.objects.queue_new_job.call_args[0] self.assertEqual(self.job_type, call_args[0]) self.assertDictEqual({'input_data': [{'name': 'Day', 'value': '2015-01-09'}], 'output_data': [], 'version': '1.0'}, call_args[1].get_dict()) self.assertEqual(event, call_args[2])
def test_process_event_range(self, mock_Queue): '''Tests processing an event that requires catching up for a range of previous days.''' event = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 10, 10, tzinfo=timezone.utc)) last = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 7, 12, tzinfo=timezone.utc)) self.processor.process_event(event, last) calls = [ call(self.job_type, {u'input_data': [{u'name': u'Day', u'value': u'2015-01-07'}]}, event), call(self.job_type, {u'input_data': [{u'name': u'Day', u'value': u'2015-01-08'}]}, event), call(self.job_type, {u'input_data': [{u'name': u'Day', u'value': u'2015-01-09'}]}, event), ] mock_Queue.objects.queue_new_job.assert_has_calls(calls) self.assertEqual(mock_Queue.objects.queue_new_job.call_count, 3)
def test_check_rule_last_event(self, mock_check_schedule, mock_trigger_event): '''Tests a valid rule checks the most recent matching event type.''' rule = job_test_utils.create_clock_rule(name=u'test-name', schedule=u'PT1H0M0S') job_test_utils.create_clock_event(rule=rule, occurred=datetime.datetime(2013, 1, 1, tzinfo=timezone.utc)) job_test_utils.create_clock_event(rule=rule, occurred=datetime.datetime(2012, 1, 1, tzinfo=timezone.utc)) last = job_test_utils.create_clock_event(rule=rule, occurred=datetime.datetime(2014, 1, 1, tzinfo=timezone.utc)) job_test_utils.create_clock_event(rule=rule, occurred=datetime.datetime(2011, 1, 1, tzinfo=timezone.utc)) job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 1, tzinfo=timezone.utc)) clock._check_rule(rule) mock_check_schedule.assert_called_with(datetime.timedelta(hours=1), last)
def test_queue_depth_processor(self): '''This method tests the Queue Depth Processor''' event = job_test_utils.create_clock_event() self.processor.process_event(event) queue_depth_values = QueueDepthByJobType.objects.values() self.assertEqual(queue_depth_values.count(), 1)
def test_check_schedule_day_drift(self): '''Tests checking a schedule for once a day without slowly drifting away from the target time.''' last = job_test_utils.create_clock_event(occurred=datetime.datetime( 2015, 1, 9, 0, 45, 30, tzinfo=timezone.utc)) self.assertTrue( clock._check_schedule(datetime.timedelta(hours=24), last))
def test_check_schedule_day_recover(self): '''Tests checking a schedule to recover after being down for several days.''' last = job_test_utils.create_clock_event(occurred=datetime.datetime( 2015, 1, 5, 0, 5, 50, tzinfo=timezone.utc)) self.assertTrue( clock._check_schedule(datetime.timedelta(hours=24), last))
def test_check_schedule_day_exact(self): '''Tests checking a schedule for once a day.''' last = job_test_utils.create_clock_event( occurred=datetime.datetime(2015, 1, 9, tzinfo=timezone.utc)) self.assertTrue( clock._check_schedule(datetime.timedelta(hours=24), last))
def test_check_schedule_day_last_skip(self): '''Tests checking a daily schedule that was triggered before and is not due.''' last = job_test_utils.create_clock_event( occurred=datetime.datetime(2015, 1, 10, tzinfo=timezone.utc)) self.assertFalse( clock._check_schedule(datetime.timedelta(hours=24), last))
def test_check_schedule_hour_last(self): '''Tests checking an hourly schedule that was triggered before and is due now.''' last = job_test_utils.create_clock_event( occurred=datetime.datetime(2015, 1, 1, 11, tzinfo=timezone.utc)) self.assertTrue( clock._check_schedule(datetime.timedelta(hours=1), last))
def test_process_event(self): """This method tests the Job Load Processor""" event = job_test_utils.create_clock_event() self.processor.process_event(event) job_loads = JobLoad.objects.values() self.assertEqual(job_loads.count(), 1)
def test_process_event(self): '''This method tests the Job Load Processor''' event = job_test_utils.create_clock_event() self.processor.process_event(event) job_loads = JobLoad.objects.values() self.assertEqual(job_loads.count(), 1)
def test_process_event_range(self, mock_Queue): '''Tests processing an event that requires catching up for a range of previous days.''' event = job_test_utils.create_clock_event( occurred=datetime.datetime(2015, 1, 10, 10, tzinfo=timezone.utc)) last = job_test_utils.create_clock_event( occurred=datetime.datetime(2015, 1, 7, 12, tzinfo=timezone.utc)) self.processor.process_event(event, last) i = 1 for call_args in mock_Queue.objects.queue_new_job.call_args_list: args = call_args[0] self.assertEqual(self.job_type, args[0]) self.assertEqual(event, args[2]) if i == 1: self.assertDictEqual( { u'input_data': [{ u'name': u'Day', u'value': u'2015-01-07' }], u'output_data': [], u'version': u'1.0' }, args[1].get_dict()) if i == 2: self.assertDictEqual( { u'input_data': [{ u'name': u'Day', u'value': u'2015-01-08' }], u'output_data': [], u'version': u'1.0' }, args[1].get_dict()) if i == 3: self.assertDictEqual( { u'input_data': [{ u'name': u'Day', u'value': u'2015-01-09' }], u'output_data': [], u'version': u'1.0' }, args[1].get_dict()) i += 1 self.assertEqual(mock_Queue.objects.queue_new_job.call_count, 3)
def test_process_event_range(self, mock_Queue, mock_msg_mgr): """Tests processing an event that requires catching up for a range of previous days.""" event = job_test_utils.create_clock_event( occurred=datetime.datetime(2015, 1, 10, 10, tzinfo=utc)) last = job_test_utils.create_clock_event( occurred=datetime.datetime(2015, 1, 7, 12, tzinfo=utc)) self.processor.process_event(event, last) i = 1 for call_args in mock_Queue.objects.queue_new_job_v6.call_args_list: args = call_args[0] self.assertEqual(self.job_type, args[0]) self.assertEqual(event, args[2]) inputs = convert_data_to_v6_json(args[1]) if i == 1: self.assertDictEqual( { u'files': {}, u'json': { u'DAY': '2015-01-07' }, u'version': u'7' }, inputs.get_dict()) if i == 2: self.assertDictEqual( { u'files': {}, u'json': { u'DAY': '2015-01-08' }, u'version': u'7' }, inputs.get_dict()) if i == 3: self.assertDictEqual( { u'files': {}, u'json': { u'DAY': '2015-01-09' }, u'version': u'7' }, inputs.get_dict()) i += 1 self.assertEqual(mock_Queue.objects.queue_new_job_v6.call_count, 3)
def test_process_event_first(self, mock_Queue): '''Tests processing an event that was never triggered before.''' event = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 10, 12, tzinfo=timezone.utc)) self.processor.process_event(event, None) call_args = mock_Queue.objects.queue_new_job.call_args[0] self.assertEqual(self.job_type, call_args[0]) self.assertDictEqual({u'input_data': [{u'name': u'Day', u'value': u'2015-01-09'}], u'output_data': [], u'version': u'1.0'}, call_args[1].get_dict()) self.assertEqual(event, call_args[2])
def test_trigger_event_last(self): """Tests triggering a new event after the rule has processed an event previously.""" rule = job_test_utils.create_clock_rule(name='test-name', event_type='TEST_TYPE') last = job_test_utils.create_clock_event(rule=rule, occurred=datetime.datetime(2015, 1, 1, tzinfo=utc)) clock._trigger_event(rule, last) events = TriggerEvent.objects.filter(type='TEST_TYPE').order_by('-occurred') self.assertEqual(len(events), 2) self.assertNotEqual(events[0], last) self.processor.process_event.assert_called_with(events[0], last)
def test_trigger_event_last(self): '''Tests triggering a new event after the rule has processed an event previously.''' rule = job_test_utils.create_clock_rule(name=u'test-name', event_type=u'TEST_TYPE') last = job_test_utils.create_clock_event(rule=rule, occurred=datetime.datetime(2015, 1, 1, tzinfo=timezone.utc)) clock._trigger_event(rule, last) events = TriggerEvent.objects.filter(type=u'TEST_TYPE').order_by(u'-occurred') self.assertEqual(len(events), 2) self.assertNotEqual(events[0], last) self.processor.process_event.assert_called_with(events[0], last)
def test_process_event_last(self, mock_Queue, mock_msg_mgr): """Tests processing an event that was triggered before.""" event = job_test_utils.create_clock_event( occurred=datetime.datetime(2015, 1, 10, 12, second=9, tzinfo=utc)) last = job_test_utils.create_clock_event( occurred=datetime.datetime(2015, 1, 9, 12, second=10, tzinfo=utc)) self.processor.process_event(event, last) call_args = mock_Queue.objects.queue_new_job_v6.call_args[0] self.assertEqual(self.job_type, call_args[0]) inputs = convert_data_to_v6_json(call_args[1]) self.assertDictEqual( { u'files': {}, u'json': { u'DAY': '2015-01-09' }, u'version': u'7' }, inputs.get_dict()) self.assertEqual(event, call_args[2])
def test_process_event_range(self, mock_Queue): """Tests processing an event that requires catching up for a range of previous days.""" event = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 10, 10, tzinfo=timezone.utc)) last = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 7, 12, tzinfo=timezone.utc)) self.processor.process_event(event, last) i = 1 for call_args in mock_Queue.objects.queue_new_job.call_args_list: args = call_args[0] self.assertEqual(self.job_type, args[0]) self.assertEqual(event, args[2]) if i == 1: self.assertDictEqual({'input_data': [{'name': 'Day', 'value': '2015-01-07'}], 'output_data': [], 'version': '1.0'}, args[1].get_dict()) if i == 2: self.assertDictEqual({'input_data': [{'name': 'Day', 'value': '2015-01-08'}], 'output_data': [], 'version': '1.0'}, args[1].get_dict()) if i == 3: self.assertDictEqual({'input_data': [{'name': 'Day', 'value': '2015-01-09'}], 'output_data': [], 'version': '1.0'}, args[1].get_dict()) i += 1 self.assertEqual(mock_Queue.objects.queue_new_job.call_count, 3)
def test_process_event_first(self, mock_Queue): '''Tests processing an event that was never triggered before.''' event = job_test_utils.create_clock_event( occurred=datetime.datetime(2015, 1, 10, 12, tzinfo=timezone.utc)) self.processor.process_event(event, None) call_args = mock_Queue.objects.queue_new_job.call_args[0] self.assertEqual(self.job_type, call_args[0]) self.assertDictEqual( { u'input_data': [{ u'name': u'Day', u'value': u'2015-01-09' }], u'output_data': [], u'version': u'1.0' }, call_args[1].get_dict()) self.assertEqual(event, call_args[2])
def test_check_schedule_hour_last_skip(self): """Tests checking an hourly schedule that was triggered before and is not due.""" last = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 1, 12, tzinfo=timezone.utc)) self.assertFalse(clock._check_schedule(datetime.timedelta(hours=1), last))
def test_check_schedule_day_last(self): """Tests checking a daily schedule that was triggered before and is due now.""" last = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 9, tzinfo=utc)) self.assertTrue(clock._check_schedule(datetime.timedelta(hours=24), last))
def test_check_schedule_hour_drift_min(self): """Tests checking a schedule for once an hour without slowly drifting away from the target time.""" last = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 10, 8, tzinfo=utc)) self.assertTrue(clock._check_schedule(datetime.timedelta(hours=1), last))
def test_check_schedule_hour_recover(self): """Tests checking a schedule to recover after being down for several hours.""" last = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 1, 5, tzinfo=utc)) self.assertTrue(clock._check_schedule(datetime.timedelta(hours=1), last))
def test_check_schedule_hour_exact(self): """Tests checking a schedule for once an hour.""" last = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 1, 9, tzinfo=utc)) self.assertTrue(clock._check_schedule(datetime.timedelta(hours=1), last))
def test_check_schedule_hour_last_skip(self): """Tests checking an hourly schedule that was triggered before and is not due.""" last = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 1, 12, tzinfo=utc)) self.assertFalse(clock._check_schedule(datetime.timedelta(hours=1), last))
def test_check_schedule_day_last(self): """Tests checking a daily schedule that was triggered before and is due now.""" last = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 9, tzinfo=timezone.utc)) self.assertTrue(clock._check_schedule(datetime.timedelta(hours=24), last))
def test_check_schedule_day_drift(self): '''Tests checking a schedule for once a day without slowly drifting away from the target time.''' last = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 9, 0, 45, 30, tzinfo=timezone.utc)) self.assertTrue(clock._check_schedule(datetime.timedelta(hours=24), last))
def test_check_schedule_day_recover(self): '''Tests checking a schedule to recover after being down for several days.''' last = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 5, 0, 5, 50, tzinfo=timezone.utc)) self.assertTrue(clock._check_schedule(datetime.timedelta(hours=24), last))
def test_check_schedule_day_exact(self): '''Tests checking a schedule for once a day.''' last = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 9, tzinfo=timezone.utc)) self.assertTrue(clock._check_schedule(datetime.timedelta(hours=24), last))
def test_check_schedule_day_last_skip(self): '''Tests checking a daily schedule that was triggered before and is not due.''' last = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 10, tzinfo=timezone.utc)) self.assertFalse(clock._check_schedule(datetime.timedelta(hours=24), last))
def test_check_schedule_hour_last(self): '''Tests checking an hourly schedule that was triggered before and is due now.''' last = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 1, 11, tzinfo=timezone.utc)) self.assertTrue(clock._check_schedule(datetime.timedelta(hours=1), last))
def test_check_schedule_hour_drift_min(self): """Tests checking a schedule for once an hour without slowly drifting away from the target time.""" last = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 10, 8, tzinfo=timezone.utc)) self.assertTrue(clock._check_schedule(datetime.timedelta(hours=1), last))
def test_check_schedule_hour_recover(self): """Tests checking a schedule to recover after being down for several hours.""" last = job_test_utils.create_clock_event(occurred=datetime.datetime(2015, 1, 1, 5, tzinfo=timezone.utc)) self.assertTrue(clock._check_schedule(datetime.timedelta(hours=1), last))