Named tpool threads, fixed rare race condition where _reqq would be freed before the thread got to it, causing log spam. Consolidated all patcher/tpool tests in one place.

This commit is contained in:
Ryan Williams
2010-06-02 17:54:27 -07:00
parent 68eb7a8d9f
commit 88bf9d0240
2 changed files with 21 additions and 18 deletions

View File

@@ -68,7 +68,10 @@ SYS_EXCS = (KeyboardInterrupt, SystemExit)
def tworker():
global _reqq, _rspq
while(True):
msg = _reqq.get()
try:
msg = _reqq.get()
except AttributeError:
return # can't get anything off of a dud queue
if msg is None:
return
(e,meth,args,kwargs) = msg
@@ -249,7 +252,7 @@ def setup():
_reqq = Queue(maxsize=-1)
_rspq = Queue(maxsize=-1)
for i in range(0,_nthreads):
t = threading.Thread(target=tworker)
t = threading.Thread(target=tworker, name="tpool_thread_%s" % i)
t.setDaemon(True)
t.start()
_threads.add(t)

View File

@@ -126,22 +126,6 @@ print "newmod"
self.assertEqual(len(lines), 2, repr(output))
self.assert_(lines[0].startswith('newmod'), repr(output))
def test_tpool(self):
new_mod = """
import eventlet
from eventlet import patcher
patcher.monkey_patch()
from eventlet import tpool
print "newmod", tpool.execute(len, "hi")
print "newmod", tpool.execute(len, "hi2")
"""
self.write_to_tempfile("newmod", new_mod)
output, lines = self.launch_subprocess('newmod.py')
self.assertEqual(len(lines), 3, repr(output))
self.assert_(lines[0].startswith('newmod'), repr(output))
self.assert_('2' in lines[0], repr(output))
self.assert_('3' in lines[1], repr(output))
def test_typeerror(self):
new_mod = """
@@ -239,6 +223,22 @@ def test_monkey_patch_threading():
class Tpool(Patcher):
TEST_TIMEOUT=3
def test_simple(self):
new_mod = """
import eventlet
from eventlet import patcher
patcher.monkey_patch()
from eventlet import tpool
print "newmod", tpool.execute(len, "hi")
print "newmod", tpool.execute(len, "hi2")
"""
self.write_to_tempfile("newmod", new_mod)
output, lines = self.launch_subprocess('newmod.py')
self.assertEqual(len(lines), 3, output)
self.assert_(lines[0].startswith('newmod'), repr(output))
self.assert_('2' in lines[0], repr(output))
self.assert_('3' in lines[1], repr(output))
def test_unpatched_thread(self):
new_mod = """import eventlet
eventlet.monkey_patch(time=False, thread=False)