def test_insert_tasks_ignore_duplicate_names_relays_parms(self,
                                                              mock_tasks):
        """Ensure args and kwargs passed, are passed onto _insert_tasks as
        expected.
        """

        insert_tasks_ignore_duplicate_names(['1'], 'queue', 'arg1', foo='bar')

        mock_tasks.assert_called_once_with(['1'], 'queue', 'arg1', foo='bar')
Example #2
0
    def test_insert_tasks_ignore_duplicate_names_relays_parms(
            self, mock_tasks):
        """Ensure args and kwargs passed, are passed onto _insert_tasks as
        expected.
        """

        insert_tasks_ignore_duplicate_names(['1'], 'queue', 'arg1', foo='bar')

        mock_tasks.assert_called_once_with(['1'], 'queue', 'arg1', foo='bar')
Example #3
0
    def test_insert_tasks_ignore_duplicate_names_partial_errors(
            self, mock_add):
        """Ensure if `DuplicateTaskNameError` raised, that each task is
        retried, and count is correct if some tasks could be re-inserted.
        """

        # Bulk add fails, then 2nd named task fails.
        mock_add.side_effect = (taskqueue.DuplicateTaskNameError, None,
                                taskqueue.TaskAlreadyExistsError, None)

        tasks = [taskqueue.Task('1'), taskqueue.Task('2'), taskqueue.Task('3')]
        inserted = insert_tasks_ignore_duplicate_names(tasks, 'queue')

        self.assertEqual(inserted, 2)
        self.assertEqual(mock_add.call_count, 4)
        mock_add.assert_any_call(tasks, transactional=False)
        for task in tasks:
            mock_add.assert_any_call([task], transactional=False)
    def test_insert_tasks_ignore_duplicate_names_partial_errors(self, mock_add):
        """Ensure if `DuplicateTaskNameError` raised, that each task is
        retried, and count is correct if some tasks could be re-inserted.
        """

        # Bulk add fails, then 2nd named task fails.
        mock_add.side_effect = (taskqueue.DuplicateTaskNameError,
                                None,
                                taskqueue.TaskAlreadyExistsError,
                                None)

        tasks = [taskqueue.Task('1'), taskqueue.Task('2'), taskqueue.Task('3')]
        inserted = insert_tasks_ignore_duplicate_names(tasks, 'queue')

        self.assertEqual(inserted, 2)
        self.assertEqual(mock_add.call_count, 4)
        mock_add.assert_any_call(tasks, transactional=False)
        for task in tasks:
            mock_add.assert_any_call([task], transactional=False)
Example #5
0
    def test_insert_tasks_ignore_duplicate_names_was_enqueued(self, mock_add):
        """Ensure only tasks that were not enqueued on the initial BulkAdd() are
        re-inserted.
        """

        # Bulk add fails, then 2nd named task fails.
        mock_add.side_effect = (taskqueue.DuplicateTaskNameError,
                                taskqueue.TaskAlreadyExistsError, None)
        tasks = [Mock(), taskqueue.Task('2'), taskqueue.Task('3')]
        tasks[0].was_enqueued = True

        inserted = insert_tasks_ignore_duplicate_names(tasks, 'queue')

        self.assertEqual(inserted, 2)
        self.assertEqual(mock_add.call_count, 3)

        # No attempt to re-insert tasks[0], it was marked as 'enqueued'.
        mock_add.assert_any_call(tasks, transactional=False)
        mock_add.assert_any_call([tasks[1]], transactional=False)
        mock_add.assert_any_call([tasks[2]], transactional=False)
    def test_insert_tasks_ignore_duplicate_names_was_enqueued(self, mock_add):
        """Ensure only tasks that were not enqueued on the initial BulkAdd() are
        re-inserted.
        """

        # Bulk add fails, then 2nd named task fails.
        mock_add.side_effect = (taskqueue.DuplicateTaskNameError,
                                taskqueue.TaskAlreadyExistsError,
                                None)
        tasks = [Mock(), taskqueue.Task('2'), taskqueue.Task('3')]
        tasks[0].was_enqueued = True

        inserted = insert_tasks_ignore_duplicate_names(tasks, 'queue')

        self.assertEqual(inserted, 2)
        self.assertEqual(mock_add.call_count, 3)

        # No attempt to re-insert tasks[0], it was marked as 'enqueued'.
        mock_add.assert_any_call(tasks, transactional=False)
        mock_add.assert_any_call([tasks[1]], transactional=False)
        mock_add.assert_any_call([tasks[2]], transactional=False)
    def test_insert_tasks_ignore_duplicate_names_raises(self, mock_add):
        """Ensure if `DuplicateTaskNameError` raised, that each task is
        retried.

        Also ensure that TaskAlreadyExistsError is not re-raised on the
        subsequent retries.
        """

        mock_add.side_effect = (taskqueue.DuplicateTaskNameError,
                                taskqueue.TaskAlreadyExistsError,
                                taskqueue.TaskAlreadyExistsError,
                                taskqueue.TaskAlreadyExistsError)

        tasks = [taskqueue.Task('1'), taskqueue.Task('2'), taskqueue.Task('3')]
        inserted = insert_tasks_ignore_duplicate_names(tasks, 'queue')

        # Ensure an attempt to re-insert all tasks.
        self.assertEqual(inserted, 0)
        self.assertEqual(mock_add.call_count, 4)
        mock_add.assert_any_call(tasks, transactional=False)
        for task in tasks:
            mock_add.assert_any_call([task], transactional=False)
Example #8
0
    def test_insert_tasks_ignore_duplicate_names_raises(self, mock_add):
        """Ensure if `DuplicateTaskNameError` raised, that each task is
        retried.

        Also ensure that TaskAlreadyExistsError is not re-raised on the
        subsequent retries.
        """

        mock_add.side_effect = (taskqueue.DuplicateTaskNameError,
                                taskqueue.TaskAlreadyExistsError,
                                taskqueue.TaskAlreadyExistsError,
                                taskqueue.TaskAlreadyExistsError)

        tasks = [taskqueue.Task('1'), taskqueue.Task('2'), taskqueue.Task('3')]
        inserted = insert_tasks_ignore_duplicate_names(tasks, 'queue')

        # Ensure an attempt to re-insert all tasks.
        self.assertEqual(inserted, 0)
        self.assertEqual(mock_add.call_count, 4)
        mock_add.assert_any_call(tasks, transactional=False)
        for task in tasks:
            mock_add.assert_any_call([task], transactional=False)