Example #1
0
 def test_manual_retry_task(self):
     task_id = manual_retry()
     result = task.run(task_id)
     self.assertEqual('fail', result)
     self.assertTrue(task.exists(task_id))
     self.assertFalse(task.is_complete(task_id))
     result = task.run(task_id)
     self.assertNotEqual('fail', result)
     self.assertTrue(task.exists(task_id))
     self.assertTrue(task.is_complete(task_id))
Example #2
0
 def test_manual_retry_task(self):
     task_id = manual_retry()
     result = task.run(task_id)
     self.assertEqual('fail', result)
     self.assertTrue(task.exists(task_id))
     self.assertFalse(task.is_complete(task_id))
     result = task.run(task_id)
     self.assertNotEqual('fail', result)
     self.assertTrue(task.exists(task_id))
     self.assertTrue(task.is_complete(task_id))
Example #3
0
 def test_object_retry_deleted_object(self):
     obj = ObjectWithTasks(42)
     task_id = obj.retry_value()
     task.run(task_id)
     self.assertTrue(task.exists(task_id))
     self.assertFalse(task.is_complete(task_id))
     del obj
     result = task.run(task_id)
     self.assertNotEqual('fail', result)
     self.assertTrue(task.exists(task_id))
     self.assertTrue(task.is_complete(task_id))
     self.assertEqual(result, 42)
Example #4
0
 def test_object_retry_deleted_object(self):
     obj = ObjectWithTasks(42)
     task_id = obj.retry_value()
     task.run(task_id)
     self.assertTrue(task.exists(task_id))
     self.assertFalse(task.is_complete(task_id))
     del obj
     result = task.run(task_id)
     self.assertNotEqual('fail', result)
     self.assertTrue(task.exists(task_id))
     self.assertTrue(task.is_complete(task_id))
     self.assertEqual(result, 42)
Example #5
0
 def test_generator_retry_task(self):
     task_id = generator_retry()
     rval = task.run(task_id)
     result = rval.next()
     self.assertEqual('fail', result)
     self.assertTrue(task.exists(task_id))
     self.assertFalse(task.is_complete(task_id))
     rval = task.run(task_id)
     result = rval.next()
     self.assertNotEqual('fail', result)
     self.assertRaises(StopIteration, rval.next)
     self.assertTrue(task.exists(task_id))
     self.assertTrue(task.is_complete(task_id))
Example #6
0
 def test_generator_retry_task(self):
     task_id = generator_retry()
     rval = task.run(task_id)
     result = rval.next()
     self.assertEqual('fail', result)
     self.assertTrue(task.exists(task_id))
     self.assertFalse(task.is_complete(task_id))
     rval = task.run(task_id)
     result = rval.next()
     self.assertNotEqual('fail', result)
     self.assertRaises(StopIteration, rval.next)
     self.assertTrue(task.exists(task_id))
     self.assertTrue(task.is_complete(task_id))
Example #7
0
 def test_complex_task(self):
     task_id = complex_task(10)
     rval = task.run(task_id)
     self.assertTrue(task.exists(task_id))
     self.assertFalse(task.is_complete(task_id))
     total = 0
     for x in xrange(5):
         total += rval.next()
     self.assertTrue(task.exists(task_id))
     self.assertFalse(task.is_complete(task_id))
     rval = task.run(task_id)
     for x in xrange(5):
         total += rval.next()
     self.assertRaises(StopIteration, rval.next)
     self.assertTrue(task.exists(task_id))
     self.assertTrue(task.is_complete(task_id))
     task_id = complex_task(10)
     rval = task.run(task_id)
     self.assertEqual(total, sum(list(rval)))
Example #8
0
 def test_complex_task(self):
     task_id = complex_task(10)
     rval = task.run(task_id)
     self.assertTrue(task.exists(task_id))
     self.assertFalse(task.is_complete(task_id))
     total = 0
     for x in xrange(5):
         total += rval.next()
     self.assertTrue(task.exists(task_id))
     self.assertFalse(task.is_complete(task_id))
     rval = task.run(task_id)
     for x in xrange(5):
         total += rval.next()
     self.assertRaises(StopIteration, rval.next)
     self.assertTrue(task.exists(task_id))
     self.assertTrue(task.is_complete(task_id))
     task_id = complex_task(10)
     rval = task.run(task_id)
     self.assertEqual(total, sum(list(rval)))
Example #9
0
 def test_rerun_old_tasks(self):
     mock_datetime.set_time_override()
     try:
         task_id1 = nofail()
         task.run(task_id1)
         task_id2 = nofail()
         task.run(task_id2)
         mock_datetime.advance_time_seconds(60)
         task_id3 = nofail()
         task.run(task_id3)
         self.assertFalse(task.is_complete(task_id1))
         task.run(task_id1)
         timeout = mock_datetime.utcnow() - datetime.timedelta(seconds=30)
         num = task.timeout(timeout)
         self.assertEqual(num, 1)
         task_id = task.claim()
         self.assertEqual(task_id, task_id2)
         self.assertEqual(task.claim(), None)
         task.run(task_id)
         self.assertTrue(task.is_complete(task_id2))
         self.assertFalse(task.is_complete(task_id3))
     finally:
         mock_datetime.clear_time_override()
Example #10
0
 def test_rerun_old_tasks(self):
     mock_datetime.set_time_override()
     try:
         task_id1 = nofail()
         task.run(task_id1)
         task_id2 = nofail()
         task.run(task_id2)
         mock_datetime.advance_time_seconds(60)
         task_id3 = nofail()
         task.run(task_id3)
         self.assertFalse(task.is_complete(task_id1))
         task.run(task_id1)
         timeout = mock_datetime.utcnow() - datetime.timedelta(seconds=30)
         num = task.timeout(timeout)
         self.assertEqual(num, 1)
         task_id = task.claim()
         self.assertEqual(task_id, task_id2)
         self.assertEqual(task.claim(), None)
         task.run(task_id)
         self.assertTrue(task.is_complete(task_id2))
         self.assertFalse(task.is_complete(task_id3))
     finally:
         mock_datetime.clear_time_override()
Example #11
0
 def test_change_task_name(self):
     task_id = one_name()
     task.run(task_id)
     self.assertTrue(task.exists(task_id))
     self.assertTrue(task.is_complete(task_id))
     self.assertEqual(task.get(task_id)['task_name'], 'another_name')
Example #12
0
 def test_finish_task(self):
     task_id = finish()
     task.run(task_id)
     self.assertTrue(task.exists(task_id))
     self.assertTrue(task.is_complete(task_id))
Example #13
0
import random

import eventlet
import task

@task.ify()
def long_action(number, task_id, progress):
    tries = (progress or 0) + 1
    eventlet.sleep(random.randint(1, 10) / 10)
    if random.randint(1, 10) > 3:
        print "Action %s Failed" % number
        raise task.Failure(tries)
    print "Action %s Succeeded after %s tries" % (number, tries)
    return tries

task.setup_db('sqlite://') # in memory db

task_ids = []
for i in xrange(10):
    task_ids.append(long_action(i))

while not all(task.is_complete(task_id) for task_id in task_ids):
    task_id =  task.claim()
    if task_id:
        eventlet.spawn_n(task.run, task_id)
    eventlet.sleep(0)

for task_id in task_ids:
    print task.get(task_id)['attempts']

Example #14
0
 def test_change_task_name(self):
     task_id = one_name()
     task.run(task_id)
     self.assertTrue(task.exists(task_id))
     self.assertTrue(task.is_complete(task_id))
     self.assertEqual(task.get(task_id)['task_name'], 'another_name')
Example #15
0
 def test_finish_task(self):
     task_id = finish()
     task.run(task_id)
     self.assertTrue(task.exists(task_id))
     self.assertTrue(task.is_complete(task_id))
Example #16
0
        yield progress
    if progress['phase'] < 2:
        if random.randint(1, 10) > 5:
            raise task.Failure(progress)
        progress['phase'] += 1
        yield progress
    if progress['phase'] < 3:
        if random.randint(1, 10) > 1:
            raise task.Failure(progress)
        progress['phase'] += 1
        yield progress


task.setup_db('sqlite://')  # in memory db
task_id = unstable_action()


def get_results(results):
    try:
        for progress in results:
            print "Phase %s Complete" % progress['phase']
    except task.Failure as ex:
        print "Phase %s Failed" % (ex.progress['phase'] + 1)


while not task.is_complete(task_id):
    results = task.run(task_id)
    get_results(results)

print "Task Completed"
Example #17
0
    progress = progress or {'phase': 0}
    if progress['phase'] < 1:
        progress['phase'] += 1
        yield progress
    if progress['phase'] < 2:
        if random.randint(1, 10) > 5:
            raise task.Failure(progress)
        progress['phase'] += 1
        yield progress
    if progress['phase'] < 3:
        if random.randint(1, 10) > 1:
            raise task.Failure(progress)
        progress['phase'] += 1
        yield progress

task.setup_db('sqlite://') # in memory db
task_id = unstable_action()

def get_results(results):
    try:
        for progress in results:
            print "Phase %s Complete" % progress['phase']
    except task.Failure as ex:
        print "Phase %s Failed" % (ex.progress['phase'] + 1)

while not task.is_complete(task_id):
    results = task.run(task_id)
    get_results(results)

print "Task Completed"