From 01903933dba6f5ae667487300b947e5c36f8b033 Mon Sep 17 00:00:00 2001 From: He Yongli Date: Mon, 17 Feb 2014 13:10:18 +0800 Subject: [PATCH] Use six.StringIO/BytesIO instead of StringIO.StringIO to keep Python 3.x compatibility, use six.StringIO/BytesIO to replace StringIO.StringIO StringIO works for unicode BytesIO works for bytes Change-Id: I93e043c633e1de9e4dedcb0a313032403b6a70fb Closes-Bug: #1280100 --- glance/tests/functional/store/__init__.py | 4 +-- glance/tests/functional/store/test_rbd.py | 4 +-- glance/tests/functional/store/test_swift.py | 10 +++---- glance/tests/unit/api/test_cmd.py | 5 ++-- glance/tests/unit/common/test_utils.py | 10 +++---- glance/tests/unit/test_filesystem_store.py | 26 ++++++++--------- glance/tests/unit/test_glance_replicator.py | 8 +++--- glance/tests/unit/test_gridfs_store.py | 5 ++-- glance/tests/unit/test_image_cache.py | 20 ++++++------- glance/tests/unit/test_rbd_store.py | 5 ++-- glance/tests/unit/test_s3_store.py | 14 +++++----- glance/tests/unit/test_sheepdog_store.py | 5 ++-- glance/tests/unit/test_swift_store.py | 28 +++++++++---------- glance/tests/unit/test_vmware_store.py | 4 +-- glance/tests/unit/v1/test_api.py | 10 +++---- .../tests/unit/v2/test_image_data_resource.py | 6 ++-- glance/tests/utils.py | 4 +-- 17 files changed, 83 insertions(+), 85 deletions(-) diff --git a/glance/tests/functional/store/__init__.py b/glance/tests/functional/store/__init__.py index ff89821bbb..fa23d06706 100644 --- a/glance/tests/functional/store/__init__.py +++ b/glance/tests/functional/store/__init__.py @@ -13,10 +13,10 @@ # License for the specific language governing permissions and limitations # under the License. -import StringIO import uuid from oslo.config import cfg +import six #NOTE(bcwaldon): importing this to get the default_store option import glance.api.v1.images @@ -76,7 +76,7 @@ class BaseTestCase(object): store = self.get_store() image_id = str(uuid.uuid4()) - image_data = StringIO.StringIO('XXX') + image_data = six.StringIO('XXX') image_checksum = 'bc9189406be84ec297464a514221406d' try: uri, add_size, add_checksum, _ = store.add(image_id, image_data, 3) diff --git a/glance/tests/functional/store/test_rbd.py b/glance/tests/functional/store/test_rbd.py index 15188c0d17..3c44fed7e4 100644 --- a/glance/tests/functional/store/test_rbd.py +++ b/glance/tests/functional/store/test_rbd.py @@ -22,10 +22,10 @@ RBD backend. This backend must be running Ceph Bobtail (0.56) or later. import ConfigParser import os -import StringIO import uuid import oslo.config.cfg +import six import testtools from glance.common import exception @@ -135,7 +135,7 @@ class TestRBDStore(store_tests.BaseTestCase, testtools.TestCase): image_id = unicode(str(uuid.uuid4())) image_size = 300 - image_data = StringIO.StringIO('X' * image_size) + image_data = six.StringIO('X' * image_size) image_checksum = '41757066eaff7c4c6c965556b4d3c6c5' uri, add_size, add_checksum = store.add(image_id, diff --git a/glance/tests/functional/store/test_swift.py b/glance/tests/functional/store/test_swift.py index 78c8bd43b0..57450c9867 100644 --- a/glance/tests/functional/store/test_swift.py +++ b/glance/tests/functional/store/test_swift.py @@ -26,10 +26,10 @@ import os import os.path import random import string -import StringIO import uuid import oslo.config.cfg +import six import six.moves.urllib.parse as urlparse import testtools @@ -194,7 +194,7 @@ class TestSwiftStore(store_tests.BaseTestCase, testtools.TestCase): store = self.get_store() image_id = str(uuid.uuid4()) image_size = 5242880 # 5 MB - image_data = StringIO.StringIO('X' * image_size) + image_data = six.StringIO('X' * image_size) image_checksum = 'eb7f8c3716b9f059cee7617a4ba9d0d3' uri, add_size, add_checksum, _ = store.add(image_id, image_data, @@ -276,7 +276,7 @@ class TestSwiftStore(store_tests.BaseTestCase, testtools.TestCase): non_image_obj) # Simulate exceeding 'image_size_cap' setting - image_data = StringIO.StringIO('X' * image_size) + image_data = six.StringIO('X' * image_size) image_data = common_utils.LimitingReader(image_data, image_size - 1) image_id = str(uuid.uuid4()) self.assertRaises(exception.ImageSizeLimitExceeded, @@ -455,7 +455,7 @@ class TestSwiftStore(store_tests.BaseTestCase, testtools.TestCase): store = self.get_store(context=context) image_id = str(uuid.uuid4()) - image_data = StringIO.StringIO('XXX') + image_data = six.StringIO('XXX') uri, _, _, _ = store.add(image_id, image_data, 3) location = glance.store.location.Location( @@ -512,7 +512,7 @@ class TestSwiftStore(store_tests.BaseTestCase, testtools.TestCase): store = self.get_store(context=context) image_id = str(uuid.uuid4()) - image_data = StringIO.StringIO('data') + image_data = six.StringIO('data') uri, _, _, _ = store.add(image_id, image_data, 4) location = glance.store.location.Location( diff --git a/glance/tests/unit/api/test_cmd.py b/glance/tests/unit/api/test_cmd.py index 488e482229..510746adb8 100644 --- a/glance/tests/unit/api/test_cmd.py +++ b/glance/tests/unit/api/test_cmd.py @@ -11,9 +11,10 @@ # under the License. import mock -import StringIO import sys +import six + import glance.cmd.api import glance.cmd.cache_cleaner import glance.cmd.cache_pruner @@ -41,7 +42,7 @@ class TestGlanceApiCmd(test_utils.BaseTestCase): super(TestGlanceApiCmd, self).setUp() self.__argv_backup = sys.argv sys.argv = ['glance-api'] - self.stderr = StringIO.StringIO() + self.stderr = six.StringIO() sys.stderr = self.stderr self.stubs.Set(glance.common.config, 'load_paste_app', diff --git a/glance/tests/unit/common/test_utils.py b/glance/tests/unit/common/test_utils.py index 18ea5c96c0..ed2a201a6b 100644 --- a/glance/tests/unit/common/test_utils.py +++ b/glance/tests/unit/common/test_utils.py @@ -14,9 +14,9 @@ # under the License. import os -import StringIO import tempfile +import six import webob from glance.common import exception @@ -77,14 +77,14 @@ class TestUtils(test_utils.BaseTestCase): """Ensure limiting reader class accesses all bytes of file""" BYTES = 1024 bytes_read = 0 - data = StringIO.StringIO("*" * BYTES) + data = six.StringIO("*" * BYTES) for chunk in utils.LimitingReader(data, BYTES): bytes_read += len(chunk) self.assertEqual(bytes_read, BYTES) bytes_read = 0 - data = StringIO.StringIO("*" * BYTES) + data = six.StringIO("*" * BYTES) reader = utils.LimitingReader(data, BYTES) byte = reader.read(1) while len(byte) != 0: @@ -99,7 +99,7 @@ class TestUtils(test_utils.BaseTestCase): def _consume_all_iter(): bytes_read = 0 - data = StringIO.StringIO("*" * BYTES) + data = six.StringIO("*" * BYTES) for chunk in utils.LimitingReader(data, BYTES - 1): bytes_read += len(chunk) @@ -107,7 +107,7 @@ class TestUtils(test_utils.BaseTestCase): def _consume_all_read(): bytes_read = 0 - data = StringIO.StringIO("*" * BYTES) + data = six.StringIO("*" * BYTES) reader = utils.LimitingReader(data, BYTES - 1) byte = reader.read(1) while len(byte) != 0: diff --git a/glance/tests/unit/test_filesystem_store.py b/glance/tests/unit/test_filesystem_store.py index 034632a4ce..6f2b9cc78c 100644 --- a/glance/tests/unit/test_filesystem_store.py +++ b/glance/tests/unit/test_filesystem_store.py @@ -20,12 +20,12 @@ import errno import hashlib import json import os -import StringIO import uuid import fixtures import mox from oslo.config import cfg +import six from glance.common import exception from glance.openstack.common import units @@ -157,7 +157,7 @@ class TestStore(base.IsolatedUnitTest): # First add an image... image_id = str(uuid.uuid4()) file_contents = "chunk00000remainder" - image_file = StringIO.StringIO(file_contents) + image_file = six.StringIO(file_contents) location, size, checksum, _ = self.store.add(image_id, image_file, @@ -198,7 +198,7 @@ class TestStore(base.IsolatedUnitTest): expected_checksum = hashlib.md5(expected_file_contents).hexdigest() expected_location = "file://%s/%s" % (self.test_dir, expected_image_id) - image_file = StringIO.StringIO(expected_file_contents) + image_file = six.StringIO(expected_file_contents) location, size, checksum, _ = self.store.add(expected_image_id, image_file, @@ -239,7 +239,7 @@ class TestStore(base.IsolatedUnitTest): expected_checksum = hashlib.md5(expected_file_contents).hexdigest() expected_location = "file://%s/%s" % (store_map[1], expected_image_id) - image_file = StringIO.StringIO(expected_file_contents) + image_file = six.StringIO(expected_file_contents) location, size, checksum, _ = self.store.add(expected_image_id, image_file, @@ -283,7 +283,7 @@ class TestStore(base.IsolatedUnitTest): expected_image_id = str(uuid.uuid4()) expected_file_size = 5 * units.Ki # 5K expected_file_contents = "*" * expected_file_size - image_file = StringIO.StringIO(expected_file_contents) + image_file = six.StringIO(expected_file_contents) self.assertRaises(exception.StorageFull, self.store.add, expected_image_id, image_file, expected_file_size) @@ -299,7 +299,7 @@ class TestStore(base.IsolatedUnitTest): json.dump(in_metadata, fptr) expected_file_size = 10 expected_file_contents = "*" * expected_file_size - image_file = StringIO.StringIO(expected_file_contents) + image_file = six.StringIO(expected_file_contents) location, size, checksum, metadata = self.store.add(expected_image_id, image_file, @@ -318,7 +318,7 @@ class TestStore(base.IsolatedUnitTest): json.dump(in_metadata, fptr) expected_file_size = 10 expected_file_contents = "*" * expected_file_size - image_file = StringIO.StringIO(expected_file_contents) + image_file = six.StringIO(expected_file_contents) location, size, checksum, metadata = self.store.add(expected_image_id, image_file, @@ -334,7 +334,7 @@ class TestStore(base.IsolatedUnitTest): self.config(filesystem_store_metadata_file=jsonfilename) expected_file_size = 10 expected_file_contents = "*" * expected_file_size - image_file = StringIO.StringIO(expected_file_contents) + image_file = six.StringIO(expected_file_contents) location, size, checksum, metadata = self.store.add(expected_image_id, image_file, @@ -351,12 +351,12 @@ class TestStore(base.IsolatedUnitTest): image_id = str(uuid.uuid4()) file_size = 5 * units.Ki # 5K file_contents = "*" * file_size - image_file = StringIO.StringIO(file_contents) + image_file = six.StringIO(file_contents) location, size, checksum, _ = self.store.add(image_id, image_file, file_size) - image_file = StringIO.StringIO("nevergonnamakeit") + image_file = six.StringIO("nevergonnamakeit") self.assertRaises(exception.Duplicate, self.store.add, image_id, image_file, 0) @@ -367,7 +367,7 @@ class TestStore(base.IsolatedUnitTest): file_size = 5 * units.Ki # 5K file_contents = "*" * file_size path = os.path.join(self.test_dir, image_id) - image_file = StringIO.StringIO(file_contents) + image_file = six.StringIO(file_contents) m = mox.Mox() m.StubOutWithMock(__builtin__, 'open') @@ -424,7 +424,7 @@ class TestStore(base.IsolatedUnitTest): file_size = 5 * units.Ki # 5K file_contents = "*" * file_size path = os.path.join(self.test_dir, image_id) - image_file = StringIO.StringIO(file_contents) + image_file = six.StringIO(file_contents) def fake_Error(size): raise AttributeError() @@ -444,7 +444,7 @@ class TestStore(base.IsolatedUnitTest): image_id = str(uuid.uuid4()) file_size = 5 * units.Ki # 5K file_contents = "*" * file_size - image_file = StringIO.StringIO(file_contents) + image_file = six.StringIO(file_contents) location, size, checksum, _ = self.store.add(image_id, image_file, diff --git a/glance/tests/unit/test_glance_replicator.py b/glance/tests/unit/test_glance_replicator.py index 0429dc3907..4583873fed 100644 --- a/glance/tests/unit/test_glance_replicator.py +++ b/glance/tests/unit/test_glance_replicator.py @@ -14,12 +14,12 @@ import copy import os -import StringIO import sys import UserDict import uuid import fixtures +import six from glance.cmd import replicator as glance_replicator from glance.openstack.common import jsonutils @@ -106,7 +106,7 @@ class FakeHTTPConnection(object): def getresponse(self): class FakeResponse(object): def __init__(self, (code, body, headers)): - self.body = StringIO.StringIO(body) + self.body = six.StringIO(body) self.headers = headers self.status = code @@ -241,7 +241,7 @@ class ImageServiceTestCase(test_utils.BaseTestCase): class FakeHttpResponse(object): def __init__(self, headers, data): self.headers = headers - self.data = StringIO.StringIO(data) + self.data = six.StringIO(data) def getheaders(self): return self.headers @@ -339,7 +339,7 @@ class ReplicationCommandsTestCase(test_utils.BaseTestCase): stdout = sys.stdout orig_img_service = glance_replicator.get_image_service - sys.stdout = StringIO.StringIO() + sys.stdout = six.StringIO() try: glance_replicator.get_image_service = get_image_service glance_replicator.replication_size(options, args) diff --git a/glance/tests/unit/test_gridfs_store.py b/glance/tests/unit/test_gridfs_store.py index 9272e408d1..843466d9ee 100644 --- a/glance/tests/unit/test_gridfs_store.py +++ b/glance/tests/unit/test_gridfs_store.py @@ -13,8 +13,7 @@ # License for the specific language governing permissions and limitations # under the License. -import StringIO - +import six import stubout from glance.common import exception @@ -91,7 +90,7 @@ class TestStore(base.StoreClearingUnitTest): self.assertRaises(exception.ImageSizeLimitExceeded, self.store.add, 'fake_image_id', - utils.LimitingReader(StringIO.StringIO('xx'), 1), + utils.LimitingReader(six.StringIO('xx'), 1), 2) self.assertEqual(self.store.fs.called_commands, ['exists', 'put', 'delete']) diff --git a/glance/tests/unit/test_image_cache.py b/glance/tests/unit/test_image_cache.py index d3a2259795..176569553f 100644 --- a/glance/tests/unit/test_image_cache.py +++ b/glance/tests/unit/test_image_cache.py @@ -17,11 +17,11 @@ from contextlib import contextmanager import datetime import hashlib import os -import StringIO import tempfile import time import fixtures +import six from six.moves import xrange import stubout @@ -43,7 +43,7 @@ FIXTURE_DATA = '*' * FIXTURE_LENGTH class ImageCacheTestCase(object): def _setup_fixture_file(self): - FIXTURE_FILE = StringIO.StringIO(FIXTURE_DATA) + FIXTURE_FILE = six.StringIO(FIXTURE_DATA) self.assertFalse(self.cache.is_cached(1)) @@ -66,7 +66,7 @@ class ImageCacheTestCase(object): """ self._setup_fixture_file() - buff = StringIO.StringIO() + buff = six.StringIO() with self.cache.open_for_read(1) as cache_file: for chunk in cache_file: buff.write(chunk) @@ -80,7 +80,7 @@ class ImageCacheTestCase(object): """ self._setup_fixture_file() - buff = StringIO.StringIO() + buff = six.StringIO() with self.cache.open_for_read(1) as cache_file: for chunk in cache_file: buff.write(chunk) @@ -114,7 +114,7 @@ class ImageCacheTestCase(object): self.assertFalse(self.cache.is_cached(image_id)) for image_id in (1, 2): - FIXTURE_FILE = StringIO.StringIO(FIXTURE_DATA) + FIXTURE_FILE = six.StringIO(FIXTURE_DATA) self.assertTrue(self.cache.cache_image_file(image_id, FIXTURE_FILE)) @@ -183,7 +183,7 @@ class ImageCacheTestCase(object): # pruning, and the images that are least recently accessed # should be the ones pruned... for x in xrange(10): - FIXTURE_FILE = StringIO.StringIO(FIXTURE_DATA) + FIXTURE_FILE = six.StringIO(FIXTURE_DATA) self.assertTrue(self.cache.cache_image_file(x, FIXTURE_FILE)) @@ -191,7 +191,7 @@ class ImageCacheTestCase(object): # OK, hit the images that are now cached... for x in xrange(10): - buff = StringIO.StringIO() + buff = six.StringIO() with self.cache.open_for_read(x) as cache_file: for chunk in cache_file: buff.write(chunk) @@ -216,13 +216,13 @@ class ImageCacheTestCase(object): """ self.assertEqual(0, self.cache.get_cache_size()) - FIXTURE_FILE = StringIO.StringIO(FIXTURE_DATA) + FIXTURE_FILE = six.StringIO(FIXTURE_DATA) self.assertTrue(self.cache.cache_image_file('xxx', FIXTURE_FILE)) self.assertEqual(1024, self.cache.get_cache_size()) # OK, hit the image that is now cached... - buff = StringIO.StringIO() + buff = six.StringIO() with self.cache.open_for_read('xxx') as cache_file: for chunk in cache_file: buff.write(chunk) @@ -242,7 +242,7 @@ class ImageCacheTestCase(object): self.assertFalse(self.cache.is_cached(1)) self.assertFalse(self.cache.is_queued(1)) - FIXTURE_FILE = StringIO.StringIO(FIXTURE_DATA) + FIXTURE_FILE = six.StringIO(FIXTURE_DATA) self.assertTrue(self.cache.queue_image(1)) diff --git a/glance/tests/unit/test_rbd_store.py b/glance/tests/unit/test_rbd_store.py index 195ba746ed..f21cba5c32 100644 --- a/glance/tests/unit/test_rbd_store.py +++ b/glance/tests/unit/test_rbd_store.py @@ -13,9 +13,8 @@ # License for the specific language governing permissions and limitations # under the License. -import StringIO - import mock +import six from glance.common import exception from glance.common import utils @@ -43,7 +42,7 @@ class TestStore(base.StoreClearingUnitTest): self.location = StoreLocation(self.store_specs) # Provide enough data to get more than one chunk iteration. self.data_len = 3 * units.Ki - self.data_iter = StringIO.StringIO('*' * self.data_len) + self.data_iter = six.StringIO('*' * self.data_len) def test_add_w_image_size_zero(self): """Assert that correct size is returned even though 0 was provided.""" diff --git a/glance/tests/unit/test_s3_store.py b/glance/tests/unit/test_s3_store.py index 1b29c0a2dc..7584296c2b 100644 --- a/glance/tests/unit/test_s3_store.py +++ b/glance/tests/unit/test_s3_store.py @@ -16,10 +16,10 @@ """Tests the S3 backend store""" import hashlib -import StringIO import uuid import boto.s3.connection +import six import stubout from glance.common import exception @@ -80,7 +80,7 @@ def stub_out_s3(stubs): return checksum_hex, None def set_contents_from_file(self, fp, replace=False, **kwargs): - self.data = StringIO.StringIO() + self.data = six.StringIO() for bytes in fp: self.data.write(bytes) self.size = self.data.len @@ -122,7 +122,7 @@ def stub_out_s3(stubs): fixture_buckets = {'glance': FakeBucket('glance')} b = fixture_buckets['glance'] k = b.new_key(FAKE_UUID) - k.set_contents_from_file(StringIO.StringIO("*" * FIVE_KB)) + k.set_contents_from_file(six.StringIO("*" * FIVE_KB)) def fake_connection_constructor(self, *args, **kwargs): host = kwargs.get('host') @@ -237,7 +237,7 @@ class TestStore(base.StoreClearingUnitTest): S3_CONF['s3_store_host'], S3_CONF['s3_store_bucket'], expected_image_id) - image_s3 = StringIO.StringIO(expected_s3_contents) + image_s3 = six.StringIO(expected_s3_contents) location, size, checksum, _ = self.store.add(expected_image_id, image_s3, @@ -249,7 +249,7 @@ class TestStore(base.StoreClearingUnitTest): loc = get_location_from_uri(expected_location) (new_image_s3, new_image_size) = self.store.get(loc) - new_image_contents = StringIO.StringIO() + new_image_contents = six.StringIO() for chunk in new_image_s3: new_image_contents.write(chunk) new_image_s3_size = new_image_contents.len @@ -285,7 +285,7 @@ class TestStore(base.StoreClearingUnitTest): new_conf['s3_store_host'], new_conf['s3_store_bucket'], expected_image_id) - image_s3 = StringIO.StringIO(expected_s3_contents) + image_s3 = six.StringIO(expected_s3_contents) self.config(**new_conf) self.store = Store() @@ -310,7 +310,7 @@ class TestStore(base.StoreClearingUnitTest): Tests that adding an image with an existing identifier raises an appropriate exception """ - image_s3 = StringIO.StringIO("nevergonnamakeit") + image_s3 = six.StringIO("nevergonnamakeit") self.assertRaises(exception.Duplicate, self.store.add, FAKE_UUID, image_s3, 0) diff --git a/glance/tests/unit/test_sheepdog_store.py b/glance/tests/unit/test_sheepdog_store.py index 8eef86b38e..022334971e 100644 --- a/glance/tests/unit/test_sheepdog_store.py +++ b/glance/tests/unit/test_sheepdog_store.py @@ -13,8 +13,7 @@ # License for the specific language governing permissions and limitations # under the License. -import StringIO - +import six import stubout from glance.common import exception @@ -55,6 +54,6 @@ class TestStore(base.StoreClearingUnitTest): self.assertRaises(exception.ImageSizeLimitExceeded, self.store.add, 'fake_image_id', - utils.LimitingReader(StringIO.StringIO('xx'), 1), + utils.LimitingReader(six.StringIO('xx'), 1), 2) self.assertEqual(called_commands, ['list -r', 'create', 'delete']) diff --git a/glance/tests/unit/test_swift_store.py b/glance/tests/unit/test_swift_store.py index e9fa0a145d..0e7bda9eff 100644 --- a/glance/tests/unit/test_swift_store.py +++ b/glance/tests/unit/test_swift_store.py @@ -18,11 +18,11 @@ import hashlib import httplib import mock -import StringIO import tempfile import uuid from oslo.config import cfg +import six import six.moves.urllib.parse as urlparse import stubout import swiftclient @@ -69,7 +69,7 @@ def stub_out_swiftclient(stubs, swift_store_auth_version): } } fixture_objects = {'glance/%s' % FAKE_UUID: - StringIO.StringIO("*" * FIVE_KB)} + six.StringIO("*" * FIVE_KB)} def fake_head_container(url, token, container, **kwargs): if container not in fixture_containers: @@ -99,7 +99,7 @@ def stub_out_swiftclient(stubs, swift_store_auth_version): 'etag': etag} return etag if hasattr(contents, 'read'): - fixture_object = StringIO.StringIO() + fixture_object = six.StringIO() chunk = contents.read(CHUNKSIZE) checksum = hashlib.md5() while chunk: @@ -108,7 +108,7 @@ def stub_out_swiftclient(stubs, swift_store_auth_version): chunk = contents.read(CHUNKSIZE) etag = checksum.hexdigest() else: - fixture_object = StringIO.StringIO(contents) + fixture_object = six.StringIO(contents) etag = hashlib.md5(fixture_object.getvalue()).hexdigest() read_len = fixture_object.len if read_len > MAX_SWIFT_OBJECT_SIZE: @@ -149,7 +149,7 @@ def stub_out_swiftclient(stubs, swift_store_auth_version): chunk_keys = sorted([k for k in fixture_headers.keys() if k.startswith(fixture_key) and k != fixture_key]) - result = StringIO.StringIO() + result = six.StringIO() for key in chunk_keys: result.write(fixture_objects[key].getvalue()) else: @@ -157,7 +157,7 @@ def stub_out_swiftclient(stubs, swift_store_auth_version): if byte_range is not None: start = int(byte_range.split('=')[1].strip('-')) - result = StringIO.StringIO(result.getvalue()[start:]) + result = six.StringIO(result.getvalue()[start:]) fixture_headers[fixture_key]['content-length'] = len( result.getvalue()) @@ -321,7 +321,7 @@ class SwiftTests(object): loc = 'swift+https://%s:key@localhost:8080/glance/%s' expected_location = loc % (self.swift_store_user, expected_image_id) - image_swift = StringIO.StringIO(expected_swift_contents) + image_swift = six.StringIO(expected_swift_contents) global SWIFT_PUT_OBJECT_CALLS SWIFT_PUT_OBJECT_CALLS = 0 @@ -378,7 +378,7 @@ class SwiftTests(object): expected_checksum = \ hashlib.md5(expected_swift_contents).hexdigest() - image_swift = StringIO.StringIO(expected_swift_contents) + image_swift = six.StringIO(expected_swift_contents) global SWIFT_PUT_OBJECT_CALLS SWIFT_PUT_OBJECT_CALLS = 0 @@ -410,7 +410,7 @@ class SwiftTests(object): swift_store_container='noexist') self.store = Store() - image_swift = StringIO.StringIO("nevergonnamakeit") + image_swift = six.StringIO("nevergonnamakeit") global SWIFT_PUT_OBJECT_CALLS SWIFT_PUT_OBJECT_CALLS = 0 @@ -440,7 +440,7 @@ class SwiftTests(object): loc = 'swift+https://%s:key@localhost:8080/noexist/%s' expected_location = loc % (self.swift_store_user, expected_image_id) - image_swift = StringIO.StringIO(expected_swift_contents) + image_swift = six.StringIO(expected_swift_contents) global SWIFT_PUT_OBJECT_CALLS SWIFT_PUT_OBJECT_CALLS = 0 @@ -479,7 +479,7 @@ class SwiftTests(object): loc = 'swift+https://%s:key@localhost:8080/glance/%s' expected_location = loc % (self.swift_store_user, expected_image_id) - image_swift = StringIO.StringIO(expected_swift_contents) + image_swift = six.StringIO(expected_swift_contents) global SWIFT_PUT_OBJECT_CALLS SWIFT_PUT_OBJECT_CALLS = 0 @@ -532,7 +532,7 @@ class SwiftTests(object): loc = 'swift+https://%s:key@localhost:8080/glance/%s' expected_location = loc % (self.swift_store_user, expected_image_id) - image_swift = StringIO.StringIO(expected_swift_contents) + image_swift = six.StringIO(expected_swift_contents) global SWIFT_PUT_OBJECT_CALLS SWIFT_PUT_OBJECT_CALLS = 0 @@ -578,7 +578,7 @@ class SwiftTests(object): Tests that adding an image with an existing identifier raises an appropriate exception """ - image_swift = StringIO.StringIO("nevergonnamakeit") + image_swift = six.StringIO("nevergonnamakeit") self.assertRaises(exception.Duplicate, self.store.add, FAKE_UUID, image_swift, 0) @@ -597,7 +597,7 @@ class SwiftTests(object): except Exception: pass - image_swift = StringIO.StringIO(swift_contents) + image_swift = six.StringIO(swift_contents) connection.put_object.side_effect = exception.ClientConnectionError self.store._delete_stale_chunks = fake_delete_chunk diff --git a/glance/tests/unit/test_vmware_store.py b/glance/tests/unit/test_vmware_store.py index e800486e06..07c87c7df1 100644 --- a/glance/tests/unit/test_vmware_store.py +++ b/glance/tests/unit/test_vmware_store.py @@ -16,10 +16,10 @@ """Tests the VMware Datastore backend store""" import hashlib -import StringIO import uuid import mock +import six from glance.common import exception from glance.openstack.common import units @@ -167,7 +167,7 @@ class TestStore(base.StoreClearingUnitTest): expected_image_id, VMWARE_DATASTORE_CONF['vmware_datacenter_path'], VMWARE_DATASTORE_CONF['vmware_datastore_name']) - image = StringIO.StringIO(expected_contents) + image = six.StringIO(expected_contents) with mock.patch('httplib.HTTPConnection') as HttpConn: HttpConn.return_value = FakeHTTPConnection() location, size, checksum, _ = self.store.add(expected_image_id, diff --git a/glance/tests/unit/v1/test_api.py b/glance/tests/unit/v1/test_api.py index 0182c25a01..98325239c6 100644 --- a/glance/tests/unit/v1/test_api.py +++ b/glance/tests/unit/v1/test_api.py @@ -18,12 +18,12 @@ import copy import datetime import hashlib -import StringIO import uuid import mock from oslo.config import cfg import routes +import six import webob import glance.api @@ -532,7 +532,7 @@ class TestGlanceAPI(base.IsolatedUnitTest): req = webob.Request.blank("/images") req.method = 'POST' - req.body_file = StringIO.StringIO('X' * (CONF.image_size_cap + 1)) + req.body_file = six.StringIO('X' * (CONF.image_size_cap + 1)) for k, v in fixture_headers.iteritems(): req.headers[k] = v @@ -979,7 +979,7 @@ class TestGlanceAPI(base.IsolatedUnitTest): req = webob.Request.blank("/images") req.method = 'POST' - req.body_file = StringIO.StringIO('X' * (CONF.image_size_cap)) + req.body_file = six.StringIO('X' * (CONF.image_size_cap)) for k, v in fixture_headers.iteritems(): req.headers[k] = v @@ -1034,7 +1034,7 @@ class TestGlanceAPI(base.IsolatedUnitTest): req.headers['transfer-encoding'] = 'chunked' req.headers['x-image-disk-format'] = 'vhd' req.headers['x-image-container-format'] = 'ovf' - req.body_file = StringIO.StringIO('X' * (CONF.image_size_cap)) + req.body_file = six.StringIO('X' * (CONF.image_size_cap)) res = req.get_response(self.api) self.assertEqual(res.status_int, 403) @@ -1655,7 +1655,7 @@ class TestGlanceAPI(base.IsolatedUnitTest): req = webob.Request.blank("/images/%s" % image_id) req.method = 'PUT' - req.body_file = StringIO.StringIO('X' * (CONF.image_size_cap + 1)) + req.body_file = six.StringIO('X' * (CONF.image_size_cap + 1)) for k, v in fixture_headers.iteritems(): req.headers[k] = v diff --git a/glance/tests/unit/v2/test_image_data_resource.py b/glance/tests/unit/v2/test_image_data_resource.py index d0b96d6155..0dfb55ecce 100644 --- a/glance/tests/unit/v2/test_image_data_resource.py +++ b/glance/tests/unit/v2/test_image_data_resource.py @@ -14,9 +14,9 @@ # under the License. import mock -import StringIO import uuid +import six import webob import glance.api.v2.image_data @@ -327,7 +327,7 @@ class TestImageDataDeserializer(test_utils.BaseTestCase): request.headers['Content-Type'] = 'application/octet-stream' # If we use body_file, webob assumes we want to do a chunked upload, # ignoring the Content-Length header - request.body_file = StringIO.StringIO('YYY') + request.body_file = six.StringIO('YYY') output = self.deserializer.upload(request) data = output.pop('data') self.assertEqual(data.read(), 'YYY') @@ -337,7 +337,7 @@ class TestImageDataDeserializer(test_utils.BaseTestCase): def test_upload_chunked_with_content_length(self): request = unit_test_utils.get_fake_request() request.headers['Content-Type'] = 'application/octet-stream' - request.body_file = StringIO.StringIO('YYY') + request.body_file = six.StringIO('YYY') # The deserializer shouldn't care if the Content-Length is # set when the user is attempting to send chunked data. request.headers['Content-Length'] = 3 diff --git a/glance/tests/utils.py b/glance/tests/utils.py index cf3bfdbcaf..2dc58acb90 100644 --- a/glance/tests/utils.py +++ b/glance/tests/utils.py @@ -21,12 +21,12 @@ import os import shlex import shutil import socket -import StringIO import subprocess import uuid import fixtures from oslo.config import cfg +import six import stubout import testtools import webob @@ -508,7 +508,7 @@ class FakeAuthMiddleware(wsgi.Middleware): class FakeHTTPResponse(object): def __init__(self, status=200, headers=None, data=None, *args, **kwargs): data = data or 'I am a teapot, short and stout\n' - self.data = StringIO.StringIO(data) + self.data = six.StringIO(data) self.read = self.data.read self.status = status self.headers = headers or {'content-length': len(data)}