Merge "Port common.utils to Python 3"

This commit is contained in:
Jenkins 2015-10-05 14:22:01 +00:00 committed by Gerrit Code Review
commit f4c5715ab2
3 changed files with 29 additions and 25 deletions

View File

@ -153,7 +153,7 @@ class CooperativeReader(object):
self.read = cooperative_read(fd)
else:
self.iterator = None
self.buffer = ''
self.buffer = b''
self.position = 0
def read(self, length=None):
@ -168,7 +168,7 @@ class CooperativeReader(object):
# if no length specified but some data exists in buffer,
# return that data and clear the buffer
result = self.buffer[self.position:]
self.buffer = ''
self.buffer = b''
self.position = 0
return str(result)
else:
@ -178,11 +178,11 @@ class CooperativeReader(object):
try:
if self.iterator is None:
self.iterator = self.__iter__()
return self.iterator.next()
return next(self.iterator)
except StopIteration:
return ''
finally:
self.buffer = ''
self.buffer = b''
self.position = 0
else:
result = bytearray()
@ -206,13 +206,13 @@ class CooperativeReader(object):
try:
if self.iterator is None:
self.iterator = self.__iter__()
self.buffer = self.iterator.next()
self.buffer = next(self.iterator)
self.position = 0
except StopIteration:
self.buffer = ''
self.buffer = b''
self.position = 0
return str(result)
return str(result)
return bytes(result)
return bytes(result)
def __iter__(self):
return cooperative_iter(self.fd.__iter__())
@ -313,7 +313,7 @@ def get_image_meta_from_headers(response):
raise exception.InvalidParameterValue(value=result[key],
param=key,
extra_msg=extra)
if result[key] < 0 and result[key] is not None:
if result[key] is not None and result[key] < 0:
extra = _('Cannot be a negative value.')
raise exception.InvalidParameterValue(value=result[key],
param=key,

View File

@ -55,14 +55,16 @@ class TestUtils(test_utils.BaseTestCase):
def test_cooperative_reader_of_iterator(self):
"""Ensure cooperative reader supports iterator backends too"""
reader = utils.CooperativeReader([l * 3 for l in 'abcdefgh'])
data = b'abcdefgh'
data_list = [data[i:i + 1] * 3 for i in range(len(data))]
reader = utils.CooperativeReader(data_list)
chunks = []
while True:
chunks.append(reader.read(3))
if chunks[-1] == '':
if chunks[-1] == b'':
break
meat = ''.join(chunks)
self.assertEqual('aaabbbcccdddeeefffggghhh', meat)
meat = b''.join(chunks)
self.assertEqual(b'aaabbbcccdddeeefffggghhh', meat)
def test_cooperative_reader_of_iterator_stop_iteration_err(self):
"""Ensure cooperative reader supports iterator backends too"""
@ -70,16 +72,17 @@ class TestUtils(test_utils.BaseTestCase):
chunks = []
while True:
chunks.append(reader.read(3))
if chunks[-1] == '':
if chunks[-1] == b'':
break
meat = ''.join(chunks)
self.assertEqual('', meat)
meat = b''.join(chunks)
self.assertEqual(b'', meat)
def _create_generator(self, chunk_size, max_iterations):
chars = 'abc'
chars = b'abc'
iteration = 0
while True:
chunk = chars[iteration % len(chars)] * chunk_size
index = iteration % len(chars)
chunk = chars[index:index + 1] * chunk_size
yield chunk
iteration += 1
if iteration >= max_iterations:
@ -88,19 +91,19 @@ class TestUtils(test_utils.BaseTestCase):
def _test_reader_chunked(self, chunk_size, read_size, max_iterations=5):
generator = self._create_generator(chunk_size, max_iterations)
reader = utils.CooperativeReader(generator)
result = ''
result = bytearray()
while True:
data = reader.read(read_size)
if len(data) == 0:
break
self.assertLessEqual(len(data), read_size)
result += data
expected = ('a' * chunk_size +
'b' * chunk_size +
'c' * chunk_size +
'a' * chunk_size +
'b' * chunk_size)
self.assertEqual(expected, result)
expected = (b'a' * chunk_size +
b'b' * chunk_size +
b'c' * chunk_size +
b'a' * chunk_size +
b'b' * chunk_size)
self.assertEqual(expected, bytes(result))
def test_cooperative_reader_preserves_size_chunk_less_then_read(self):
self._test_reader_chunked(43, 101)

View File

@ -25,6 +25,7 @@ commands =
glance.tests.unit.common.test_scripts \
glance.tests.unit.common.test_semver \
glance.tests.unit.common.test_swift_store_utils \
glance.tests.unit.common.test_utils \
glance.tests.unit.test_artifact_type_definition_framework \
glance.tests.unit.test_artifacts_plugin_loader \
glance.tests.unit.test_auth \