Merge "Fix problem with changing class attribute"
This commit is contained in:
commit
b4b35c2561
@ -193,6 +193,17 @@ class TestDBReplicator(unittest.TestCase):
|
|||||||
def setUp(self):
|
def setUp(self):
|
||||||
db_replicator.ring = FakeRing()
|
db_replicator.ring = FakeRing()
|
||||||
self.delete_db_calls = []
|
self.delete_db_calls = []
|
||||||
|
self._patchers = []
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
for patcher in self._patchers:
|
||||||
|
patcher.stop()
|
||||||
|
|
||||||
|
def _patch(self, patching_fn, *args, **kwargs):
|
||||||
|
patcher = patching_fn(*args, **kwargs)
|
||||||
|
patched_thing = patcher.start()
|
||||||
|
self._patchers.append(patcher)
|
||||||
|
return patched_thing
|
||||||
|
|
||||||
def stub_delete_db(self, object_file):
|
def stub_delete_db(self, object_file):
|
||||||
self.delete_db_calls.append(object_file)
|
self.delete_db_calls.append(object_file)
|
||||||
@ -403,9 +414,10 @@ class TestDBReplicator(unittest.TestCase):
|
|||||||
|
|
||||||
def test_replicate_object_quarantine(self):
|
def test_replicate_object_quarantine(self):
|
||||||
replicator = TestReplicator({})
|
replicator = TestReplicator({})
|
||||||
was_db_file = replicator.brokerclass.db_file
|
self._patch(patch.object, replicator.brokerclass, 'db_file',
|
||||||
try:
|
'/a/b/c/d/e/hey')
|
||||||
|
self._patch(patch.object, replicator.brokerclass,
|
||||||
|
'get_repl_missing_table', True)
|
||||||
def mock_renamer(was, new, cause_colision=False):
|
def mock_renamer(was, new, cause_colision=False):
|
||||||
if cause_colision and '-' not in new:
|
if cause_colision and '-' not in new:
|
||||||
raise OSError(errno.EEXIST, "File already exists")
|
raise OSError(errno.EEXIST, "File already exists")
|
||||||
@ -418,17 +430,11 @@ class TestDBReplicator(unittest.TestCase):
|
|||||||
|
|
||||||
def mock_renamer_error(was, new):
|
def mock_renamer_error(was, new):
|
||||||
return mock_renamer(was, new, cause_colision=True)
|
return mock_renamer(was, new, cause_colision=True)
|
||||||
was_renamer = db_replicator.renamer
|
with patch.object(db_replicator, 'renamer', mock_renamer):
|
||||||
db_replicator.renamer = mock_renamer
|
|
||||||
replicator.brokerclass.get_repl_missing_table = True
|
|
||||||
replicator.brokerclass.db_file = '/a/b/c/d/e/hey'
|
|
||||||
replicator._replicate_object('0', 'file', 'node_id')
|
replicator._replicate_object('0', 'file', 'node_id')
|
||||||
# try the double quarantine
|
# try the double quarantine
|
||||||
db_replicator.renamer = mock_renamer_error
|
with patch.object(db_replicator, 'renamer', mock_renamer_error):
|
||||||
replicator._replicate_object('0', 'file', 'node_id')
|
replicator._replicate_object('0', 'file', 'node_id')
|
||||||
finally:
|
|
||||||
replicator.brokerclass.db_file = was_db_file
|
|
||||||
db_replicator.renamer = was_renamer
|
|
||||||
|
|
||||||
def test_replicate_object_delete_because_deleted(self):
|
def test_replicate_object_delete_because_deleted(self):
|
||||||
replicator = TestReplicator({})
|
replicator = TestReplicator({})
|
||||||
|
Loading…
Reference in New Issue
Block a user