Exemple #1
0
class TestDailyMetricsProcessor(TestCase):
    '''Tests the DailyMetricsProcessor clock event class.'''

    def setUp(self):
        django.setup()

        self.job_type = job_test_utils.create_job_type(name=u'scale-daily-metrics')
        self.processor = DailyMetricsProcessor()

    @patch('metrics.daily_metrics.Queue')
    @patch('metrics.daily_metrics.timezone.now', lambda: datetime.datetime(2015, 1, 10, tzinfo=timezone.utc))
    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)

        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)

    @patch('metrics.daily_metrics.Queue')
    @patch('metrics.daily_metrics.timezone.now', lambda: datetime.datetime(2015, 1, 10, tzinfo=timezone.utc))
    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)

    @patch('metrics.daily_metrics.Queue')
    @patch('metrics.daily_metrics.timezone.now', lambda: datetime.datetime(2015, 1, 10, tzinfo=timezone.utc))
    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)

    @patch('metrics.daily_metrics.Queue')
    @patch('metrics.daily_metrics.timezone.now', lambda: datetime.datetime(2015, 1, 10, tzinfo=timezone.utc))
    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)
Exemple #2
0
 def setUp(self):
     django.setup()
     manifest = job_test_utils.create_seed_manifest(
         name='scale-daily-metrics')
     self.job_type = job_test_utils.create_seed_job_type(manifest=manifest)
     self.processor = DailyMetricsProcessor()
Exemple #3
0
class TestDailyMetricsProcessor(TransactionTestCase):
    """Tests the DailyMetricsProcessor clock event class."""
    def setUp(self):
        django.setup()
        manifest = job_test_utils.create_seed_manifest(
            name='scale-daily-metrics')
        self.job_type = job_test_utils.create_seed_job_type(manifest=manifest)
        self.processor = DailyMetricsProcessor()

    @patch('metrics.daily_metrics.CommandMessageManager')
    @patch('metrics.daily_metrics.Queue')
    @patch('metrics.daily_metrics.timezone.now',
           lambda: datetime.datetime(2015, 1, 10, tzinfo=utc))
    def test_process_event_first(self, mock_Queue, mock_msg_mgr):
        """Tests processing an event that was never triggered before."""
        event = job_test_utils.create_clock_event(
            occurred=datetime.datetime(2015, 1, 10, 12, tzinfo=utc))

        self.processor.process_event(event, None)

        call_args = mock_Queue.objects.queue_new_job_v6.call_args[0]
        inputs = convert_data_to_v6_json(call_args[1])
        self.assertEqual(self.job_type, call_args[0])
        self.assertDictEqual(
            {
                u'files': {},
                u'json': {
                    u'DAY': '2015-01-09'
                },
                u'version': u'7'
            }, inputs.get_dict())
        self.assertEqual(event, call_args[2])

    @patch('metrics.daily_metrics.CommandMessageManager')
    @patch('metrics.daily_metrics.Queue')
    @patch('metrics.daily_metrics.timezone.now',
           lambda: datetime.datetime(2015, 1, 10, tzinfo=utc))
    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])

    @patch('metrics.daily_metrics.CommandMessageManager')
    @patch('metrics.daily_metrics.Queue')
    @patch('metrics.daily_metrics.timezone.now',
           lambda: datetime.datetime(2015, 1, 10, tzinfo=utc))
    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)

    @patch('metrics.daily_metrics.CommandMessageManager')
    @patch('metrics.daily_metrics.Queue')
    @patch('metrics.daily_metrics.timezone.now',
           lambda: datetime.datetime(2015, 1, 10, tzinfo=utc))
    def test_process_event_duplicate(self, mock_Queue, mock_msg_mgr):
        """Tests processing an event that was previously handled."""
        event = job_test_utils.create_clock_event(
            occurred=datetime.datetime(2015, 1, 10, 12, tzinfo=utc))
        last = job_test_utils.create_clock_event(
            occurred=datetime.datetime(2015, 1, 10, 10, tzinfo=utc))

        self.processor.process_event(event, last)

        self.assertFalse(mock_Queue.objects.queue_new_job_v6.called)
Exemple #4
0
    def setUp(self):
        django.setup()

        self.job_type = job_test_utils.create_job_type(name=u'scale-daily-metrics')
        self.processor = DailyMetricsProcessor()
class TestDailyMetricsProcessor(TestCase):
    """Tests the DailyMetricsProcessor clock event class."""

    def setUp(self):
        django.setup()

        self.job_type = job_test_utils.create_job_type(name='scale-daily-metrics')
        self.processor = DailyMetricsProcessor()

    @patch('metrics.daily_metrics.Queue')
    @patch('metrics.daily_metrics.timezone.now', lambda: datetime.datetime(2015, 1, 10, tzinfo=timezone.utc))
    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({'input_data': [{'name': 'Day', 'value': '2015-01-09'}], 'output_data': [],
                              'version': '1.0'}, call_args[1].get_dict())
        self.assertEqual(event, call_args[2])

    @patch('metrics.daily_metrics.Queue')
    @patch('metrics.daily_metrics.timezone.now', lambda: datetime.datetime(2015, 1, 10, tzinfo=timezone.utc))
    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])

    @patch('metrics.daily_metrics.Queue')
    @patch('metrics.daily_metrics.timezone.now', lambda: datetime.datetime(2015, 1, 10, tzinfo=timezone.utc))
    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)

    @patch('metrics.daily_metrics.Queue')
    @patch('metrics.daily_metrics.timezone.now', lambda: datetime.datetime(2015, 1, 10, tzinfo=timezone.utc))
    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)
Exemple #6
0
class TestDailyMetricsProcessor(TestCase):
    '''Tests the DailyMetricsProcessor clock event class.'''
    def setUp(self):
        django.setup()

        self.job_type = job_test_utils.create_job_type(
            name=u'scale-daily-metrics')
        self.processor = DailyMetricsProcessor()

    @patch('metrics.daily_metrics.Queue')
    @patch('metrics.daily_metrics.timezone.now',
           lambda: datetime.datetime(2015, 1, 10, tzinfo=timezone.utc))
    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])

    @patch('metrics.daily_metrics.Queue')
    @patch('metrics.daily_metrics.timezone.now',
           lambda: datetime.datetime(2015, 1, 10, tzinfo=timezone.utc))
    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(
            {
                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])

    @patch('metrics.daily_metrics.Queue')
    @patch('metrics.daily_metrics.timezone.now',
           lambda: datetime.datetime(2015, 1, 10, tzinfo=timezone.utc))
    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)

    @patch('metrics.daily_metrics.Queue')
    @patch('metrics.daily_metrics.timezone.now',
           lambda: datetime.datetime(2015, 1, 10, tzinfo=timezone.utc))
    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)