Example #1
0
 def testFuture_Repr(self):
   f = tasklets.Future()
   prefix = (r'<Future [\da-f]+ created by '
             r'testFuture_Repr\(tasklets_test.py:\d+\) ')
   self.assertTrue(re.match(prefix + r'pending>$', repr(f)), repr(f))
   f.set_result('abc')
   self.assertTrue(re.match(prefix + r'result \'abc\'>$', repr(f)), repr(f))
   f = tasklets.Future()
   f.set_exception(RuntimeError('abc'))
   self.assertTrue(re.match(prefix + r'exception RuntimeError: abc>$',
                            repr(f)),
                   repr(f))
Example #2
0
 def testFuture_AddDoneCallback_SetException(self):
     f = tasklets.Future()
     f.add_callback(self.universal_callback, f)
     f.set_exception(RuntimeError(42))
     eventloop.run()
     self.assertEqual(self.log, [(f, )])
     self.assertEqual(f.done(), True)
Example #3
0
 def testFuture_SetResult_AddDoneCallback(self):
     f = tasklets.Future()
     f.set_result(42)
     self.assertEqual(f.get_result(), 42)
     f.add_callback(self.universal_callback, f)
     eventloop.run()
     self.assertEqual(self.log, [(f, )])
Example #4
0
 def testFuture_AddDoneCallback_SetResult(self):
     f = tasklets.Future()
     f.add_callback(self.universal_callback, f)
     self.assertEqual(self.log, [])  # Nothing happened yet.
     f.set_result(42)
     eventloop.run()
     self.assertEqual(self.log, [(f, )])
Example #5
0
 def testFuture_Done_State(self):
     f = tasklets.Future()
     self.assertFalse(f.done())
     self.assertEqual(f.state, f.RUNNING)
     f.set_result(42)
     self.assertTrue(f.done())
     self.assertEqual(f.state, f.FINISHING)
Example #6
0
 def testFuture_SetException(self):
     f = tasklets.Future()
     err = RuntimeError(42)
     f.set_exception(err)
     self.assertEqual(f.done(), True)
     self.assertEqual(f._exception, err)
     self.assertEqual(f._result, None)
     self.assertEqual(f.get_exception(), err)
     self.assertRaises(RuntimeError, f.get_result)
Example #7
0
 def add(self, arg):
   fut = tasklets.Future('%s.add(%s)' % (self, arg))
   if not self._todo:  # Schedule the callback
     # We use the fact that regular tasklets are queued at time None,
     # which puts them at absolute time 0 (i.e. ASAP -- still on a
     # FIFO basis).  Callbacks explicitly scheduled with a delay of 0
     # are only run after all immediately runnable tasklets have run.
     eventloop.queue_call(0, self._autobatcher_callback)
   self._todo.append((fut, arg))
   return fut
Example #8
0
 def create_futures(self):
   self.futs = []
   for i in range(5):
     f = tasklets.Future()
     f.add_callback(self.universal_callback, f)
     def wake(fut, result):
       fut.set_result(result)
     self.ev.queue_call(i*0.01, wake, f, i)
     self.futs.append(f)
   return set(self.futs)
Example #9
0
 def testFuture_SetResult(self):
     f = tasklets.Future()
     f.set_result(42)
     self.assertEqual(f._result, 42)
     self.assertEqual(f._exception, None)
     self.assertEqual(f.get_result(), 42)
Example #10
0
 def testFuture_Constructor(self):
     f = tasklets.Future()
     self.assertEqual(f._result, None)
     self.assertEqual(f._exception, None)
     self.assertEqual(f._callbacks, [])
Example #11
0
 def t2(error):
     if error:
         raise RuntimeError('hello')
     else:
         yield tasklets.Future()