Example #1
0
    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)
Example #2
0
    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)
Example #3
0
    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)
Example #4
0
    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])
Example #5
0
    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])
Example #6
0
    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)
Example #7
0
    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)
Example #9
0
    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))
Example #10
0
    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))
Example #11
0
    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))
Example #12
0
    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))
Example #13
0
    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))
Example #14
0
    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)
Example #15
0
    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)
Example #16
0
    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)
Example #17
0
    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)
Example #18
0
    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])
Example #19
0
    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)
Example #20
0
    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)
Example #21
0
    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])
Example #22
0
    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)
Example #23
0
    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])
Example #24
0
    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))
Example #25
0
    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))
Example #26
0
    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))
Example #27
0
    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))
Example #28
0
    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))
Example #29
0
    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))
Example #30
0
    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))
Example #31
0
    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))
Example #32
0
    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))
Example #33
0
    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))
Example #34
0
    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))
Example #35
0
    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))
Example #36
0
    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))
Example #37
0
    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))