added test to check that kill reschedules the current greenlet

This commit is contained in:
Denis Bilenko
2008-11-19 12:19:17 +06:00
parent a36ab187b4
commit 435e07513e

34
greentest/test__api.py Normal file
View File

@@ -0,0 +1,34 @@
import unittest
from eventlet.api import sleep, spawn, kill
DELAY = 0.1
class Test(unittest.TestCase):
def test_killing_dormant(self):
state = []
def test():
try:
state.append('start')
sleep(DELAY)
except:
state.append('except')
# catching GreenletExit
pass
# when switching to hub, hub makes itself the parent of this greenlet,
# thus after the function's done, the control will go to the parent
# QQQ why the first sleep is not enough?
sleep(0)
state.append('finished')
g = spawn(test)
sleep(DELAY/2)
assert state == ['start'], state
kill(g)
# will not get there, unless switching is explicitly scheduled by kill
assert state == ['start', 'except'], state
sleep(DELAY)
assert state == ['start', 'except', 'finished'], state
if __name__=='__main__':
unittest.main()