py3k - None is not comparable in 3.x, also queue.resize(None) was not waking queued putters
This commit is contained in:
@@ -140,7 +140,7 @@ class LightQueue(object):
|
||||
"""
|
||||
|
||||
def __init__(self, maxsize=None):
|
||||
if maxsize < 0:
|
||||
if maxsize is None or maxsize < 0: #None is not comparable in 3.x
|
||||
self.maxsize = None
|
||||
else:
|
||||
self.maxsize = maxsize
|
||||
@@ -186,7 +186,7 @@ class LightQueue(object):
|
||||
"""Resizes the queue's maximum size.
|
||||
|
||||
If the size is increased, and there are putters waiting, they may be woken up."""
|
||||
if size > self.maxsize:
|
||||
if self.maxsize is not None and (size is None or size > self.maxsize): # None is not comparable in 3.x
|
||||
# Maybe wake some stuff up
|
||||
self._schedule_unlock()
|
||||
self.maxsize = size
|
||||
@@ -210,7 +210,7 @@ class LightQueue(object):
|
||||
|
||||
``Queue(None)`` is never full.
|
||||
"""
|
||||
return self.qsize() >= self.maxsize
|
||||
return self.maxsize is not None and self.qsize() >= self.maxsize # None is not comparable in 3.x
|
||||
|
||||
def put(self, item, block=True, timeout=None):
|
||||
"""Put an item into the queue.
|
||||
@@ -335,7 +335,7 @@ class LightQueue(object):
|
||||
putter.switch(putter)
|
||||
else:
|
||||
self.putters.add(putter)
|
||||
elif self.putters and (self.getters or self.qsize() < self.maxsize):
|
||||
elif self.putters and (self.getters or self.maxsize is None or self.qsize() < self.maxsize):
|
||||
putter = self.putters.pop()
|
||||
putter.switch(putter)
|
||||
else:
|
||||
|
@@ -95,6 +95,21 @@ class TestQueue(LimitedTestCase):
|
||||
eventlet.sleep(0)
|
||||
self.assertEquals(list(q.queue), range(5))
|
||||
|
||||
def test_resize_to_Unlimited(self):
|
||||
q = eventlet.Queue(0)
|
||||
def sender(evt, q):
|
||||
q.put('hi')
|
||||
evt.send('done')
|
||||
|
||||
evt = event.Event()
|
||||
gt = eventlet.spawn(sender, evt, q)
|
||||
eventlet.sleep()
|
||||
self.assertFalse(evt.ready())
|
||||
q.resize(None)
|
||||
eventlet.sleep()
|
||||
self.assertTrue(evt.ready())
|
||||
gt.wait()
|
||||
|
||||
def test_multiple_waiters(self):
|
||||
# tests that multiple waiters get their results back
|
||||
q = eventlet.Queue()
|
||||
|
Reference in New Issue
Block a user