Fix gevent bug, move release action to connection
authorStavros Sachtouris <saxtouri@admin.grnet.gr>
Wed, 12 Sep 2012 10:21:01 +0000 (13:21 +0300)
committerStavros Sachtouris <saxtouri@admin.grnet.gr>
Wed, 12 Sep 2012 10:21:01 +0000 (13:21 +0300)
kamaki/clients/pithos.py
kamaki/clients/tests.py

index 94c7808..77e3ab7 100644 (file)
@@ -40,6 +40,7 @@ import hashlib, os, gevent.pool
 
 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
@@ -606,7 +607,7 @@ class PithosClient(StorageClient):
 
     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,
@@ -630,7 +631,7 @@ class PithosClient(StorageClient):
         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):
@@ -652,7 +653,7 @@ class PithosClient(StorageClient):
         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):
@@ -661,7 +662,7 @@ class PithosClient(StorageClient):
         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,
@@ -726,7 +727,7 @@ class PithosClient(StorageClient):
             for r in flying:
                 if r.ready():
                     if r.exception:
-                        r.release()
+                        
                         raise r.exception
                     if upload_cb:
                         upload_gen.next()
@@ -735,7 +736,7 @@ class PithosClient(StorageClient):
         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,
@@ -826,7 +827,7 @@ class PithosClient(StorageClient):
                 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']
@@ -847,7 +848,7 @@ class PithosClient(StorageClient):
                     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:
@@ -898,29 +899,29 @@ class PithosClient(StorageClient):
                 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):
@@ -938,36 +939,36 @@ class PithosClient(StorageClient):
     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
@@ -980,7 +981,7 @@ class PithosClient(StorageClient):
     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):
@@ -992,46 +993,46 @@ class PithosClient(StorageClient):
     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):
@@ -1063,7 +1064,7 @@ class PithosClient(StorageClient):
         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)
@@ -1086,7 +1087,7 @@ class PithosClient(StorageClient):
             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()
 
@@ -1094,7 +1095,7 @@ class PithosClient(StorageClient):
         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
@@ -1115,7 +1116,7 @@ class PithosClient(StorageClient):
             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()
 
@@ -1128,7 +1129,7 @@ class PithosClient(StorageClient):
         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):
@@ -1139,4 +1140,4 @@ class PithosClient(StorageClient):
         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()
+        
index e4d6370..d801cba 100644 (file)
@@ -292,7 +292,7 @@ class testPithos(unittest.TestCase):
         """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):
@@ -300,7 +300,7 @@ class testPithos(unittest.TestCase):
         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
@@ -310,7 +310,7 @@ class testPithos(unittest.TestCase):
             self.client.del_object(name)
         r = self.client.container_delete()
         self.container = ''
-        r.release()
+        
 
     def tearDown(self):
         """Destroy test cases"""
@@ -335,10 +335,10 @@ class testPithos(unittest.TestCase):
         """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)
 
@@ -359,30 +359,30 @@ class testPithos(unittest.TestCase):
         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:
@@ -400,7 +400,7 @@ class testPithos(unittest.TestCase):
         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
         """
@@ -435,12 +435,12 @@ class testPithos(unittest.TestCase):
 
         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:
@@ -460,51 +460,51 @@ class testPithos(unittest.TestCase):
         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"""
@@ -524,7 +524,7 @@ class testPithos(unittest.TestCase):
 
         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]
@@ -532,28 +532,28 @@ class testPithos(unittest.TestCase):
 
         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')
@@ -562,7 +562,7 @@ class testPithos(unittest.TestCase):
 
         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'))
@@ -577,7 +577,7 @@ class testPithos(unittest.TestCase):
         """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'})
@@ -636,7 +636,7 @@ class testPithos(unittest.TestCase):
 
         """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'))
@@ -650,18 +650,18 @@ class testPithos(unittest.TestCase):
         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"""
@@ -671,22 +671,22 @@ class testPithos(unittest.TestCase):
         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:
@@ -711,38 +711,38 @@ class testPithos(unittest.TestCase):
 
         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:
@@ -769,7 +769,7 @@ class testPithos(unittest.TestCase):
             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)
@@ -790,25 +790,25 @@ class testPithos(unittest.TestCase):
         """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')
 
@@ -819,7 +819,7 @@ class testPithos(unittest.TestCase):
             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
@@ -828,7 +828,7 @@ class testPithos(unittest.TestCase):
             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)
@@ -841,7 +841,7 @@ class testPithos(unittest.TestCase):
             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, 
@@ -849,7 +849,7 @@ class testPithos(unittest.TestCase):
             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)
 
@@ -859,7 +859,7 @@ class testPithos(unittest.TestCase):
             source_version = vers2,
             content_encoding='application/octet-stream',
             content_length=0, success=201)
-        r.release()
+        
 
         """Check manifest"""
         mobj = 'manifest.test'
@@ -868,13 +868,13 @@ class testPithos(unittest.TestCase):
             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?"""
 
@@ -890,14 +890,14 @@ class testPithos(unittest.TestCase):
                 '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)
@@ -919,7 +919,7 @@ class testPithos(unittest.TestCase):
             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"""
@@ -927,37 +927,37 @@ class testPithos(unittest.TestCase):
             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'))
 
@@ -970,13 +970,13 @@ class testPithos(unittest.TestCase):
         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)
@@ -995,7 +995,7 @@ class testPithos(unittest.TestCase):
             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"""
@@ -1016,25 +1016,25 @@ class testPithos(unittest.TestCase):
             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'))
 
@@ -1051,14 +1051,14 @@ class testPithos(unittest.TestCase):
         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)
@@ -1066,14 +1066,14 @@ class testPithos(unittest.TestCase):
         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'})
@@ -1110,10 +1110,10 @@ class testPithos(unittest.TestCase):
         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'))
@@ -1125,17 +1125,17 @@ class testPithos(unittest.TestCase):
             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'
@@ -1144,14 +1144,14 @@ class testPithos(unittest.TestCase):
             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 """
 
@@ -1163,22 +1163,22 @@ class testPithos(unittest.TestCase):
         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"""