def test_new_crash_duplicate_discovered(self): """ Tests queue with standard queue items only """ config = self._setup_config() config.transaction_executor_class = TransactionExecutor crash_store = RabbitMQCrashStorage(config) crash_store.rabbitmq.config.standard_queue_name = "socorro.normal" crash_store.rabbitmq.config.reprocessing_queue_name = "socorro.reprocessing" crash_store.rabbitmq.config.priority_queue_name = "socorro.priority" faked_methodframe = DotDict() faked_methodframe.delivery_tag = "delivery_tag" test_queue = [(None, None, None), (faked_methodframe, "1", "normal_crash_id"), (None, None, None)] def basic_get(queue="socorro.priority"): if len(test_queue) == 0: raise StopIteration return test_queue.pop() crash_store.rabbitmq.return_value.__enter__.return_value.channel.basic_get = MagicMock(side_effect=basic_get) transaction_connection = crash_store.transaction.db_conn_context_source.return_value.__enter__.return_value # load the cache as if this crash had alredy been seen crash_store.acknowledgement_token_cache["normal_crash_id"] = faked_methodframe for result in crash_store.new_crashes(): # new crash should be suppressed eq_(None, result) # we should ack the new crash even though we did use it for processing transaction_connection.channel.basic_ack.assert_called_with(delivery_tag=faked_methodframe.delivery_tag)
def test_transaction_ack_crash(self): config = self._setup_config() connection = Mock() ack_token = DotDict() ack_token.delivery_tag = 1 crash_store = RabbitMQCrashStorage(config) crash_store._transaction_ack_crash(connection, ack_token) connection.channel.basic_ack.assert_called_once_with(delivery_tag=1)
def test_new_crash_duplicate_discovered(self): """ Tests queue with standard queue items only """ config = self._setup_config() config.transaction_executor_class = TransactionExecutor crash_store = RabbitMQCrashStorage(config) crash_store.rabbitmq.config.standard_queue_name = 'socorro.normal' crash_store.rabbitmq.config.reprocessing_queue_name = \ 'socorro.reprocessing' crash_store.rabbitmq.config.priority_queue_name = 'socorro.priority' faked_methodframe = DotDict() faked_methodframe.delivery_tag = 'delivery_tag' test_queue = [ (None, None, None), (faked_methodframe, '1', 'normal_crash_id'), (None, None, None), ] def basic_get(queue='socorro.priority'): if len(test_queue) == 0: raise StopIteration return test_queue.pop() crash_store.rabbitmq.return_value.__enter__.return_value \ .channel.basic_get = MagicMock(side_effect=basic_get) transaction_connection = crash_store.transaction.db_conn_context_source \ .return_value.__enter__.return_value # load the cache as if this crash had alredy been seen crash_store.acknowledgement_token_cache['normal_crash_id'] = \ faked_methodframe for result in crash_store.new_crashes(): # new crash should be suppressed eq_(None, result) # we should ack the new crash even though we did use it for processing transaction_connection.channel.basic_ack \ .assert_called_with( delivery_tag=faked_methodframe.delivery_tag )