def test_handle_immediate_success(self): queue = libvirtworker.WorkQueue() def work(): return defer.succeed(True) yield queue.execute(work)
def test_handle_immediate_errback(self): queue = libvirtworker.WorkQueue() def work(): return defer.fail(RuntimeError("Sad times")) yield self.expect_errback(queue.execute(work))
def test_handle_exceptions(self): queue = libvirtworker.WorkQueue() def work(): raise ValueError yield self.expect_errback(queue.execute(work))
def test_work(self): queue = libvirtworker.WorkQueue() # We want these deferreds to fire in order flags = {1: False, 2: False, 3: False} # When first deferred fires, flags[2] and flags[3] should still be false # flags[1] shouldn't already be set, either @defer.inlineCallbacks def d1(): yield queue.execute(self.delayed_success()) self.assertEqual(flags[1], False) flags[1] = True self.assertEqual(flags[2], False) self.assertEqual(flags[3], False) # When second deferred fires, only flags[3] should be set # flags[2] should definitely be False @defer.inlineCallbacks def d2(): yield queue.execute(self.delayed_success()) self.assertFalse(flags[2]) flags[2] = True self.assertTrue(flags[1]) self.assertFalse(flags[3]) # When third deferred fires, only flags[3] should be unset @defer.inlineCallbacks def d3(): yield queue.execute(self.delayed_success()) self.assertFalse(flags[3]) flags[3] = True self.assertTrue(flags[1]) self.assertTrue(flags[2]) yield defer.DeferredList([d1(), d2(), d3()], fireOnOneErrback=True)
def setUp(self): self.queue = libvirtworker.WorkQueue()
def test_second_pow_fires(self): queue = libvirtworker.WorkQueue() yield queue.execute(self.delayed_success()) yield queue.execute(self.delayed_success())
def test_fail_doesnt_break_further_work(self): queue = libvirtworker.WorkQueue() yield self.expect_errback(queue.execute(self.delayed_errback())) yield queue.execute(self.delayed_success())
def test_single_pow_errors_gracefully(self): queue = libvirtworker.WorkQueue() d = queue.execute(self.delayed_errback()) yield self.expect_errback(d)
def test_handle_delayed_success(self): queue = libvirtworker.WorkQueue() work = self.delayed_success() yield queue.execute(work)
def test_handle_delayed_errback(self): queue = libvirtworker.WorkQueue() work = self.delayed_errback() yield self.expect_errback(queue.execute(work))