73 lines
2.2 KiB
Python
73 lines
2.2 KiB
Python
from tests import LimitedTestCase
|
|
from eventlet import greenthread
|
|
from eventlet.support import greenlets as greenlet
|
|
|
|
_g_results = []
|
|
def passthru(*args, **kw):
|
|
_g_results.append((args, kw))
|
|
return args, kw
|
|
|
|
class Spawn(LimitedTestCase):
|
|
def tearDown(self):
|
|
global _g_results
|
|
super(Spawn, self).tearDown()
|
|
_g_results = []
|
|
|
|
def test_simple(self):
|
|
gt = greenthread.spawn(passthru, 1, b=2)
|
|
self.assertEquals(gt.wait(), ((1,),{'b':2}))
|
|
self.assertEquals(_g_results, [((1,),{'b':2})])
|
|
|
|
def test_n(self):
|
|
gt = greenthread.spawn_n(passthru, 2, b=3)
|
|
self.assert_(not gt.dead)
|
|
greenthread.sleep(0)
|
|
self.assert_(gt.dead)
|
|
self.assertEquals(_g_results, [((2,),{'b':3})])
|
|
|
|
def test_kill(self):
|
|
gt = greenthread.spawn(passthru, 6)
|
|
greenthread.kill(gt)
|
|
self.assertRaises(greenlet.GreenletExit, gt.wait)
|
|
greenthread.sleep(0.001)
|
|
self.assertEquals(_g_results, [])
|
|
greenthread.kill(gt)
|
|
|
|
def test_kill_meth(self):
|
|
gt = greenthread.spawn(passthru, 6)
|
|
gt.kill()
|
|
self.assertRaises(greenlet.GreenletExit, gt.wait)
|
|
greenthread.sleep(0.001)
|
|
self.assertEquals(_g_results, [])
|
|
gt.kill()
|
|
|
|
def test_kill_n(self):
|
|
gt = greenthread.spawn_n(passthru, 7)
|
|
greenthread.kill(gt)
|
|
greenthread.sleep(0.001)
|
|
self.assertEquals(_g_results, [])
|
|
greenthread.kill(gt)
|
|
|
|
def test_link(self):
|
|
results = []
|
|
def link_func(g, *a, **kw):
|
|
results.append(g)
|
|
results.append(a)
|
|
results.append(kw)
|
|
gt = greenthread.spawn(passthru, 5)
|
|
gt.link(link_func, 4, b=5)
|
|
self.assertEquals(gt.wait(), ((5,), {}))
|
|
self.assertEquals(results, [gt, (4,), {'b':5}])
|
|
|
|
def test_link_after_exited(self):
|
|
results = []
|
|
def link_func(g, *a, **kw):
|
|
results.append(g)
|
|
results.append(a)
|
|
results.append(kw)
|
|
gt = greenthread.spawn(passthru, 5)
|
|
self.assertEquals(gt.wait(), ((5,), {}))
|
|
gt.link(link_func, 4, b=5)
|
|
self.assertEquals(results, [gt, (4,), {'b':5}])
|
|
|