Files
deb-python-eventlet/tests/greenthread_test.py
2010-01-18 11:50:09 -08:00

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}])