def test_run_no_messages(self, run_queue): """Ensure the return value is False when no messages are processed from the queues. Ensure all push queues are processed by run(). Ensure pull queues are skipped. """ from furious.test_stubs.appengine.queues import run queue_descs = [ {'name': 'default', 'mode': 'push', 'bucket_size': 100}, {'name': 'default-pull', 'mode': 'pull', 'bucket_size': 5}, {'name': 'my_queue', 'mode': 'push', 'bucket_size': 100}] queue_service = Mock() queue_service.GetQueues.side_effect = [queue_descs] # Simulate that there are no messages processed from any queue. run_queue.return_value = 0 run_result = run(queue_service) # Expect 'default' and 'my_queue' to be processed since the other one # is a pull queue. expected_call_args_list = [call(queue_service, 'default'), call(queue_service, 'my_queue')] # Ensure run_queue processes tries to process the push queues. self.assertEqual(run_queue.call_args_list, expected_call_args_list) # Make sure that 0 is the number of messages processed. self.assertEqual(0, run_result['tasks_processed']) self.assertEqual(1, run_result['iterations'])
def test_run_no_messages(self, run_queue): """Ensure the return value is False when no messages are processed from the queues. Ensure all push queues are processed by run(). Ensure pull queues are skipped. """ from furious.test_stubs.appengine.queues import run queue_descs = [ {'name': 'default', 'mode': 'push', 'bucket_size': 100}, {'name': 'default-pull', 'mode': 'pull', 'bucket_size': 5}, {'name': 'my_queue', 'mode': 'push', 'bucket_size': 100}] queue_service = Mock() queue_service.GetQueues.side_effect = [queue_descs] # Simulate that there are no messages processed from any queue. run_queue.return_value = 0 run_result = run(queue_service) # Expect 'default' and 'my_queue' to be processed since the other one # is a pull queue. expected_call_args_list = [call(queue_service, 'default', None, None, False), call(queue_service, 'my_queue', None, None, False)] # Ensure run_queue processes tries to process the push queues. self.assertEqual(run_queue.call_args_list, expected_call_args_list) # Make sure that 0 is the number of messages processed. self.assertEqual(0, run_result['tasks_processed']) self.assertEqual(1, run_result['iterations'])
def test_run(self, run_queue): """Ensure all push queues are processed by run(). Ensure pull queues are skipped. """ from furious.test_stubs.appengine.queues import run queue_descs = [{ 'name': 'default', 'mode': 'push', 'bucket_size': 100 }, { 'name': 'default-pull', 'mode': 'pull', 'bucket_size': 5 }, { 'name': 'another-pull', 'mode': 'pull', 'bucket_size': 5 }, { 'name': 'my_queue', 'mode': 'push', 'bucket_size': 100 }] queue_service = Mock() queue_service.GetQueues.side_effect = [queue_descs] # Simulate that messages are processed from each push queue. num_in_default = 2 num_in_my = 1 # The two zeros are num remaining in the 2nd iteration for each queue. run_queue.side_effect = [num_in_default, num_in_my, 0, 0] run_result = run(queue_service) # Expected 'default' and 'my_queue' to be the only queues processed # since others are pull queues. expected_call_args_list = [ call(queue_service, 'default', None, None, False), call(queue_service, 'my_queue', None, None, False), call(queue_service, 'default', None, None, False), call(queue_service, 'my_queue', None, None, False) ] # Ensure run_queue processes the push queues. self.assertEqual(run_queue.call_args_list, expected_call_args_list) # Make sure 2 is returned as the number of messages processed. self.assertEqual(num_in_default + num_in_my, run_result['tasks_processed']) self.assertEqual(2, run_result['iterations'])
def test_run_some_queues_with_messages(self, run_queue): """Ensure that the tasks_processed in the return dict is 5 when the first queue processes 5 messages and the next queue processes 0. Ensure all push queues are processed by run(). Ensure pull queues are skipped. """ from furious.test_stubs.appengine.queues import run queue_descs = [{ 'name': 'default', 'mode': 'push', 'bucket_size': 100 }, { 'name': 'my_queue', 'mode': 'push', 'bucket_size': 100 }] queue_service = Mock(GetQueues=Mock(side_effect=[queue_descs])) # Simulate that messages were processed from the first push queue, # but not the second. run_queue.side_effect = [5, 0, 0, 0] run_result = run(queue_service) # Expected 'default' and 'my_queue' to be processed. # They are processed twice each since messages were processed the # first iteration. expected_call_args_list = [ call(queue_service, 'default', None, None, False), call(queue_service, 'my_queue', None, None, False), call(queue_service, 'default', None, None, False), call(queue_service, 'my_queue', None, None, False) ] # Ensure run_queue processes the push queues. self.assertEqual(run_queue.call_args_list, expected_call_args_list) # Make sure that 5 was returned as the number of messages processed. self.assertEqual(5, run_result['tasks_processed']) self.assertEqual(2, run_result['iterations'])
def test_run(self, run_queue): """Ensure all push queues are processed by run(). Ensure pull queues are skipped. """ from furious.test_stubs.appengine.queues import run queue_descs = [ {'name': 'default', 'mode': 'push', 'bucket_size': 100}, {'name': 'default-pull', 'mode': 'pull', 'bucket_size': 5}, {'name': 'another-pull', 'mode': 'pull', 'bucket_size': 5}, {'name': 'my_queue', 'mode': 'push', 'bucket_size': 100}] queue_service = Mock() queue_service.GetQueues.side_effect = [queue_descs] # Simulate that messages are processed from each push queue. num_in_default = 2 num_in_my = 1 # The two zeros are num remaining in the 2nd iteration for each queue. run_queue.side_effect = [num_in_default, num_in_my, 0, 0] run_result = run(queue_service) # Expected 'default' and 'my_queue' to be the only queues processed # since others are pull queues. expected_call_args_list = [call(queue_service, 'default', None, None, False), call(queue_service, 'my_queue', None, None, False), call(queue_service, 'default', None, None, False), call(queue_service, 'my_queue', None, None, False)] # Ensure run_queue processes the push queues. self.assertEqual(run_queue.call_args_list, expected_call_args_list) # Make sure 2 is returned as the number of messages processed. self.assertEqual(num_in_default + num_in_my, run_result['tasks_processed']) self.assertEqual(2, run_result['iterations'])
def test_run_some_queues_with_messages(self, run_queue): """Ensure that the tasks_processed in the return dict is 5 when the first queue processes 5 messages and the next queue processes 0. Ensure all push queues are processed by run(). Ensure pull queues are skipped. """ from furious.test_stubs.appengine.queues import run queue_descs = [ {'name': 'default', 'mode': 'push', 'bucket_size': 100}, {'name': 'my_queue', 'mode': 'push', 'bucket_size': 100}] queue_service = Mock(GetQueues=Mock(side_effect=[queue_descs])) # Simulate that messages were processed from the first push queue, # but not the second. run_queue.side_effect = [5, 0, 0, 0] run_result = run(queue_service) # Expected 'default' and 'my_queue' to be processed. # They are processed twice each since messages were processed the # first iteration. expected_call_args_list = [call(queue_service, 'default', None, None, False), call(queue_service, 'my_queue', None, None, False), call(queue_service, 'default', None, None, False), call(queue_service, 'my_queue', None, None, False)] # Ensure run_queue processes the push queues. self.assertEqual(run_queue.call_args_list, expected_call_args_list) # Make sure that 5 was returned as the number of messages processed. self.assertEqual(5, run_result['tasks_processed']) self.assertEqual(2, run_result['iterations'])
def run_taskq(self): from furious.test_stubs.appengine.queues import run run(self._taskq_service)