예제 #1
0
    def test_spawn_n(self):
        p = GreenPool(4)
        results_closure = []

        def do_something(a):
            sleep(0.01)
            results_closure.append(a)

        for i in xrange(10):
            p.spawn(do_something, i)
        p.waitall()
        self.assertEquals(sorted(results_closure), range(10))
예제 #2
0
    def test_spawn_n(self):
        p = GreenPool(4)
        results_closure = []

        def do_something(a):
            sleep(0.01)
            results_closure.append(a)

        for i in xrange(10):
            p.spawn(do_something, i)
        p.waitall()
        self.assertEquals(sorted(results_closure), range(10))
예제 #3
0
        def subtest(intpool_size, pool_size, num_executes):
            def run(int_pool):
                token = int_pool.get()
                sleep(0.0001)
                int_pool.put(token)
                return token

            int_pool = IntPool(intpool_size)
            pool = GreenPool(pool_size)
            for ix in xrange(num_executes):
                pool.spawn(run, int_pool)
            pool.waitall()
예제 #4
0
 def test_exceptions(self):
     p = GreenPool(2)
     for m in (p.spawn, p.spawn_n):
         self.assert_pool_has_free(p, 2)
         m(raiser, RuntimeError())
         self.assert_pool_has_free(p, 1)
         p.waitall()
         self.assert_pool_has_free(p, 2)
         m(raiser, greenlet.GreenletExit)
         self.assert_pool_has_free(p, 1)
         p.waitall()
         self.assert_pool_has_free(p, 2)
예제 #5
0
 def test_exceptions(self):
     p = GreenPool(2)
     for m in (p.spawn, p.spawn_n):
         self.assert_pool_has_free(p, 2)
         m(raiser, RuntimeError())
         self.assert_pool_has_free(p, 1)
         p.waitall()
         self.assert_pool_has_free(p, 2)
         m(raiser, greenlet.GreenletExit)
         self.assert_pool_has_free(p, 1)
         p.waitall()
         self.assert_pool_has_free(p, 2)
예제 #6
0
        def subtest(intpool_size, pool_size, num_executes):
            def run(int_pool):
                token = int_pool.get()
                sleep(0.0001)
                int_pool.put(token)
                return token

            int_pool = IntPool(intpool_size)
            pool = GreenPool(pool_size)
            for ix in xrange(num_executes):
                pool.spawn(run, int_pool)
            pool.waitall()
예제 #7
0
    def test_no_leaking(self):
        refs = weakref.WeakKeyDictionary()
        my_local = corolocal.local()

        class X(object):
            pass

        def do_something(i):
            o = X()
            refs[o] = True
            my_local.foo = o

        p = GreenPool()
        for i in xrange(100):
            p.spawn(do_something, i)
        p.waitall()
        del p
        # at this point all our coros have terminated
        self.assertEqual(len(refs), 1)
예제 #8
0
파일: test_thread.py 프로젝트: inercia/evy
    def test_no_leaking (self):
        refs = weakref.WeakKeyDictionary()
        my_local = corolocal.local()

        class X(object):
            pass

        def do_something (i):
            o = X()
            refs[o] = True
            my_local.foo = o

        p = GreenPool()
        for i in xrange(100):
            p.spawn(do_something, i)
        p.waitall()
        del p
        # at this point all our coros have terminated
        self.assertEqual(len(refs), 1)
예제 #9
0
    def test_create_contention(self):
        creates = [0]

        def sleep_create():
            creates[0] += 1
            sleep()
            return "slept"

        p = pools.Pool(max_size=4, create=sleep_create)

        def do_get():
            x = p.get()
            self.assertEquals(x, "slept")
            p.put(x)

        gp = GreenPool()
        for i in xrange(100):
            gp.spawn_n(do_get)
        gp.waitall()
        self.assertEquals(creates[0], 4)
예제 #10
0
파일: test_pools.py 프로젝트: inercia/evy
    def test_create_contention (self):
        creates = [0]

        def sleep_create ():
            creates[0] += 1
            sleep()
            return "slept"

        p = pools.Pool(max_size = 4, create = sleep_create)

        def do_get ():
            x = p.get()
            self.assertEquals(x, "slept")
            p.put(x)

        gp = GreenPool()
        for i in xrange(100):
            gp.spawn_n(do_get)
        gp.waitall()
        self.assertEquals(creates[0], 4)
예제 #11
0
 def test_waitall_on_nothing(self):
     p = GreenPool()
     p.waitall()
예제 #12
0
 def test_waitall_on_nothing(self):
     p = GreenPool()
     p.waitall()