Merge "Some functional tests for dynamic large objects"
This commit is contained in:
commit
80a9f7013a
@ -1540,6 +1540,116 @@ class TestFileUTF8(Base2, TestFile):
|
|||||||
set_up = False
|
set_up = False
|
||||||
|
|
||||||
|
|
||||||
|
class TestDloEnv(object):
|
||||||
|
@classmethod
|
||||||
|
def setUp(cls):
|
||||||
|
cls.conn = Connection(config)
|
||||||
|
cls.conn.authenticate()
|
||||||
|
cls.account = Account(cls.conn, config.get('account',
|
||||||
|
config['username']))
|
||||||
|
cls.account.delete_containers()
|
||||||
|
|
||||||
|
cls.container = cls.account.container(Utils.create_name())
|
||||||
|
|
||||||
|
if not cls.container.create():
|
||||||
|
raise ResponseError(cls.conn.response)
|
||||||
|
|
||||||
|
# avoid getting a prefix that stops halfway through an encoded
|
||||||
|
# character
|
||||||
|
prefix = Utils.create_name().decode("utf-8")[:10].encode("utf-8")
|
||||||
|
cls.segment_prefix = prefix
|
||||||
|
|
||||||
|
for letter in ('a', 'b', 'c', 'd', 'e'):
|
||||||
|
file_item = cls.container.file("%s/seg_lower%s" % (prefix, letter))
|
||||||
|
file_item.write(letter * 10)
|
||||||
|
|
||||||
|
file_item = cls.container.file("%s/seg_upper%s" % (prefix, letter))
|
||||||
|
file_item.write(letter.upper() * 10)
|
||||||
|
|
||||||
|
man1 = cls.container.file("man1")
|
||||||
|
man1.write('man1-contents',
|
||||||
|
hdrs={"X-Object-Manifest": "%s/%s/seg_lower" %
|
||||||
|
(cls.container.name, prefix)})
|
||||||
|
|
||||||
|
man1 = cls.container.file("man2")
|
||||||
|
man1.write('man2-contents',
|
||||||
|
hdrs={"X-Object-Manifest": "%s/%s/seg_upper" %
|
||||||
|
(cls.container.name, prefix)})
|
||||||
|
|
||||||
|
manall = cls.container.file("manall")
|
||||||
|
manall.write('manall-contents',
|
||||||
|
hdrs={"X-Object-Manifest": "%s/%s/seg" %
|
||||||
|
(cls.container.name, prefix)})
|
||||||
|
|
||||||
|
|
||||||
|
class TestDlo(Base):
|
||||||
|
env = TestDloEnv
|
||||||
|
set_up = False
|
||||||
|
|
||||||
|
def test_get_manifest(self):
|
||||||
|
file_item = self.env.container.file('man1')
|
||||||
|
file_contents = file_item.read()
|
||||||
|
self.assertEqual(
|
||||||
|
file_contents,
|
||||||
|
"aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeee")
|
||||||
|
|
||||||
|
file_item = self.env.container.file('man2')
|
||||||
|
file_contents = file_item.read()
|
||||||
|
self.assertEqual(
|
||||||
|
file_contents,
|
||||||
|
"AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEE")
|
||||||
|
|
||||||
|
file_item = self.env.container.file('manall')
|
||||||
|
file_contents = file_item.read()
|
||||||
|
self.assertEqual(
|
||||||
|
file_contents,
|
||||||
|
("aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeee" +
|
||||||
|
"AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEE"))
|
||||||
|
|
||||||
|
def test_get_manifest_document_itself(self):
|
||||||
|
file_item = self.env.container.file('man1')
|
||||||
|
file_contents = file_item.read(parms={'multipart-manifest': 'get'})
|
||||||
|
self.assertEqual(file_contents, "man1-contents")
|
||||||
|
|
||||||
|
def test_get_range(self):
|
||||||
|
file_item = self.env.container.file('man1')
|
||||||
|
file_contents = file_item.read(size=25, offset=8)
|
||||||
|
self.assertEqual(file_contents, "aabbbbbbbbbbccccccccccddd")
|
||||||
|
|
||||||
|
file_contents = file_item.read(size=1, offset=47)
|
||||||
|
self.assertEqual(file_contents, "e")
|
||||||
|
|
||||||
|
def test_get_range_out_of_range(self):
|
||||||
|
file_item = self.env.container.file('man1')
|
||||||
|
|
||||||
|
self.assertRaises(ResponseError, file_item.read, size=7, offset=50)
|
||||||
|
self.assert_status(416)
|
||||||
|
|
||||||
|
def test_copy(self):
|
||||||
|
# Adding a new segment, copying the manifest, and then deleting the
|
||||||
|
# segment proves that the new object is really the concatenated
|
||||||
|
# segments and not just a manifest.
|
||||||
|
f_segment = self.env.container.file("%s/seg_lowerf" %
|
||||||
|
(self.env.segment_prefix))
|
||||||
|
f_segment.write('ffffffffff')
|
||||||
|
try:
|
||||||
|
man1_item = self.env.container.file('man1')
|
||||||
|
man1_item.copy(self.env.container.name, "copied-man1")
|
||||||
|
finally:
|
||||||
|
# try not to leave this around for other tests to stumble over
|
||||||
|
f_segment.delete()
|
||||||
|
|
||||||
|
file_item = self.env.container.file('copied-man1')
|
||||||
|
file_contents = file_item.read()
|
||||||
|
self.assertEqual(
|
||||||
|
file_contents,
|
||||||
|
"aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeffffffffff")
|
||||||
|
|
||||||
|
|
||||||
|
class TestDloUTF8(Base2, TestDlo):
|
||||||
|
set_up = False
|
||||||
|
|
||||||
|
|
||||||
class TestFileComparisonEnv:
|
class TestFileComparisonEnv:
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUp(cls):
|
def setUp(cls):
|
||||||
|
Loading…
Reference in New Issue
Block a user