from time import time
from datetime import datetime
+import sys
from .storage import StorageClient, ClientError
from .utils import path4url, prefix_keys, filter_in, filter_out, list2str
def purge_container(self):
r = self.container_delete(until=unicode(time()))
- r.release()
+
def upload_object_unchunked(self, obj, f, withHashFile = False, size=None, etag=None,
content_encoding=None, content_disposition=None, content_type=None, sharing=None,
r = self.object_put(obj, data=data, etag=etag, content_encoding=content_encoding,
content_disposition=content_disposition, content_type=content_type, permitions=sharing,
public=public, success=201)
- r.release()
+
def put_block_async(self, data, hash):
class SilentGreenlet(gevent.Greenlet):
r = self.container_post(update=True, content_type='application/octet-stream',
content_length=len(data), data=data, format='json')
assert r.json[0] == hash, 'Local hash does not match server'
- r.release()
+
def create_object_by_manifestation(self, obj, etag=None, content_encoding=None,
content_disposition=None, content_type=None, sharing=None, public=None):
r = self.object_put(obj, content_length=0, etag=etag, content_encoding=content_encoding,
content_disposition=content_disposition, content_type=content_type, permitions=sharing,
public=public, manifest='%s/%s'%(self.container,obj))
- r.release()
+
def upload_object(self, object, f, size=None, hash_cb=None, upload_cb=None, etag=None,
content_encoding=None, content_disposition=None, content_type=None, sharing=None,
for r in flying:
if r.ready():
if r.exception:
- r.release()
+
raise r.exception
if upload_cb:
upload_gen.next()
gevent.joinall(flying)
r = self.object_put(object, format='json', hashmap=True, content_type=obj_content_type,
json=hashmap, success=201)
- r.release()
+
def download_object(self, obj, f, download_cb=None, version=None, overide=False,
range=None, if_match=None, if_none_match=None, if_modified_since=None,
handler = self._get_block_async(obj, data_range=data_range, version=version,
if_etag_match=if_match, if_etag_not_match=if_none_match,
if_modified_since=if_modified_since, if_unmodified_since=if_unmodified_since)
- flying.append({'handler':handler, 'start':start})
+ flying.append({'handler':handler, 'start':start, 'data_range':data_range})
newflying = []
for v in flying:
h = v['handler']
if_modified_since=if_modified_since, if_unmodified_since=if_unmodified_since)
f.write(r.content)
f.flush()
- r.release()
+
#write the last results and exit
if islocalfile:
if_etag_not_match=if_none_match, if_modified_since=if_modified_since,
if_unmodified_since=if_unmodified_since)
except ClientError as err:
- r.release()
+
if err.status == 304 or err.status == 412:
return {}
raise
result = r.json
- r.release()
+
return result
def set_account_group(self, group, usernames):
r = self.account_post(update=True, groups = {group:usernames})
- r.release()
+
def del_account_group(self, group):
r = self.account_post(update=True, groups={group:[]})
- r.release()
+
def get_account_info(self, until=None):
r = self.account_head(until=until)
if r.status_code == 401:
- r.release()
+
raise ClientError("No authorization")
reply = r.headers
- r.release()
+
return reply
def get_account_quota(self):
def set_account_meta(self, metapairs):
assert(type(metapairs) is dict)
r = self.account_post(update=True, metadata=metapairs)
- r.release()
+
def del_account_meta(self, metakey):
r = self.account_post(update=True, metadata={metakey:''})
- r.release()
+
def set_account_quota(self, quota):
r = self.account_post(update=True, quota=quota)
- r.release()
+
def set_account_versioning(self, versioning):
r = self.account_post(update=True, versioning = versioning)
- r.release()
+
def list_containers(self):
r = self.account_get()
reply = r.json
- r.release()
+
return reply
def del_container(self, until=None, delimiter=None):
self.assert_container()
r = self.container_delete(until=until, delimiter=delimiter, success=(204, 404, 409))
if r.status_code == 404:
- r.release()
+
raise ClientError('Container "%s" does not exist'%self.container, r.status_code)
elif r.status_code == 409:
- r.release()
+
raise ClientError('Container "%s" is not empty'%self.container, r.status_code)
- r.release()
+
def get_container_versioning(self, container):
self.container = container
def get_container_info(self, until = None):
r = self.container_head(until=until)
reply = r.headers
- r.release()
+
return r.headers
def get_container_meta(self, until = None):
def set_container_meta(self, metapairs):
assert(type(metapairs) is dict)
r = self.container_post(update=True, metadata=metapairs)
- r.release()
+
def del_container_meta(self, metakey):
r = self.container_post(update=True, metadata={metakey:''})
- r.release()
+
def set_container_quota(self, quota):
r = self.container_post(update=True, quota=quota)
- r.release()
+
def set_container_versioning(self, versioning):
r = self.container_post(update=True, versioning=versioning)
- r.release()
+
def del_object(self, obj, until=None, delimiter=None):
self.assert_container()
r = self.object_delete(obj, until=until, delimiter=delimiter)
- r.release()
+
def set_object_meta(self, object, metapairs):
assert(type(metapairs) is dict)
r = self.object_post(object, update=True, metadata=metapairs)
- r.release()
+
def del_object_meta(self, metakey, object):
r = self.object_post(object, update=True, metadata={metakey:''})
- r.release()
+
def publish_object(self, object):
r = self.object_post(object, update=True, public=True)
- r.release()
+
def unpublish_object(self, object):
r = self.object_post(object, update=True, public=False)
- r.release()
+
def get_object_info(self, obj, version=None):
r = self.object_head(obj, version=version)
reply = r.headers
- r.release()
+
return reply
def get_object_meta(self, obj, version=None):
perms['read'] = read_permition if isinstance(read_permition, list) else ''
perms['write'] = write_permition if isinstance(write_permition, list) else ''
r = self.object_post(object, update=True, permitions=perms)
- r.release()
+
def del_object_sharing(self, object):
self.set_object_sharing(object)
offset += len(block)
r = self.object_post(object, update=True, content_range='bytes */*',
content_type='application/octet-stream', content_length=len(block), data=block)
- r.release()
+
if upload_cb is not None:
upload_gen.next()
r = self.object_post(object, update=True, content_range='bytes 0-%s/*'%upto_bytes,
content_type='application/octet-stream', object_bytes=upto_bytes,
source_object=path4url(self.container, object))
- r.release()
+
def overwrite_object(self, object, start, end, source_file, upload_cb=None):
"""Overwrite a part of an object with given source file
offset += len(block)
r = self.object_post(object, update=True, content_type='application/octet-stream',
content_length=len(block), content_range='bytes %s-%s/*'%(start,end), data=block)
- r.release()
+
if upload_cb is not None:
upload_gen.next()
r = self.object_put(dst_object, success=201, copy_from=src_path, content_length=0,
source_version=source_version, public=public, content_type=content_type,
delimiter=delimiter)
- r.release()
+
def move_object(self, src_container, src_object, dst_container, dst_object=False,
source_version = None, public=False, content_type=None, delimiter=None):
r = self.object_put(dst_object, success=201, move_from=src_path, content_length=0,
source_version=source_version, public=public, content_type=content_type,
delimiter=delimiter)
- r.release()
+
"""Prepare an object to be shared - also its container"""
self.client.container = self.c1
r = self.client.object_post('test', update=True, permitions={'read':'someUser'})
- r.release()
+
self.makeNewObject(self.c1, 'another.test')
def makeNewObject(self, container, obj):
r = self.client.object_put(obj, content_type='application/octet-stream',
data= 'file '+obj+' that lives in '+container,
metadata={'incontainer':container})
- r.release()
+
def forceDeleteContainer(self, container):
self.client.container = container
self.client.del_object(name)
r = self.client.container_delete()
self.container = ''
- r.release()
+
def tearDown(self):
"""Destroy test cases"""
"""Test account_HEAD"""
r = self.client.account_head()
self.assertEqual(r.status_code, 204)
- r.release()
+
r = self.client.account_head(until='1000000000')
self.assertEqual(r.status_code, 204)
- r.release()
+
datestring = unicode(r.headers['x-account-until-timestamp'])
self.assertEqual(u'Sun, 09 Sep 2001 01:46:40 GMT', datestring)
self.assertEqual(r.status_code, 200)
fullLen = len(r.json)
self.assertTrue(fullLen > 2)
- r.release()
+
r = self.client.account_get(limit=1)
self.assertEqual(len(r.json), 1)
- r.release()
+
r = self.client.account_get(marker='c2_')
temp_c0 = r.json[0]['name']
temp_c2 = r.json[2]['name']
- r.release()
+
r = self.client.account_get(limit=2, marker='c2_')
conames = [container['name'] for container in r.json \
if container['name'].lower().startswith('c2_')]
self.assertTrue(temp_c0 in conames)
self.assertFalse(temp_c2 in conames)
- r.release()
+
r = self.client.account_get(show_only_shared=True)
self.assertTrue(self.c1 in [c['name'] for c in r.json])
- r.release()
+
r = self.client.account_get(until=1342609206)
self.assertTrue(len(r.json) <= fullLen)
- r.release()
+
"""Check if(un)modified_since"""
for format in self.client.DATE_FORMATS:
r = self.client.account_post()
self.assertEqual(r.status_code, 202)
grpName = 'grp'+unicode(self.now)
- r.release()
+
"""Method set/del_account_meta and set_account_groupcall use account_post internally
"""
r = self.client.container_head()
self.assertEqual(r.status_code, 204)
- r.release()
+
"""Check until"""
r = self.client.container_head(until=1000000, success=(204, 404))
self.assertEqual(r.status_code, 404)
- r.release()
+
"""Check and if(un)modified_since"""
for format in self.client.DATE_FORMATS:
r = self.client.container_get()
self.assertEqual(r.status_code, 200)
fullLen = len(r.json)
- r.release()
+
r = self.client.container_get(prefix='test')
lalobjects = [obj for obj in r.json if obj['name'].startswith('test')]
self.assertTrue(len(r.json) > 1)
self.assertEqual(len(r.json), len(lalobjects))
- r.release()
+
r = self.client.container_get(limit=1)
self.assertEqual(len(r.json), 1)
- r.release()
+
r = self.client.container_get(marker='another')
self.assertTrue(len(r.json) > 1)
neobjects = [obj for obj in r.json if obj['name'] > 'another']
self.assertEqual(len(r.json), len(neobjects))
- r.release()
+
r = self.client.container_get(prefix='another.test', delimiter='.')
self.assertTrue(fullLen > len(r.json))
- r.release()
+
r = self.client.container_get(path='/')
self.assertEqual(fullLen, len(r.json))
- r.release()
+
r = self.client.container_get(format='xml')
self.assertEqual(r.text.split()[4], 'name="'+self.c1+'">')
- r.release()
+
r = self.client.container_get(meta=['incontainer'])
self.assertTrue(len(r.json) > 0)
- r.release()
+
r = self.client.container_get(show_only_shared=True)
self.assertTrue(len(r.json) < fullLen)
- r.release()
+
try:
r = self.client.container_get(until=1000000000)
datestring = unicode(r.headers['x-account-until-timestamp'])
self.assertEqual(u'Sun, 09 Sep 2001 01:46:40 GMT', datestring)
- r.release()
+
except ClientError:
- r.release()
+
pass
"""Check and if un/modified_since"""
r = self.client.container_put()
self.assertEqual(r.status_code, 202)
- r.release()
+
r = self.client.get_container_quota(self.client.container)
cquota = r.values()[0]
r = self.client.container_put(quota=newquota)
self.assertEqual(r.status_code, 202)
- r.release()
+
r = self.client.get_container_quota(self.client.container)
xquota = int(r.values()[0])
self.assertEqual(newquota, xquota)
r = self.client.container_put(versioning='auto')
self.assertEqual(r.status_code, 202)
- r.release()
+
r = self.client.get_container_versioning(self.client.container)
nvers = r.values()[0]
self.assertEqual('auto', nvers)
r = self.client.container_put(versioning='none')
self.assertEqual(r.status_code, 202)
- r.release()
+
r = self.client.get_container_versioning(self.client.container)
nvers = r.values()[0]
self.assertEqual('none', nvers)
r = self.client.container_put(metadata={'m1':'v1', 'm2':'v2'})
self.assertEqual(r.status_code, 202)
- r.release()
+
r = self.client.get_container_meta(self.client.container)
self.assertTrue(r.has_key('x-container-meta-m1'))
self.assertEqual(r['x-container-meta-m1'], 'v1')
r = self.client.container_put(metadata={'m1':'', 'm2':'v2a'})
self.assertEqual(r.status_code, 202)
- r.release()
+
r = self.client.get_container_meta(self.client.container)
self.assertTrue(not r.has_key('x-container-meta-m1'))
self.assertTrue(r.has_key('x-container-meta-m2'))
"""Simple post"""
r = self.client.container_post()
self.assertEqual(r.status_code, 202)
- r.release()
+
"""post meta"""
self.client.set_container_meta({'m1':'v1', 'm2':'v2'})
"""Check update=False"""
r = self.client.object_post('test', update=False, metadata={'newmeta':'newval'})
- r.release()
+
r = self.client.get_object_info('test')
self.assertTrue(r.has_key('x-object-meta-newmeta'))
self.assertFalse(r.has_key('x-object-meta-incontainer'))
self.client.container = self.c2
r = self.client.container_delete(success=409)
self.assertEqual(r.status_code, 409)
- r.release()
+
"""Fail to delete c3 (empty) container"""
self.client.container = self.c3
r = self.client.container_delete(until='1000000000')
self.assertEqual(r.status_code, 204)
- r.release()
+
"""Delete c3 (empty) container"""
r = self.client.container_delete()
self.assertEqual(r.status_code, 204)
- r.release()
+
def test_object_head(self):
"""Test object_HEAD"""
r = self.client.object_head(obj)
self.assertEqual(r.status_code, 200)
etag = r.headers['etag']
- r.release()
+
r = self.client.object_head(obj, version=40)
self.assertEqual(r.headers['x-object-version'], '40')
- r.release()
+
r = self.client.object_head(obj, if_etag_match=etag)
self.assertEqual(r.status_code, 200)
- r.release()
+
r = self.client.object_head(obj, if_etag_not_match=etag, success=(200, 412, 304))
self.assertNotEqual(r.status_code, 200)
- r.release()
+
r = self.client.object_head(obj, version=40, if_etag_match=etag, success=412)
self.assertEqual(r.status_code, 412)
- r.release()
+
"""Check and if(un)modified_since"""
for format in self.client.DATE_FORMATS:
osize = int(r.headers['content-length'])
etag = r.headers['etag']
- r.release()
+
r = self.client.object_get(obj, hashmap=True)
self.assertTrue(r.json.has_key('hashes') \
and r.json.has_key('block_hash') \
and r.json.has_key('block_size') \
and r.json.has_key('bytes'))
- r.release()
+
r = self.client.object_get(obj, format='xml', hashmap=True)
self.assertEqual(len(r.text.split('hash>')), 3)
- r.release()
+
rangestr = 'bytes=%s-%s'%(osize/3, osize/2)
r = self.client.object_get(obj, data_range=rangestr, success=(200, 206))
partsize = int(r.headers['content-length'])
self.assertTrue(0 < partsize and partsize <= 1+osize/3)
- r.release()
+
rangestr = 'bytes=%s-%s'%(osize/3, osize/2)
r = self.client.object_get(obj, data_range=rangestr, if_range=True, success=(200, 206))
partsize = int(r.headers['content-length'])
self.assertTrue(0 < partsize and partsize <= 1+osize/3)
- r.release()
+
r = self.client.object_get(obj, if_etag_match=etag)
self.assertEqual(r.status_code, 200)
- r.release()
+
r = self.client.object_get(obj, if_etag_not_match=etag+'LALALA')
self.assertEqual(r.status_code, 200)
- r.release()
+
"""Check and if(un)modified_since"""
for format in self.client.DATE_FORMATS:
content_disposition='attachment; filename="fname.ext"')
self.assertEqual(r.status_code, 201)
etag = r.headers['etag']
- r.release()
+
"""Check content-disposition"""
r = self.client.get_object_info(obj)
"""Check public and if_etag_match"""
r = self.client.object_put(obj, if_etag_match=etag, data='b',
content_type='application/octet-stream', public=True)
- r.release()
+
r = self.client.object_get(obj)
self.assertTrue(r.headers.has_key('x-object-public'))
vers2 = int(r.headers['x-object-version'])
etag = r.headers['etag']
self.assertEqual(r.text, 'b')
- r.release()
+
"""Check if_etag_not_match"""
r = self.client.object_put(obj, if_etag_not_match=etag, data='c',
content_type='application/octet-stream', success=(201, 412))
self.assertEqual(r.status_code, 412)
- r.release()
+
"""Check content_type and content_length"""
tmpdir = 'dir'+unicode(self.now)
r = self.client.object_put(tmpdir, content_type='application/directory',
content_length=0)
- r.release()
+
r = self.client.get_object_info(tmpdir)
self.assertEqual(r['content-type'], 'application/directory')
source_account=self.client.account,
content_length=0, success=201)
self.assertEqual(r.status_code, 201)
- r.release()
+
"""Check cross-container copy_from, content_encoding"""
self.client.container = self.c1
content_encoding='application/octet-stream',
source_account=self.client.account,
content_length=0, success=201)
- r.release()
+
self.assertEqual(r.status_code, 201)
r = self.client.get_object_info(obj)
self.assertEqual(r['etag'], etag)
source_account='nonExistendAddress@NeverLand.com',
content_length=0, success=(201, 403))
self.assertEqual(r.status_code, 403)
- r.release()
+
"""Check cross-container move_from"""
r = self.client.object_put(obj+'v0', format=None,
content_encoding='application/octet-stream',
content_length=0, success=201)
self.assertEqual(r.status_code, 201)
- r.release()
+
r = self.client.get_object_info(obj+'v0')
self.assertEqual(r['etag'], etag)
source_version = vers2,
content_encoding='application/octet-stream',
content_length=0, success=201)
- r.release()
+
"""Check manifest"""
mobj = 'manifest.test'
txt += '%s'%i
r = self.client.object_put('%s/%s'%(mobj, i), data='%s'%i, content_length=1, success=201,
content_type='application/octet-stream', content_encoding='application/octet-stream')
- r.release()
+
r = self.client.object_put(mobj, content_length=0, content_type='application/octet-stream',
manifest='%s/%s'%(self.client.container, mobj))
- r.release()
+
r = self.client.object_get(mobj)
self.assertEqual(r.text, txt)
- r.release()
+
"""Some problems with transfer-encoding?"""
'read':['accX:groupA', 'u1', 'u2'],
'write':['u2', 'u3']},
content_disposition='attachment; filename="fname.ext"')
- r.release()
+
r = self.client.object_copy(obj+'orig',
destination = '/'+self.client.container+'/'+obj,
ignore_content_type=False, content_type='application/json',
metadata={'mkey2':'mval2a', 'mkey3':'mval3'},
permitions={'write':['u5', 'accX:groupB']})
self.assertEqual(r.status_code, 201)
- r.release()
+
"""Check content-disposition"""
r = self.client.get_object_info(obj)
content_type='application/json', destination_account='nonExistendAddress@NeverLand.com',
success=(201, 403))
self.assertEqual(r.status_code, 403)
- r.release()
+
"""Check destination being another container
and also content_type and content encoding"""
content_encoding='utf8', content_type='application/json')
self.assertEqual(r.status_code, 201)
self.assertEqual(r.headers['content-type'], 'application/json; charset=UTF-8')
- r.release()
+
"""Check ignore_content_type and content_type"""
r = self.client.object_get(obj)
etag = r.headers['etag']
ctype = r.headers['content-type']
self.assertEqual(ctype, 'application/json')
- r.release()
+
r = self.client.object_copy(obj+'orig',
destination = '/'+self.client.container+'/'+obj+'0',
ignore_content_type=True, content_type='application/json')
self.assertEqual(r.status_code, 201)
self.assertNotEqual(r.headers['content-type'], 'application/json')
- r.release()
+
"""Check if_etag_(not_)match"""
r = self.client.object_copy(obj,
destination='/'+self.client.container+'/'+obj+'1', if_etag_match=etag)
self.assertEqual(r.status_code, 201)
- r.release()
+
r = self.client.object_copy(obj,
destination='/'+self.client.container+'/'+obj+'2', if_etag_not_match='lalala')
self.assertEqual(r.status_code, 201)
vers2 = r.headers['x-object-version']
- r.release()
+
"""Check source_version, public and format """
r = self.client.object_copy(obj+'2', destination='/'+self.client.container+'/'+obj+'3', source_version=vers2, format='xml', public=True)
self.assertEqual(r.status_code, 201)
self.assertTrue(r.headers['content-type'].index('xml') > 0)
- r.release()
+
r = self.client.get_object_info(obj+'3')
self.assertTrue(r.has_key('x-object-public'))
r = self.client.object_put(obj+'orig', content_type='application/octet-stream',
data= data, metadata={'mkey1':'mval1', 'mkey2':'mval2'},
permitions={'read':['accX:groupA', 'u1', 'u2'], 'write':['u2', 'u3']})
- r.release()
+
r = self.client.object_move(obj+'orig', destination = '/'+self.client.container+'/'+obj,
ignore_content_type=False, content_type='application/json',
metadata={'mkey2':'mval2a', 'mkey3':'mval3'},
permitions={'write':['u5', 'accX:groupB']})
self.assertEqual(r.status_code, 201)
- r.release()
+
"""Check Metadata"""
r = self.client.get_object_meta(obj)
content_type='application/json', destination_account='nonExistendAddress@NeverLand.com',
success=(201, 403))
self.assertEqual(r.status_code, 403)
- r.release()
+
"""Check destination being another container and also
content_type, content_disposition and content encoding"""
ignore_content_type=True, content_type='application/json')
self.assertEqual(r.status_code, 201)
self.assertNotEqual(r.headers['content-type'], 'application/json')
- r.release()
+
"""Check if_etag_(not_)match"""
self.client.container=self.c2
r = self.client.object_move(obj, destination='/'+self.client.container+'/'+obj+'0',
if_etag_match=etag)
self.assertEqual(r.status_code, 201)
- r.release()
+
r = self.client.object_move(obj+'0', destination='/'+self.client.container+'/'+obj+'1',
if_etag_not_match='lalala')
self.assertEqual(r.status_code, 201)
- r.release()
+
"""Check public and format """
r = self.client.object_move(obj+'1', destination='/'+self.client.container+'/'+obj+'2',
format='xml', public=True)
self.assertEqual(r.status_code, 201)
self.assertTrue(r.headers['content-type'].index('xml') > 0)
- r.release()
+
r = self.client.get_object_info(obj+'2')
self.assertTrue(r.has_key('x-object-public'))
r = self.client.object_put(obj, content_type='application/octet-stream',
data= 'H', metadata={'mkey1':'mval1', 'mkey2':'mval2'},
permitions={'read':['accX:groupA', 'u1', 'u2'], 'write':['u2', 'u3']})
- r.release()
+
"""Append tests update, content_range, content_type, content_length"""
newf = open(obj, 'r')
self.client.append_object(obj, newf)
r = self.client.object_get(obj)
self.assertTrue(r.text.startswith('Hello!'))
- r.release()
+
"""Overwrite tests update, content_type, content_length, content_range"""
newf.seek(0)
r = self.client.object_get(obj)
self.assertTrue(r.text.startswith('ello!'))
newf.close()
- r.release()
+
"""Truncate tests update, content_range, content_type,
object_bytes and source_object"""
r = self.client.truncate_object(obj, 5)
r = self.client.object_get(obj)
self.assertEqual(r.text, 'ello!')
- r.release()
+
"""Check metadata"""
self.client.set_object_meta(obj, {'mkey2':'mval2a', 'mkey3':'mval3'})
r = self.client.object_post(obj, update=True, public=True,
if_etag_not_match=etag, success=(412,202,204))
self.assertEqual(r.status_code, 412)
- r.release()
+
r = self.client.object_post(obj, update=True, public=True,
if_etag_match=etag, content_encoding='application/json')
- r.release()
+
r = self.client.get_object_info(obj)
helloVersion = r['x-object-version']
self.assertTrue(r.has_key('x-object-public'))
source_account='thisAccountWillNeverExist@adminland.com',
source_version=helloVersion, data='12345', success=(403, 202, 204))
self.assertEqual(r.status_code, 403)
- r.release()
+
r = self.client.object_post(obj, update=True, content_type='application/octet-srteam',
content_length=5, content_range='bytes 1-5/*', source_object='/%s/%s'%(self.c2,obj),
source_account=self.client.account, source_version=helloVersion, data='12345',
content_disposition='attachment; filename="fname.ext"')
- r.release()
+
r = self.client.object_get(obj)
self.assertEqual(r.text, 'eello!')
self.assertTrue(r.headers.has_key('content-disposition')
and 'fname.ext' in r.headers['content-disposition'])
- r.release()
+
"""Check manifest"""
mobj = 'manifest.test'
txt += '%s'%i
r = self.client.object_put('%s/%s'%(mobj, i), data='%s'%i, content_length=1, success=201,
content_encoding='application/octet-stream', content_type='application/octet-stream')
- r.release()
+
r = self.client.object_put(mobj, content_length=0, content_type='application/octet-stream')
- r.release()
+
r = self.client.object_post(mobj, manifest='%s/%s'%(self.client.container, mobj))
- r.release()
+
r = self.client.object_get(mobj)
self.assertEqual(r.text, txt)
- r.release()
+
"""We need to check transfer_encoding """
r = self.client.object_put(obj, content_type='application/octet-stream',
data= 'H', metadata={'mkey1':'mval1', 'mkey2':'mval2'},
permitions={'read':['accX:groupA', 'u1', 'u2'], 'write':['u2', 'u3']})
- r.release()
+
"""Check with false until"""
r = self.client.object_delete(obj, until=1000000)
- r.release()
+
r = self.client.object_get(obj, success=(200, 404))
self.assertEqual(r.status_code, 200)
- r.release()
+
"""Check normal case"""
r = self.client.object_delete(obj)
self.assertEqual(r.status_code, 204)
- r.release()
+
r = self.client.object_get(obj, success=(200, 404))
self.assertEqual(r.status_code, 404)
- r.release()
+
def create_large_file(self, size, name):
"""Create a large file at fs"""