Ejemplo n.º 1
0
 def test_constructing_from_pool(self):
     pool = greenpool.GreenPool(2)
     pile1 = greenpool.GreenPile(pool)
     pile2 = greenpool.GreenPile(pool)
     def bunch_of_work(pile, unique):
         for i in xrange(10):
             pile.spawn(passthru, i + unique)
     eventlet.spawn(bunch_of_work, pile1, 0)
     eventlet.spawn(bunch_of_work, pile2, 100)
     eventlet.sleep(0)
     self.assertEquals(list(pile2), list(xrange(100,110)))
     self.assertEquals(list(pile1), list(xrange(10)))
Ejemplo n.º 2
0
    def spawn_order_check(self, concurrency):
        # checks that piles are strictly ordered
        p = greenpool.GreenPile(concurrency)

        def makework(count, unique):
            for i in six.moves.range(count):
                token = (unique, i)
                p.spawn(pressure, token)

        iters = 1000
        eventlet.spawn(makework, iters, 1)
        eventlet.spawn(makework, iters, 2)
        eventlet.spawn(makework, iters, 3)
        p.spawn(pressure, (0, 0))
        latest = [-1] * 4
        received = 0
        it = iter(p)
        while True:
            try:
                i = six.next(it)
            except StressException as exc:
                i = exc.args[0]
            except StopIteration:
                break
            received += 1
            if received % 5 == 0:
                eventlet.sleep(0.0001)
            unique, order = i
            self.assert_(latest[unique] < order)
            latest[unique] = order
        for l in latest[1:]:
            self.assertEqual(l, iters - 1)
Ejemplo n.º 3
0
 def test_pile_spawn_times_out(self):
     p = greenpool.GreenPile(4)
     for i in range(4):
         p.spawn(passthru, i)
     # now it should be full and this should time out
     eventlet.Timeout(0)
     self.assertRaises(eventlet.Timeout, p.spawn, passthru, "time out")
     # verify that the spawn breakage didn't interrupt the sequence
     # and terminates properly
     for i in range(4, 10):
         p.spawn(passthru, i)
     self.assertEqual(list(p), list(range(10)))
Ejemplo n.º 4
0
 def spawn_order_check(self, concurrency):
     # checks that piles are strictly ordered
     p = greenpool.GreenPile(concurrency)
     def makework(count, unique):            
         for i in xrange(count):
             token = (unique, i)
             p.spawn(pressure, token)
     
     iters = 1000
     eventlet.spawn(makework, iters, 1)
     eventlet.spawn(makework, iters, 2)
     eventlet.spawn(makework, iters, 3)
     p.spawn(pressure, (0,0))
     latest = [-1] * 4
     received = 0
     it = iter(p)
     while True:
         try:
             i = it.next()
         except StressException, exc:
             i = exc.args[0]
         except StopIteration:
             break
Ejemplo n.º 5
0
 def test_pile(self):
     p = greenpool.GreenPile(4)
     for i in range(10):
         p.spawn(passthru, i)
     result_list = list(p)
     self.assertEqual(result_list, list(range(10)))