Example #1
0
    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()
Example #2
0
    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()
Example #3
0
    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)
Example #4
0
 def reenter_async():
     pool.execute_async(lambda a: a, 'reenter')
     evt.send('done')