Fixed bug in tpool.killall, also another slight bug in the pollhub, and added a new test verification method which will work on every hub but pyevent.
This commit is contained in:
@@ -26,9 +26,14 @@ class FdListener(object):
|
||||
class DebugListener(FdListener):
|
||||
def __init__(self, evtype, fileno, cb):
|
||||
self.where_called = traceback.format_stack()
|
||||
self.greenlet = greenlet.getcurrent()
|
||||
super(DebugListener, self).__init__(evtype, fileno, cb)
|
||||
def __repr__(self):
|
||||
return "DebugListener(%r, %r, %r)\n%sEndDebugFdListener" % (self.evtype, self.fileno, self.cb, ''.join(self.where_called))
|
||||
return "DebugListener(%r, %r, %r, %r)\n%sEndDebugFdListener" % (self.evtype,
|
||||
self.fileno,
|
||||
self.cb,
|
||||
self.greenlet,
|
||||
''.join(self.where_called))
|
||||
__str__ = __repr__
|
||||
|
||||
|
||||
|
@@ -23,8 +23,8 @@ class Hub(BaseHub):
|
||||
self.modify = self.poll.register
|
||||
|
||||
def add(self, evtype, fileno, cb):
|
||||
oldlisteners = bool(self.listeners[evtype].get(fileno))
|
||||
|
||||
oldlisteners = bool(self.listeners[READ].get(fileno) or
|
||||
self.listeners[WRITE].get(fileno))
|
||||
listener = super(Hub, self).add(evtype, fileno, cb)
|
||||
if not oldlisteners:
|
||||
# Means we've added a new listener
|
||||
|
@@ -19,7 +19,6 @@ import sys
|
||||
|
||||
from Queue import Empty, Queue
|
||||
|
||||
from eventlet import api
|
||||
from eventlet import event
|
||||
from eventlet import greenio
|
||||
from eventlet import greenthread
|
||||
@@ -234,8 +233,8 @@ def killall():
|
||||
for thr in _threads.values():
|
||||
thr.join()
|
||||
_threads.clear()
|
||||
if _coro:
|
||||
api.kill(_coro)
|
||||
if _coro is not None:
|
||||
greenthread.kill(_coro)
|
||||
_rfile.close()
|
||||
_wfile.close()
|
||||
_rfile = None
|
||||
|
@@ -106,6 +106,15 @@ class LimitedTestCase(unittest.TestCase):
|
||||
self.timer.cancel()
|
||||
|
||||
|
||||
def verify_hub_empty():
|
||||
from eventlet import hubs
|
||||
hub = hubs.get_hub()
|
||||
num_readers = len(hub.get_readers())
|
||||
num_writers = len(hub.get_writers())
|
||||
num_timers = len(hub.get_timers_count())
|
||||
assert num_readers == 0 and num_writers == 0, "Readers: %s Writers: %s" % (num_readers, num_writers)
|
||||
|
||||
|
||||
def find_command(command):
|
||||
for dir in os.getenv('PATH', '/usr/bin:/usr/sbin').split(os.pathsep):
|
||||
p = os.path.join(dir, command)
|
||||
|
Reference in New Issue
Block a user