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:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user