def test_managed(self): with self.executor() as ex: a = ex.future(work_load, -1) self.assertTrue(is_promise(a)) # generate some minor workload, enough to engage a queue values = [ex.future(work_load, x) for x in xrange(0, 999)] b = ex.future(work_load, -101) self.assertFalse(is_delivered(b)) # the managed interface implicitly calls the deliver() method # on the executor, so by the time we get here, everything # should be delivered. self.assertTrue(is_promise(a)) self.assertTrue(is_delivered(a)) self.assertEqual(deliver(a), 0) self.assertTrue(is_promise(b)) self.assertTrue(is_delivered(b)) self.assertEqual(deliver(b), -100) self.assertEqual([deliver(v) for v in values], list(xrange(1, 1000)))
def test_blocking(self): ex = self.executor() # generate some minor workload, enough to engage a queue values = [ex.future(work_load, x) for x in xrange(0, 999)] b = ex.future(work_load, -101) self.assertFalse(is_delivered(b)) self.assertEqual(deliver(b), -100) ex.deliver()
def test_raises(self): ex = self.executor() # generate some minor workload, enough to engage a queue values = [ex.future(work_load, x) for x in xrange(0, 999)] b = ex.future(fail_load, -101) self.assertFalse(is_delivered(b)) self.assertRaises(TacoException, lambda: deliver(b)) ex.terminate()