fix some format issure

fir some format according to pep8

Change-Id: Iec8f67ea2166c955732bd598661140d4cfce6d40
This commit is contained in:
dk647 2012-09-03 23:30:52 +08:00
parent 2b23eb3e41
commit 4d6ae96d92

View File

@ -38,6 +38,7 @@ def chunks(s, length=3):
yield s[i:j] yield s[i:j]
i, j = j, j + length i, j = j, j + length
def timeout(seconds, method, *args, **kwargs): def timeout(seconds, method, *args, **kwargs):
class TimeoutThread(threading.Thread): class TimeoutThread(threading.Thread):
def __init__(self, method, *args, **kwargs): def __init__(self, method, *args, **kwargs):
@ -66,6 +67,7 @@ def timeout(seconds, method, *args, **kwargs):
return True return True
return False return False
class Utils: class Utils:
@classmethod @classmethod
def create_ascii_name(cls, length=None): def create_ascii_name(cls, length=None):
@ -83,11 +85,12 @@ class Utils:
u'\u1802\u0901\uF111\uD20F\uB30D\u940B\u850A\u5607'\ u'\u1802\u0901\uF111\uD20F\uB30D\u940B\u850A\u5607'\
u'\u3705\u1803\u0902\uF112\uD210\uB30E\u940C\u850B'\ u'\u3705\u1803\u0902\uF112\uD210\uB30E\u940C\u850B'\
u'\u5608\u3706\u1804\u0903\u03A9\u2603' u'\u5608\u3706\u1804\u0903\u03A9\u2603'
return ''.join([random.choice(utf8_chars) for x in \ return ''.join([random.choice(utf8_chars)
xrange(length)]).encode('utf-8') for x in xrange(length)]).encode('utf-8')
create_name = create_ascii_name create_name = create_ascii_name
class Base(unittest.TestCase): class Base(unittest.TestCase):
def setUp(self): def setUp(self):
cls = type(self) cls = type(self)
@ -107,6 +110,7 @@ class Base(unittest.TestCase):
'Status returned: %d Expected: %s' % 'Status returned: %d Expected: %s' %
(self.env.conn.response.status, status_or_statuses)) (self.env.conn.response.status, status_or_statuses))
class Base2(object): class Base2(object):
def setUp(self): def setUp(self):
Utils.create_name = Utils.create_utf8_name Utils.create_name = Utils.create_utf8_name
@ -115,6 +119,7 @@ class Base2(object):
def tearDown(self): def tearDown(self):
Utils.create_name = Utils.create_ascii_name Utils.create_name = Utils.create_ascii_name
class TestAccountEnv: class TestAccountEnv:
@classmethod @classmethod
def setUp(cls): def setUp(cls):
@ -132,13 +137,16 @@ class TestAccountEnv:
cls.containers.append(cont) cls.containers.append(cont)
class TestAccountDev(Base): class TestAccountDev(Base):
env = TestAccountEnv env = TestAccountEnv
set_up = False set_up = False
class TestAccountDevUTF8(Base2, TestAccountDev): class TestAccountDevUTF8(Base2, TestAccountDev):
set_up = False set_up = False
class TestAccount(Base): class TestAccount(Base):
env = TestAccountEnv env = TestAccountEnv
set_up = False set_up = False
@ -210,9 +218,7 @@ class TestAccount(Base):
container_info[container.name] = info container_info[container.name] = info
for format in ['json', 'xml']: for format in ['json', 'xml']:
for a in self.env.account.containers( for a in self.env.account.containers(parms={'format': format}):
parms={'format':format}):
self.assert_(a['count'] >= 0) self.assert_(a['count'] >= 0)
self.assert_(a['bytes'] >= 0) self.assert_(a['bytes'] >= 0)
@ -270,7 +276,7 @@ class TestAccount(Base):
def testMarkerLimitContainerList(self): def testMarkerLimitContainerList(self):
for format in [None, 'json', 'xml']: for format in [None, 'json', 'xml']:
for marker in ['0', 'A', 'I', 'R', 'Z', 'a', 'i', 'r', 'z', \ for marker in ['0', 'A', 'I', 'R', 'Z', 'a', 'i', 'r', 'z',
'abc123', 'mnop', 'xyz']: 'abc123', 'mnop', 'xyz']:
limit = random.randint(2, 9) limit = random.randint(2, 9)
@ -291,9 +297,11 @@ class TestAccount(Base):
self.assertEquals(sorted(containers, cmp=locale.strcoll), self.assertEquals(sorted(containers, cmp=locale.strcoll),
containers) containers)
class TestAccountUTF8(Base2, TestAccount): class TestAccountUTF8(Base2, TestAccount):
set_up = False set_up = False
class TestAccountNoContainersEnv: class TestAccountNoContainersEnv:
@classmethod @classmethod
def setUp(cls): def setUp(cls):
@ -303,6 +311,7 @@ class TestAccountNoContainersEnv:
config['username'])) config['username']))
cls.account.delete_containers() cls.account.delete_containers()
class TestAccountNoContainers(Base): class TestAccountNoContainers(Base):
env = TestAccountNoContainersEnv env = TestAccountNoContainersEnv
set_up = False set_up = False
@ -317,9 +326,11 @@ class TestAccountNoContainers(Base):
else: else:
self.assert_status(200) self.assert_status(200)
class TestAccountNoContainersUTF8(Base2, TestAccountNoContainers): class TestAccountNoContainersUTF8(Base2, TestAccountNoContainers):
set_up = False set_up = False
class TestContainerEnv: class TestContainerEnv:
@classmethod @classmethod
def setUp(cls): def setUp(cls):
@ -341,13 +352,16 @@ class TestContainerEnv:
file.write_random(cls.file_size) file.write_random(cls.file_size)
cls.files.append(file.name) cls.files.append(file.name)
class TestContainerDev(Base): class TestContainerDev(Base):
env = TestContainerEnv env = TestContainerEnv
set_up = False set_up = False
class TestContainerDevUTF8(Base2, TestContainerDev): class TestContainerDevUTF8(Base2, TestContainerDev):
set_up = False set_up = False
class TestContainer(Base): class TestContainer(Base):
env = TestContainerEnv env = TestContainerEnv
set_up = False set_up = False
@ -357,7 +371,6 @@ class TestContainer(Base):
for l in (limit - 100, limit - 10, limit - 1, limit, for l in (limit - 100, limit - 10, limit - 1, limit,
limit + 1, limit + 10, limit + 100): limit + 1, limit + 10, limit + 100):
cont = self.env.account.container('a' * l) cont = self.env.account.container('a' * l)
if l <= limit: if l <= limit:
self.assert_(cont.create()) self.assert_(cont.create())
@ -392,7 +405,8 @@ class TestContainer(Base):
for i in xrange(len(files)): for i in xrange(len(files)):
f = files[i] f = files[i]
for j in xrange(1, len(files) - i): for j in xrange(1, len(files) - i):
self.assert_(cont.files(parms={'limit':j, 'marker':f}) == files[i+1:i+j+1]) self.assert_(cont.files(parms={'limit': j, 'marker': f}) ==
files[i + 1: i + j + 1])
self.assert_(cont.files(parms={'marker': f}) == files[i + 1:]) self.assert_(cont.files(parms={'marker': f}) == files[i + 1:])
self.assert_(cont.files(parms={'marker': f, 'prefix': f}) == []) self.assert_(cont.files(parms={'marker': f, 'prefix': f}) == [])
self.assert_(cont.files(parms={'prefix': f}) == [f]) self.assert_(cont.files(parms={'prefix': f}) == [f])
@ -541,12 +555,12 @@ class TestContainer(Base):
def testMarkerLimitFileList(self): def testMarkerLimitFileList(self):
for format in [None, 'json', 'xml']: for format in [None, 'json', 'xml']:
for marker in ['0', 'A', 'I', 'R', 'Z', 'a', 'i', 'r', 'z', \ for marker in ['0', 'A', 'I', 'R', 'Z', 'a', 'i', 'r', 'z',
'abc123', 'mnop', 'xyz']: 'abc123', 'mnop', 'xyz']:
limit = random.randint(2, self.env.file_count - 1) limit = random.randint(2, self.env.file_count - 1)
files = self.env.container.files(parms={'format':format, \ files = self.env.container.files(parms={'format': format,
'marker':marker, 'limit':limit}) 'marker': marker,
'limit': limit})
if not files: if not files:
continue continue
@ -587,8 +601,8 @@ class TestContainer(Base):
def testTooLongName(self): def testTooLongName(self):
cont = self.env.account.container('x' * 257) cont = self.env.account.container('x' * 257)
self.assert_(not cont.create(), 'created container with name %s' % \ self.assert_(not cont.create(),
(cont.name)) 'created container with name %s' % (cont.name))
self.assert_status(400) self.assert_status(400)
def testContainerExistenceCachingProblem(self): def testContainerExistenceCachingProblem(self):
@ -603,9 +617,11 @@ class TestContainer(Base):
file = cont.file(Utils.create_name()) file = cont.file(Utils.create_name())
file.write_random() file.write_random()
class TestContainerUTF8(Base2, TestContainer): class TestContainerUTF8(Base2, TestContainer):
set_up = False set_up = False
class TestContainerPathsEnv: class TestContainerPathsEnv:
@classmethod @classmethod
def setUp(cls): def setUp(cls):
@ -668,9 +684,10 @@ class TestContainerPathsEnv:
if f.endswith('/'): if f.endswith('/'):
file.write(hdrs={'content-type': 'application/directory'}) file.write(hdrs={'content-type': 'application/directory'})
else: else:
file.write_random(cls.file_size, hdrs={'content-type': \ file.write_random(cls.file_size, hdrs={'content-type':
'application/directory'}) 'application/directory'})
class TestContainerPaths(Base): class TestContainerPaths(Base):
env = TestContainerPathsEnv env = TestContainerPathsEnv
set_up = False set_up = False
@ -678,6 +695,7 @@ class TestContainerPaths(Base):
def testTraverseContainer(self): def testTraverseContainer(self):
found_files = [] found_files = []
found_dirs = [] found_dirs = []
def recurse_path(path, count=0): def recurse_path(path, count=0):
if count > 10: if count > 10:
raise ValueError('too deep recursion') raise ValueError('too deep recursion')
@ -689,6 +707,7 @@ class TestContainerPaths(Base):
found_dirs.append(file) found_dirs.append(file)
else: else:
found_files.append(file) found_files.append(file)
recurse_path('') recurse_path('')
for file in self.env.files: for file in self.env.files:
if file.startswith('/'): if file.startswith('/'):
@ -726,7 +745,7 @@ class TestContainerPaths(Base):
for format in ('json', 'xml'): for format in ('json', 'xml'):
for file in self.env.container.files(parms={'format': format}): for file in self.env.container.files(parms={'format': format}):
self.assert_(int(file['bytes']) >= 0) self.assert_(int(file['bytes']) >= 0)
self.assert_(file.has_key('last_modified')) self.assert_('last_modified' in file)
if file['name'].endswith('/'): if file['name'].endswith('/'):
self.assertEquals(file['content_type'], self.assertEquals(file['content_type'],
'application/directory') 'application/directory')
@ -767,6 +786,7 @@ class TestContainerPaths(Base):
assert_listing('dir1/subdir with spaces/', assert_listing('dir1/subdir with spaces/',
['dir1/subdir with spaces/file B']) ['dir1/subdir with spaces/file B'])
class TestFileEnv: class TestFileEnv:
@classmethod @classmethod
def setUp(cls): def setUp(cls):
@ -782,13 +802,16 @@ class TestFileEnv:
cls.file_size = 128 cls.file_size = 128
class TestFileDev(Base): class TestFileDev(Base):
env = TestFileEnv env = TestFileEnv
set_up = False set_up = False
class TestFileDevUTF8(Base2, TestFileDev): class TestFileDevUTF8(Base2, TestFileDev):
set_up = False set_up = False
class TestFile(Base): class TestFile(Base):
env = TestFileEnv env = TestFileEnv
set_up = False set_up = False
@ -921,14 +944,16 @@ class TestFile(Base):
# invalid source container # invalid source container
file = self.env.container.file(Utils.create_name()) file = self.env.container.file(Utils.create_name())
self.assertRaises(ResponseError, file.write, self.assertRaises(ResponseError, file.write,
hdrs={'X-Copy-From': '%s%s/%s' % (prefix, hdrs={'X-Copy-From': '%s%s/%s' %
(prefix,
Utils.create_name(), source_filename)}) Utils.create_name(), source_filename)})
self.assert_status(404) self.assert_status(404)
# invalid source object # invalid source object
file = self.env.container.file(Utils.create_name()) file = self.env.container.file(Utils.create_name())
self.assertRaises(ResponseError, file.write, self.assertRaises(ResponseError, file.write,
hdrs={'X-Copy-From': '%s%s/%s' % (prefix, hdrs={'X-Copy-From': '%s%s/%s' %
(prefix,
self.env.container.name, Utils.create_name())}) self.env.container.name, Utils.create_name())})
self.assert_status(404) self.assert_status(404)
@ -936,7 +961,8 @@ class TestFile(Base):
dest_cont = self.env.account.container(Utils.create_name()) dest_cont = self.env.account.container(Utils.create_name())
file = dest_cont.file(Utils.create_name()) file = dest_cont.file(Utils.create_name())
self.assertRaises(ResponseError, file.write, self.assertRaises(ResponseError, file.write,
hdrs={'X-Copy-From': '%s%s/%s' % (prefix, hdrs={'X-Copy-From': '%s%s/%s' %
(prefix,
self.env.container.name, source_filename)}) self.env.container.name, source_filename)})
self.assert_status(404) self.assert_status(404)
@ -976,9 +1002,8 @@ class TestFile(Base):
file.metadata = {Utils.create_name(): Utils.create_name()} file.metadata = {Utils.create_name(): Utils.create_name()}
for method in (file.info, file.read, file.sync_metadata, \ for method in (file.info, file.read, file.sync_metadata,
file.delete): file.delete):
self.assertRaises(ResponseError, method) self.assertRaises(ResponseError, method)
self.assert_status(404) self.assert_status(404)
@ -993,7 +1018,6 @@ class TestFile(Base):
for i in (number_limit - 10, number_limit - 1, number_limit, for i in (number_limit - 10, number_limit - 1, number_limit,
number_limit + 1, number_limit + 10, number_limit + 100): number_limit + 1, number_limit + 10, number_limit + 100):
size_limit = 4096 size_limit = 4096
j = size_limit / (i * 2) j = size_limit / (i * 2)
@ -1099,8 +1123,8 @@ class TestFile(Base):
limit = 5 * 2 ** 30 + 2 limit = 5 * 2 ** 30 + 2
tsecs = 3 tsecs = 3
for i in (limit-100, limit-10, limit-1, limit, limit+1, limit+10, for i in (limit - 100, limit - 10, limit - 1, limit, limit + 1,
limit+100): limit + 10, limit + 100):
file = self.env.container.file(Utils.create_name()) file = self.env.container.file(Utils.create_name())
@ -1135,25 +1159,28 @@ class TestFile(Base):
# content length x # content length x
self.assertRaises(ResponseError, file.write_random, file_length, self.assertRaises(ResponseError, file.write_random, file_length,
hdrs={'Content-Length':'X'}, cfg={'no_content_length':True}) hdrs={'Content-Length': 'X'},
cfg={'no_content_length': True})
self.assert_status(400) self.assert_status(400)
# bad request types # bad request types
#for req in ('LICK', 'GETorHEAD_base', 'container_info', 'best_response'): #for req in ('LICK', 'GETorHEAD_base', 'container_info',
# 'best_response'):
for req in ('LICK', 'GETorHEAD_base'): for req in ('LICK', 'GETorHEAD_base'):
self.env.account.conn.make_request(req) self.env.account.conn.make_request(req)
self.assert_status(405) self.assert_status(405)
# bad range headers # bad range headers
self.assert_(len(file.read(hdrs={'Range':'parsecs=8-12'})) == \ self.assert_(len(file.read(hdrs={'Range': 'parsecs=8-12'})) ==
file_length) file_length)
self.assert_status(200) self.assert_status(200)
def testMetadataLengthLimits(self): def testMetadataLengthLimits(self):
key_limit, value_limit = 128, 256 key_limit, value_limit = 128, 256
lengths = [[key_limit, value_limit], [key_limit, value_limit+1], \ lengths = [[key_limit, value_limit], [key_limit, value_limit + 1],
[key_limit+1, value_limit], [key_limit, 0], \ [key_limit + 1, value_limit], [key_limit, 0],
[key_limit, value_limit*10], [key_limit*10, value_limit]] [key_limit, value_limit * 10],
[key_limit * 10, value_limit]]
for l in lengths: for l in lengths:
metadata = {'a' * l[0]: 'b' * l[1]} metadata = {'a' * l[0]: 'b' * l[1]}
@ -1205,7 +1232,7 @@ class TestFile(Base):
self.assertEquals(info['content_length'], self.env.file_size) self.assertEquals(info['content_length'], self.env.file_size)
self.assertEquals(info['etag'], md5) self.assertEquals(info['etag'], md5)
self.assertEquals(info['content_type'], content_type) self.assertEquals(info['content_type'], content_type)
self.assert_(info.has_key('last_modified')) self.assert_('last_modified' in info)
def testDeleteOfFileThatDoesNotExist(self): def testDeleteOfFileThatDoesNotExist(self):
# in container that exists # in container that exists
@ -1309,7 +1336,7 @@ class TestFile(Base):
files = [] files = []
for i in (0, 1, 10, 100, 1000, 10000): for i in (0, 1, 10, 100, 1000, 10000):
files.append({'name': Utils.create_name(), \ files.append({'name': Utils.create_name(),
'content_type': Utils.create_name(), 'bytes': i}) 'content_type': Utils.create_name(), 'bytes': i})
write_time = time.time() write_time = time.time()
@ -1334,11 +1361,11 @@ class TestFile(Base):
f['content_type']) f['content_type'])
self.assertEquals(int(file['bytes']), f['bytes']) self.assertEquals(int(file['bytes']), f['bytes'])
d = datetime.strptime(file['last_modified'].\ d = datetime.strptime(file['last_modified'].split('.')[0],
split('.')[0], "%Y-%m-%dT%H:%M:%S") "%Y-%m-%dT%H:%M:%S")
lm = time.mktime(d.timetuple()) lm = time.mktime(d.timetuple())
if f.has_key('last_modified'): if 'last_modified' in f:
self.assertEquals(f['last_modified'], lm) self.assertEquals(f['last_modified'], lm)
else: else:
f['last_modified'] = lm f['last_modified'] = lm
@ -1346,7 +1373,7 @@ class TestFile(Base):
f[format] = True f[format] = True
found = True found = True
self.assert_(found, 'Unexpected file %s found in ' \ self.assert_(found, 'Unexpected file %s found in '
'%s listing' % (file['name'], format)) '%s listing' % (file['name'], format))
headers = dict(self.env.conn.response.getheaders()) headers = dict(self.env.conn.response.getheaders())
@ -1359,12 +1386,12 @@ class TestFile(Base):
lm_diff = max([f['last_modified'] for f in files]) -\ lm_diff = max([f['last_modified'] for f in files]) -\
min([f['last_modified'] for f in files]) min([f['last_modified'] for f in files])
self.assert_(lm_diff < write_time + 1, 'Diff in last ' + \ self.assert_(lm_diff < write_time + 1, 'Diff in last '
'modified times should be less than time to write files') 'modified times should be less than time to write files')
for f in files: for f in files:
for format in ['json', 'xml']: for format in ['json', 'xml']:
self.assert_(f[format], 'File %s not found in %s listing' \ self.assert_(f[format], 'File %s not found in %s listing'
% (f['name'], format)) % (f['name'], format))
def testStackedOverwrite(self): def testStackedOverwrite(self):
@ -1416,9 +1443,11 @@ class TestFile(Base):
info = file.info() info = file.info()
self.assertEquals(etag, info['etag']) self.assertEquals(etag, info['etag'])
class TestFileUTF8(Base2, TestFile): class TestFileUTF8(Base2, TestFile):
set_up = False set_up = False
class TestFileComparisonEnv: class TestFileComparisonEnv:
@classmethod @classmethod
def setUp(cls): def setUp(cls):
@ -1444,6 +1473,7 @@ class TestFileComparisonEnv:
cls.time_old = time.asctime(time.localtime(time.time() - 86400)) cls.time_old = time.asctime(time.localtime(time.time() - 86400))
cls.time_new = time.asctime(time.localtime(time.time() + 86400)) cls.time_new = time.asctime(time.localtime(time.time() + 86400))
class TestFileComparison(Base): class TestFileComparison(Base):
env = TestFileComparisonEnv env = TestFileComparisonEnv
set_up = False set_up = False
@ -1486,20 +1516,21 @@ class TestFileComparison(Base):
def testIfMatchAndUnmodified(self): def testIfMatchAndUnmodified(self):
for file in self.env.files: for file in self.env.files:
hdrs = {'If-Match': file.md5, 'If-Unmodified-Since': \ hdrs = {'If-Match': file.md5,
self.env.time_new} 'If-Unmodified-Since': self.env.time_new}
self.assert_(file.read(hdrs=hdrs)) self.assert_(file.read(hdrs=hdrs))
hdrs = {'If-Match': 'bogus', 'If-Unmodified-Since': \ hdrs = {'If-Match': 'bogus',
self.env.time_new} 'If-Unmodified-Since': self.env.time_new}
self.assertRaises(ResponseError, file.read, hdrs=hdrs) self.assertRaises(ResponseError, file.read, hdrs=hdrs)
self.assert_status(412) self.assert_status(412)
hdrs = {'If-Match': file.md5, 'If-Unmodified-Since': \ hdrs = {'If-Match': file.md5,
self.env.time_old} 'If-Unmodified-Since': self.env.time_old}
self.assertRaises(ResponseError, file.read, hdrs=hdrs) self.assertRaises(ResponseError, file.read, hdrs=hdrs)
self.assert_status(412) self.assert_status(412)
class TestFileComparisonUTF8(Base2, TestFileComparison): class TestFileComparisonUTF8(Base2, TestFileComparison):
set_up = False set_up = False