Fix TestGreenThreadSafeIterator test
Change-Id: Ic121ae5c99b4e5c5e3d1efc432b55b762d50f3fb Closes-Bug: 1190244
This commit is contained in:
parent
6cdf784e2f
commit
a26b705d39
@ -2245,13 +2245,14 @@ class UnsafeXrange(object):
|
|||||||
self.current = 0
|
self.current = 0
|
||||||
self.concurrent_calls = 0
|
self.concurrent_calls = 0
|
||||||
self.upper_bound = upper_bound
|
self.upper_bound = upper_bound
|
||||||
|
self.concurrent_call = False
|
||||||
|
|
||||||
def __iter__(self):
|
def __iter__(self):
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def next(self):
|
def next(self):
|
||||||
if self.concurrent_calls > 0:
|
if self.concurrent_calls > 0:
|
||||||
raise ValueError("concurrent access is bad, mmmkay? (%r)")
|
self.concurrent_call = True
|
||||||
|
|
||||||
self.concurrent_calls += 1
|
self.concurrent_calls += 1
|
||||||
try:
|
try:
|
||||||
@ -2409,19 +2410,20 @@ class TestGreenthreadSafeIterator(unittest.TestCase):
|
|||||||
for _ in xrange(2):
|
for _ in xrange(2):
|
||||||
pile.spawn(self.increment, iterable)
|
pile.spawn(self.increment, iterable)
|
||||||
|
|
||||||
try:
|
sorted([resp for resp in pile])
|
||||||
sorted([resp for resp in pile])
|
self.assertTrue(
|
||||||
self.assertTrue(False, "test setup is insufficiently crazy")
|
iterable.concurrent_call, 'test setup is insufficiently crazy')
|
||||||
except ValueError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
def test_access_is_serialized(self):
|
def test_access_is_serialized(self):
|
||||||
pile = eventlet.GreenPile(2)
|
pile = eventlet.GreenPile(2)
|
||||||
iterable = utils.GreenthreadSafeIterator(UnsafeXrange(10))
|
unsafe_iterable = UnsafeXrange(10)
|
||||||
|
iterable = utils.GreenthreadSafeIterator(unsafe_iterable)
|
||||||
for _ in xrange(2):
|
for _ in xrange(2):
|
||||||
pile.spawn(self.increment, iterable)
|
pile.spawn(self.increment, iterable)
|
||||||
response = sorted(sum([resp for resp in pile], []))
|
response = sorted(sum([resp for resp in pile], []))
|
||||||
self.assertEquals(range(1, 11), response)
|
self.assertEquals(range(1, 11), response)
|
||||||
|
self.assertTrue(
|
||||||
|
not unsafe_iterable.concurrent_call, 'concurrent call occurred')
|
||||||
|
|
||||||
|
|
||||||
class TestStatsdLoggingDelegation(unittest.TestCase):
|
class TestStatsdLoggingDelegation(unittest.TestCase):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user