Fix UnboundLocalError on account PUT
Fixes bug-1243973 Change-Id: I67143535c0f7a0c6b53f67329a0bb128a355a4de Signed-off-by: Peter Portante <peter.portante@redhat.com>
This commit is contained in:
parent
7ccde73974
commit
b48435cd25
@ -142,7 +142,7 @@ class AccountController(object):
|
|||||||
broker.initialize(timestamp)
|
broker.initialize(timestamp)
|
||||||
created = True
|
created = True
|
||||||
except DatabaseAlreadyExists:
|
except DatabaseAlreadyExists:
|
||||||
pass
|
created = False
|
||||||
elif broker.is_status_deleted():
|
elif broker.is_status_deleted():
|
||||||
return self._deleted_response(broker, req, HTTPForbidden,
|
return self._deleted_response(broker, req, HTTPForbidden,
|
||||||
body='Recently deleted')
|
body='Recently deleted')
|
||||||
|
@ -259,6 +259,44 @@ class TestAccountController(unittest.TestCase):
|
|||||||
resp = req.get_response(self.controller)
|
resp = req.get_response(self.controller)
|
||||||
self.assertEqual(resp.status_int, 202)
|
self.assertEqual(resp.status_int, 202)
|
||||||
|
|
||||||
|
def test_PUT_simulated_create_race(self):
|
||||||
|
state = ['initial']
|
||||||
|
|
||||||
|
from swift.account.backend import AccountBroker as OrigAcBr
|
||||||
|
|
||||||
|
class InterceptedAcBr(OrigAcBr):
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(InterceptedAcBr, self).__init__(*args, **kwargs)
|
||||||
|
if state[0] == 'initial':
|
||||||
|
# Do nothing initially
|
||||||
|
pass
|
||||||
|
elif state[0] == 'race':
|
||||||
|
# Save the original db_file attribute value
|
||||||
|
self._saved_db_file = self.db_file
|
||||||
|
self.db_file += '.doesnotexist'
|
||||||
|
|
||||||
|
def initialize(self, *args, **kwargs):
|
||||||
|
if state[0] == 'initial':
|
||||||
|
# Do nothing initially
|
||||||
|
pass
|
||||||
|
elif state[0] == 'race':
|
||||||
|
# Restore the original db_file attribute to get the race
|
||||||
|
# behavior
|
||||||
|
self.db_file = self._saved_db_file
|
||||||
|
return super(InterceptedAcBr, self).initialize(*args, **kwargs)
|
||||||
|
|
||||||
|
with mock.patch("swift.account.server.AccountBroker", InterceptedAcBr):
|
||||||
|
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
|
||||||
|
'HTTP_X_TIMESTAMP': '0'})
|
||||||
|
resp = req.get_response(self.controller)
|
||||||
|
self.assertEqual(resp.status_int, 201)
|
||||||
|
state[0] = "race"
|
||||||
|
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT',
|
||||||
|
'HTTP_X_TIMESTAMP': '1'})
|
||||||
|
resp = req.get_response(self.controller)
|
||||||
|
self.assertEqual(resp.status_int, 202)
|
||||||
|
|
||||||
def test_PUT_after_DELETE(self):
|
def test_PUT_after_DELETE(self):
|
||||||
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT'},
|
req = Request.blank('/sda1/p/a', environ={'REQUEST_METHOD': 'PUT'},
|
||||||
headers={'X-Timestamp': normalize_timestamp(1)})
|
headers={'X-Timestamp': normalize_timestamp(1)})
|
||||||
|
Loading…
Reference in New Issue
Block a user