Exemplo n.º 1
0
 def test_set_flush_interval_accepts_positive_numbers(self):
     processor = QueueProcessor(Queue())
     processor.flush_interval = 103
     self.assertEqual(103, processor.flush_interval)
     processor.flush_interval = 0.58
     self.assertEqual(0.58, processor.flush_interval)
     processor.flush_interval = '3.4'
     self.assertEqual(3.4, processor.flush_interval)
Exemplo n.º 2
0
 def test_set_flush_interval_accepts_positive_numbers(self):
     processor = QueueProcessor(Queue())
     processor.flush_interval = 103
     self.assertEqual(103, processor.flush_interval)
     processor.flush_interval = 0.58
     self.assertEqual(0.58, processor.flush_interval)
     processor.flush_interval = '3.4'
     self.assertEqual(3.4, processor.flush_interval)
Exemplo n.º 3
0
 def test_process_stops_on_stop_token_in_queue(self):
     token = 'STOP'
     expected_flushed_metrics_count = 2
     metrics = (Counter('user.login', 1),
                Set('username', 'navdoon'),
                Counter('user.login', 3),
                token,
                Counter('user.login', -1),
                Counter('user.logout', 1),)
     queue_ = Queue()
     destination = StubDestination()
     destination.expected_count = expected_flushed_metrics_count
     processor = QueueProcessor(queue_)
     processor.flush_interval = 2
     processor.stop_process_token = token
     processor.set_destinations([destination])
     process_thread = Thread(target=processor.process)
     process_thread.start()
     processor.wait_until_processing(5)
     for metric in metrics:
         if metric is token:
             sleep(processor.flush_interval)  # make sure one flush happened before token
             request = metric
         else:
             request = metric.to_request()
         queue_.put(request)
     # make sure the processor has process the queue
     processor.wait_until_shutdown(5)
     self.assertFalse(processor.is_processing())
     destination.wait_until_expected_count_items(10)
     self.assertEqual(expected_flushed_metrics_count,
                      len(destination.metrics))
     self.assertEqual(('user.login', 4), destination.metrics[0][:2])
     self.assertEqual(('username', 1), destination.metrics[1][:2])
Exemplo n.º 4
0
    def test_continues_processing_after_reload(self):
        metrics = (Counter('user.login',
                           1), Set('username',
                                   'navdoon'), Counter('user.login', 3))
        queue_ = Queue()
        destination = StubDestination()
        destination.expected_count = 1

        processor = QueueProcessor(queue_)
        processor.flush_interval = 1
        processor.set_destinations([destination])
        process_thread = Thread(target=processor.process)
        process_thread.start()
        processor.wait_until_processing(5)

        expected_flushed_metrics2 = 2
        destination2 = StubDestination()
        destination2.expected_count = expected_flushed_metrics2
        processor.set_destinations([destination2])

        for metric in metrics:
            queue_.put(metric.to_request())

        destination.wait_until_expected_count_items(5)
        processor.shutdown()
        process_thread.join(5)
        self.assertFalse(processor.is_processing())
        self.assertGreaterEqual(len(destination.metrics), 1)
        self.assertLessEqual(queue_.qsize(), 2)

        for metric in metrics:
            queue_.put(metric.to_request())

        self.assertGreaterEqual(queue_.qsize(), len(metrics))
        resume_process_thread = Thread(target=processor.process)
        resume_process_thread.start()
        processor.wait_until_processing(5)
        self.assertTrue(processor.is_processing())
        self.assertEqual(processor.get_destinations(), [destination2])

        destination2.wait_until_expected_count_items(5)
        processor.shutdown()
        resume_process_thread.join(5)
        self.assertGreaterEqual(len(destination2.metrics),
                                expected_flushed_metrics2)
Exemplo n.º 5
0
    def test_continues_processing_after_reload(self):
        metrics = (Counter('user.login', 1), Set('username', 'navdoon'),
                   Counter('user.login', 3))
        queue_ = Queue()
        destination = StubDestination()
        destination.expected_count = 1

        processor = QueueProcessor(queue_)
        processor.flush_interval = 1
        processor.set_destinations([destination])
        process_thread = Thread(target=processor.process)
        process_thread.start()
        processor.wait_until_processing(5)

        expected_flushed_metrics2 = 2
        destination2 = StubDestination()
        destination2.expected_count = expected_flushed_metrics2
        processor.set_destinations([destination2])

        for metric in metrics:
            queue_.put(metric.to_request())

        destination.wait_until_expected_count_items(5)
        processor.shutdown()
        process_thread.join(5)
        self.assertFalse(processor.is_processing())
        self.assertGreaterEqual(len(destination.metrics), 1)
        self.assertLessEqual(queue_.qsize(), 2)

        for metric in metrics:
            queue_.put(metric.to_request())

        self.assertGreaterEqual(queue_.qsize(), len(metrics))
        resume_process_thread = Thread(target=processor.process)
        resume_process_thread.start()
        processor.wait_until_processing(5)
        self.assertTrue(processor.is_processing())
        self.assertEqual(processor.get_destinations(), [destination2])

        destination2.wait_until_expected_count_items(5)
        processor.shutdown()
        resume_process_thread.join(5)
        self.assertGreaterEqual(len(destination2.metrics), expected_flushed_metrics2)
Exemplo n.º 6
0
 def test_process_stops_on_stop_token_in_queue(self):
     token = 'STOP'
     expected_flushed_metrics_count = 2
     metrics = (
         Counter('user.login', 1),
         Set('username', 'navdoon'),
         Counter('user.login', 3),
         token,
         Counter('user.login', -1),
         Counter('user.logout', 1),
     )
     queue_ = Queue()
     destination = StubDestination()
     destination.expected_count = expected_flushed_metrics_count
     processor = QueueProcessor(queue_)
     processor.flush_interval = 2
     processor.stop_process_token = token
     processor.set_destinations([destination])
     process_thread = Thread(target=processor.process)
     process_thread.start()
     processor.wait_until_processing(5)
     for metric in metrics:
         if metric is token:
             sleep(processor.flush_interval
                   )  # make sure one flush happened before token
             request = metric
         else:
             request = metric.to_request()
         queue_.put(request)
     # make sure the processor has process the queue
     processor.wait_until_shutdown(5)
     self.assertFalse(processor.is_processing())
     destination.wait_until_expected_count_items(10)
     self.assertEqual(expected_flushed_metrics_count,
                      len(destination.metrics))
     self.assertEqual(('user.login', 4), destination.metrics[0][:2])
     self.assertEqual(('username', 1), destination.metrics[1][:2])