def test_execute_async(self): done = coros.event() def some_work(): done.send() pool = self.klass(0, 2) pool.execute_async(some_work) done.wait()
def test_reentrant(self): pool = self.klass(0,1) def reenter(): waiter = pool.execute(lambda a: a, 'reenter') self.assertEqual('reenter', waiter.wait()) outer_waiter = pool.execute(reenter) outer_waiter.wait() evt = coros.event() def reenter_async(): pool.execute_async(lambda a: a, 'reenter') evt.send('done') pool.execute_async(reenter_async) evt.wait()
def test_multiple_coros(self): evt = coros.event() results = [] def producer(): results.append('prod') evt.send() def consumer(): results.append('cons1') evt.wait() results.append('cons2') pool = self.klass(0, 2) done = pool.execute(consumer) pool.execute_async(producer) done.wait() self.assertEquals(['cons1', 'prod', 'cons2'], results)
def reenter_async(): pool.execute_async(lambda a: a, 'reenter') evt.send('done')