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):
|
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
|
self.maxsize = None
|
||||||
else:
|
else:
|
||||||
self.maxsize = maxsize
|
self.maxsize = maxsize
|
||||||
@@ -186,7 +186,7 @@ class LightQueue(object):
|
|||||||
"""Resizes the queue's maximum size.
|
"""Resizes the queue's maximum size.
|
||||||
|
|
||||||
If the size is increased, and there are putters waiting, they may be woken up."""
|
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
|
# Maybe wake some stuff up
|
||||||
self._schedule_unlock()
|
self._schedule_unlock()
|
||||||
self.maxsize = size
|
self.maxsize = size
|
||||||
@@ -210,7 +210,7 @@ class LightQueue(object):
|
|||||||
|
|
||||||
``Queue(None)`` is never full.
|
``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):
|
def put(self, item, block=True, timeout=None):
|
||||||
"""Put an item into the queue.
|
"""Put an item into the queue.
|
||||||
@@ -335,7 +335,7 @@ class LightQueue(object):
|
|||||||
putter.switch(putter)
|
putter.switch(putter)
|
||||||
else:
|
else:
|
||||||
self.putters.add(putter)
|
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 = self.putters.pop()
|
||||||
putter.switch(putter)
|
putter.switch(putter)
|
||||||
else:
|
else:
|
||||||
|
@@ -95,6 +95,21 @@ class TestQueue(LimitedTestCase):
|
|||||||
eventlet.sleep(0)
|
eventlet.sleep(0)
|
||||||
self.assertEquals(list(q.queue), range(5))
|
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):
|
def test_multiple_waiters(self):
|
||||||
# tests that multiple waiters get their results back
|
# tests that multiple waiters get their results back
|
||||||
q = eventlet.Queue()
|
q = eventlet.Queue()
|
||||||
|
Reference in New Issue
Block a user