Exemple #1
0
 def test_callback_retry(self):
     from plone.app.async import Job, queue
     doom_once.retries = 0
     job = queue(Job(addNumbers, 1, 1))
     job.addCallback(doom_once)
     transaction.commit()
     wait_for_result(job)
     self.assertEqual(2, job.result)
     self.assertEqual(2, doom_once.retries)
Exemple #2
0
 def test_retry(self):
     """A job that causes a conflict while committing should be retried."""
     doom.retries = 0
     from plone.app.async import Job, queue
     job = queue(Job(doom))
     transaction.commit()
     wait_for_result(job)
     self.assertTrue(job.result.type is transaction.interfaces.DoomedTransaction)
     self.assertEqual(5, doom.retries)
Exemple #3
0
 def test_delayed_retry(self):
     from datetime import timedelta
     from plone.app.async import Job, queue, RetryWithDelay
     fail_once.retries = 0
     job = queue(Job(fail_once))
     job.retry_policy_factory = RetryWithDelay(timedelta(seconds=5))
     transaction.commit()
     wait_for_result(job)
     self.assertTrue(2, fail_once.retries)
     self.assertTrue(job.result > 5)
Exemple #4
0
 def test_add_job(self):
     """Tests adding a computational job and getting the result.
     """
     from plone.app.async import Job, queue
     job = queue(Job(addNumbers, 40, 2))
     transaction.commit()
     self.assertEqual(job.status, u'pending-status')
     wait_for_result(job)
     self.assertEqual(job.status, u'completed-status')
     self.assertEqual(job.result, 42)
Exemple #5
0
 def test_add_persistent(self):
     """Adding a job that creates persistent objects.
     """
     from plone.app.async import Job, queue
     self.setRoles(['Manager'])
     job = queue(Job(self.folder.invokeFactory, 'Document', 'anid',
         title='atitle', description='adescr', text='abody'))
     transaction.commit()
     self.assertEqual(job.status, u'pending-status')
     wait_for_result(job)
     self.assertEqual(job.status, u'completed-status')
     self.assertEqual(job.result, 'anid')
     self.failUnless('anid' in self.folder.objectIds())
     document = self.folder['anid']
     self.assertEqual(document.Creator(), default_user)
Exemple #6
0
 def test_queue_job_during_job(self):
     from plone.app.async import queue, Job
     job = queue(Job(deferred_queue))
     transaction.commit()
     wait_for_result(job, 900)
     self.assertTrue(job.result is None)
Exemple #7
0
def deferred_queue():
    from plone.app.async import queue, Job
    queue(Job(addNumbers, 1, 1))