Merge "Additionally break container servers during fast-post probes"
This commit is contained in:
commit
4c7086375a
@ -45,6 +45,8 @@ class Test(ReplProbeTest):
|
|||||||
self.brain = BrainSplitter(self.url, self.token, self.container_name,
|
self.brain = BrainSplitter(self.url, self.token, self.container_name,
|
||||||
self.object_name, 'object',
|
self.object_name, 'object',
|
||||||
policy=self.policy)
|
policy=self.policy)
|
||||||
|
self.container_brain = BrainSplitter(self.url, self.token,
|
||||||
|
self.container_name)
|
||||||
self.int_client = self.make_internal_client(object_post_as_copy=False)
|
self.int_client = self.make_internal_client(object_post_as_copy=False)
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
@ -182,40 +184,51 @@ class Test(ReplProbeTest):
|
|||||||
|
|
||||||
# put newer object with sysmeta to first server subset
|
# put newer object with sysmeta to first server subset
|
||||||
self.brain.stop_primary_half()
|
self.brain.stop_primary_half()
|
||||||
|
self.container_brain.stop_primary_half()
|
||||||
self._put_object()
|
self._put_object()
|
||||||
self.brain.start_primary_half()
|
self.brain.start_primary_half()
|
||||||
|
self.container_brain.start_primary_half()
|
||||||
|
|
||||||
# delete object on second server subset
|
# delete object on second server subset
|
||||||
self.brain.stop_handoff_half()
|
self.brain.stop_handoff_half()
|
||||||
|
self.container_brain.stop_handoff_half()
|
||||||
self._delete_object()
|
self._delete_object()
|
||||||
self.brain.start_handoff_half()
|
self.brain.start_handoff_half()
|
||||||
|
self.container_brain.start_handoff_half()
|
||||||
|
|
||||||
# run replicator
|
# run replicator
|
||||||
self.get_to_final_state()
|
self.get_to_final_state()
|
||||||
|
|
||||||
# check object deletion has been replicated on first server set
|
# check object deletion has been replicated on first server set
|
||||||
self.brain.stop_primary_half()
|
self.brain.stop_primary_half()
|
||||||
|
self.container_brain.stop_primary_half()
|
||||||
self._get_object(expect_statuses=(4,))
|
self._get_object(expect_statuses=(4,))
|
||||||
self.brain.start_primary_half()
|
self.brain.start_primary_half()
|
||||||
|
self.container_brain.start_primary_half()
|
||||||
|
|
||||||
# check object deletion persists on second server set
|
# check object deletion persists on second server set
|
||||||
self.brain.stop_handoff_half()
|
self.brain.stop_handoff_half()
|
||||||
|
self.container_brain.stop_handoff_half()
|
||||||
self._get_object(expect_statuses=(4,))
|
self._get_object(expect_statuses=(4,))
|
||||||
|
|
||||||
# put newer object to second server set
|
# put newer object to second server set
|
||||||
self._put_object()
|
self._put_object()
|
||||||
self.brain.start_handoff_half()
|
self.brain.start_handoff_half()
|
||||||
|
self.container_brain.start_handoff_half()
|
||||||
|
|
||||||
# run replicator
|
# run replicator
|
||||||
self.get_to_final_state()
|
self.get_to_final_state()
|
||||||
|
|
||||||
# check new object has been replicated on first server set
|
# check new object has been replicated on first server set
|
||||||
self.brain.stop_primary_half()
|
self.brain.stop_primary_half()
|
||||||
|
self.container_brain.stop_primary_half()
|
||||||
self._get_object()
|
self._get_object()
|
||||||
self.brain.start_primary_half()
|
self.brain.start_primary_half()
|
||||||
|
self.container_brain.start_primary_half()
|
||||||
|
|
||||||
# check new object persists on second server set
|
# check new object persists on second server set
|
||||||
self.brain.stop_handoff_half()
|
self.brain.stop_handoff_half()
|
||||||
|
self.container_brain.stop_handoff_half()
|
||||||
self._get_object()
|
self._get_object()
|
||||||
|
|
||||||
def test_object_after_replication_with_subsequent_post(self):
|
def test_object_after_replication_with_subsequent_post(self):
|
||||||
@ -226,10 +239,12 @@ class Test(ReplProbeTest):
|
|||||||
|
|
||||||
# put newer object to first server subset
|
# put newer object to first server subset
|
||||||
self.brain.stop_primary_half()
|
self.brain.stop_primary_half()
|
||||||
|
self.container_brain.stop_primary_half()
|
||||||
self._put_object(headers={'Content-Type': 'bar'}, body=u'newer')
|
self._put_object(headers={'Content-Type': 'bar'}, body=u'newer')
|
||||||
metadata = self._get_object_metadata()
|
metadata = self._get_object_metadata()
|
||||||
etag = metadata['etag']
|
etag = metadata['etag']
|
||||||
self.brain.start_primary_half()
|
self.brain.start_primary_half()
|
||||||
|
self.container_brain.start_primary_half()
|
||||||
|
|
||||||
# post some user meta to all servers
|
# post some user meta to all servers
|
||||||
self._post_object({'x-object-meta-bar': 'meta-bar'})
|
self._post_object({'x-object-meta-bar': 'meta-bar'})
|
||||||
@ -239,11 +254,13 @@ class Test(ReplProbeTest):
|
|||||||
|
|
||||||
# check that newer data has been replicated to second server subset
|
# check that newer data has been replicated to second server subset
|
||||||
self.brain.stop_handoff_half()
|
self.brain.stop_handoff_half()
|
||||||
|
self.container_brain.stop_handoff_half()
|
||||||
metadata = self._get_object_metadata()
|
metadata = self._get_object_metadata()
|
||||||
self.assertEqual(etag, metadata['etag'])
|
self.assertEqual(etag, metadata['etag'])
|
||||||
self.assertEqual('bar', metadata['content-type'])
|
self.assertEqual('bar', metadata['content-type'])
|
||||||
self.assertEqual('meta-bar', metadata['x-object-meta-bar'])
|
self.assertEqual('meta-bar', metadata['x-object-meta-bar'])
|
||||||
self.brain.start_handoff_half()
|
self.brain.start_handoff_half()
|
||||||
|
self.container_brain.start_handoff_half()
|
||||||
|
|
||||||
self._assert_consistent_object_metadata()
|
self._assert_consistent_object_metadata()
|
||||||
self._assert_consistent_container_dbs()
|
self._assert_consistent_container_dbs()
|
||||||
@ -257,15 +274,18 @@ class Test(ReplProbeTest):
|
|||||||
|
|
||||||
# put object with sysmeta to first server subset
|
# put object with sysmeta to first server subset
|
||||||
self.brain.stop_primary_half()
|
self.brain.stop_primary_half()
|
||||||
|
self.container_brain.stop_primary_half()
|
||||||
self._put_object(headers=sysmeta)
|
self._put_object(headers=sysmeta)
|
||||||
metadata = self._get_object_metadata()
|
metadata = self._get_object_metadata()
|
||||||
for key in sysmeta:
|
for key in sysmeta:
|
||||||
self.assertTrue(key in metadata)
|
self.assertTrue(key in metadata)
|
||||||
self.assertEqual(metadata[key], sysmeta[key])
|
self.assertEqual(metadata[key], sysmeta[key])
|
||||||
self.brain.start_primary_half()
|
self.brain.start_primary_half()
|
||||||
|
self.container_brain.start_primary_half()
|
||||||
|
|
||||||
# put object with updated sysmeta to second server subset
|
# put object with updated sysmeta to second server subset
|
||||||
self.brain.stop_handoff_half()
|
self.brain.stop_handoff_half()
|
||||||
|
self.container_brain.stop_handoff_half()
|
||||||
self._put_object(headers=sysmeta2)
|
self._put_object(headers=sysmeta2)
|
||||||
metadata = self._get_object_metadata()
|
metadata = self._get_object_metadata()
|
||||||
for key in sysmeta2:
|
for key in sysmeta2:
|
||||||
@ -281,12 +301,14 @@ class Test(ReplProbeTest):
|
|||||||
self.assertEqual(metadata[key], sysmeta2[key])
|
self.assertEqual(metadata[key], sysmeta2[key])
|
||||||
|
|
||||||
self.brain.start_handoff_half()
|
self.brain.start_handoff_half()
|
||||||
|
self.container_brain.start_handoff_half()
|
||||||
|
|
||||||
# run replicator
|
# run replicator
|
||||||
self.get_to_final_state()
|
self.get_to_final_state()
|
||||||
|
|
||||||
# check sysmeta has been replicated to first server subset
|
# check sysmeta has been replicated to first server subset
|
||||||
self.brain.stop_primary_half()
|
self.brain.stop_primary_half()
|
||||||
|
self.container_brain.stop_primary_half()
|
||||||
metadata = self._get_object_metadata()
|
metadata = self._get_object_metadata()
|
||||||
for key in usermeta:
|
for key in usermeta:
|
||||||
self.assertTrue(key in metadata)
|
self.assertTrue(key in metadata)
|
||||||
@ -295,9 +317,11 @@ class Test(ReplProbeTest):
|
|||||||
self.assertTrue(key in metadata, key)
|
self.assertTrue(key in metadata, key)
|
||||||
self.assertEqual(metadata[key], sysmeta2[key])
|
self.assertEqual(metadata[key], sysmeta2[key])
|
||||||
self.brain.start_primary_half()
|
self.brain.start_primary_half()
|
||||||
|
self.container_brain.start_primary_half()
|
||||||
|
|
||||||
# check user sysmeta ok on second server subset
|
# check user sysmeta ok on second server subset
|
||||||
self.brain.stop_handoff_half()
|
self.brain.stop_handoff_half()
|
||||||
|
self.container_brain.stop_handoff_half()
|
||||||
metadata = self._get_object_metadata()
|
metadata = self._get_object_metadata()
|
||||||
for key in usermeta:
|
for key in usermeta:
|
||||||
self.assertTrue(key in metadata)
|
self.assertTrue(key in metadata)
|
||||||
@ -306,6 +330,7 @@ class Test(ReplProbeTest):
|
|||||||
self.assertTrue(key in metadata, key)
|
self.assertTrue(key in metadata, key)
|
||||||
self.assertEqual(metadata[key], sysmeta2[key])
|
self.assertEqual(metadata[key], sysmeta2[key])
|
||||||
self.brain.start_handoff_half()
|
self.brain.start_handoff_half()
|
||||||
|
self.container_brain.start_handoff_half()
|
||||||
|
|
||||||
self._assert_consistent_object_metadata()
|
self._assert_consistent_object_metadata()
|
||||||
self._assert_consistent_container_dbs()
|
self._assert_consistent_container_dbs()
|
||||||
@ -319,15 +344,18 @@ class Test(ReplProbeTest):
|
|||||||
self._put_object()
|
self._put_object()
|
||||||
# put newer object with sysmeta to first server subset
|
# put newer object with sysmeta to first server subset
|
||||||
self.brain.stop_primary_half()
|
self.brain.stop_primary_half()
|
||||||
|
self.container_brain.stop_primary_half()
|
||||||
self._put_object(headers=sysmeta)
|
self._put_object(headers=sysmeta)
|
||||||
metadata = self._get_object_metadata()
|
metadata = self._get_object_metadata()
|
||||||
for key in sysmeta:
|
for key in sysmeta:
|
||||||
self.assertTrue(key in metadata)
|
self.assertTrue(key in metadata)
|
||||||
self.assertEqual(metadata[key], sysmeta[key])
|
self.assertEqual(metadata[key], sysmeta[key])
|
||||||
self.brain.start_primary_half()
|
self.brain.start_primary_half()
|
||||||
|
self.container_brain.start_primary_half()
|
||||||
|
|
||||||
# post some user meta to second server subset
|
# post some user meta to second server subset
|
||||||
self.brain.stop_handoff_half()
|
self.brain.stop_handoff_half()
|
||||||
|
self.container_brain.stop_handoff_half()
|
||||||
self._post_object(usermeta)
|
self._post_object(usermeta)
|
||||||
metadata = self._get_object_metadata()
|
metadata = self._get_object_metadata()
|
||||||
for key in usermeta:
|
for key in usermeta:
|
||||||
@ -336,6 +364,7 @@ class Test(ReplProbeTest):
|
|||||||
for key in sysmeta:
|
for key in sysmeta:
|
||||||
self.assertFalse(key in metadata)
|
self.assertFalse(key in metadata)
|
||||||
self.brain.start_handoff_half()
|
self.brain.start_handoff_half()
|
||||||
|
self.container_brain.start_handoff_half()
|
||||||
|
|
||||||
# run replicator
|
# run replicator
|
||||||
self.get_to_final_state()
|
self.get_to_final_state()
|
||||||
@ -343,6 +372,7 @@ class Test(ReplProbeTest):
|
|||||||
# check user metadata has been replicated to first server subset
|
# check user metadata has been replicated to first server subset
|
||||||
# and sysmeta is unchanged
|
# and sysmeta is unchanged
|
||||||
self.brain.stop_primary_half()
|
self.brain.stop_primary_half()
|
||||||
|
self.container_brain.stop_primary_half()
|
||||||
metadata = self._get_object_metadata()
|
metadata = self._get_object_metadata()
|
||||||
expected = dict(sysmeta)
|
expected = dict(sysmeta)
|
||||||
expected.update(usermeta)
|
expected.update(usermeta)
|
||||||
@ -350,14 +380,17 @@ class Test(ReplProbeTest):
|
|||||||
self.assertTrue(key in metadata, key)
|
self.assertTrue(key in metadata, key)
|
||||||
self.assertEqual(metadata[key], expected[key])
|
self.assertEqual(metadata[key], expected[key])
|
||||||
self.brain.start_primary_half()
|
self.brain.start_primary_half()
|
||||||
|
self.container_brain.start_primary_half()
|
||||||
|
|
||||||
# check user metadata and sysmeta both on second server subset
|
# check user metadata and sysmeta both on second server subset
|
||||||
self.brain.stop_handoff_half()
|
self.brain.stop_handoff_half()
|
||||||
|
self.container_brain.stop_handoff_half()
|
||||||
metadata = self._get_object_metadata()
|
metadata = self._get_object_metadata()
|
||||||
for key in expected.keys():
|
for key in expected.keys():
|
||||||
self.assertTrue(key in metadata, key)
|
self.assertTrue(key in metadata, key)
|
||||||
self.assertEqual(metadata[key], expected[key])
|
self.assertEqual(metadata[key], expected[key])
|
||||||
self.brain.start_handoff_half()
|
self.brain.start_handoff_half()
|
||||||
|
self.container_brain.start_handoff_half()
|
||||||
|
|
||||||
self._assert_consistent_object_metadata()
|
self._assert_consistent_object_metadata()
|
||||||
self._assert_consistent_container_dbs()
|
self._assert_consistent_container_dbs()
|
||||||
@ -372,21 +405,25 @@ class Test(ReplProbeTest):
|
|||||||
|
|
||||||
# put user meta to first server subset
|
# put user meta to first server subset
|
||||||
self.brain.stop_handoff_half()
|
self.brain.stop_handoff_half()
|
||||||
|
self.container_brain.stop_handoff_half()
|
||||||
self._post_object(headers=usermeta)
|
self._post_object(headers=usermeta)
|
||||||
metadata = self._get_object_metadata()
|
metadata = self._get_object_metadata()
|
||||||
for key in usermeta:
|
for key in usermeta:
|
||||||
self.assertTrue(key in metadata)
|
self.assertTrue(key in metadata)
|
||||||
self.assertEqual(metadata[key], usermeta[key])
|
self.assertEqual(metadata[key], usermeta[key])
|
||||||
self.brain.start_handoff_half()
|
self.brain.start_handoff_half()
|
||||||
|
self.container_brain.start_handoff_half()
|
||||||
|
|
||||||
# put newer object with sysmeta to second server subset
|
# put newer object with sysmeta to second server subset
|
||||||
self.brain.stop_primary_half()
|
self.brain.stop_primary_half()
|
||||||
|
self.container_brain.stop_primary_half()
|
||||||
self._put_object(headers=sysmeta)
|
self._put_object(headers=sysmeta)
|
||||||
metadata = self._get_object_metadata()
|
metadata = self._get_object_metadata()
|
||||||
for key in sysmeta:
|
for key in sysmeta:
|
||||||
self.assertTrue(key in metadata)
|
self.assertTrue(key in metadata)
|
||||||
self.assertEqual(metadata[key], sysmeta[key])
|
self.assertEqual(metadata[key], sysmeta[key])
|
||||||
self.brain.start_primary_half()
|
self.brain.start_primary_half()
|
||||||
|
self.container_brain.start_primary_half()
|
||||||
|
|
||||||
# run replicator
|
# run replicator
|
||||||
self.get_to_final_state()
|
self.get_to_final_state()
|
||||||
@ -394,6 +431,7 @@ class Test(ReplProbeTest):
|
|||||||
# check stale user metadata is not replicated to first server subset
|
# check stale user metadata is not replicated to first server subset
|
||||||
# and sysmeta is unchanged
|
# and sysmeta is unchanged
|
||||||
self.brain.stop_primary_half()
|
self.brain.stop_primary_half()
|
||||||
|
self.container_brain.stop_primary_half()
|
||||||
metadata = self._get_object_metadata()
|
metadata = self._get_object_metadata()
|
||||||
for key in sysmeta:
|
for key in sysmeta:
|
||||||
self.assertTrue(key in metadata)
|
self.assertTrue(key in metadata)
|
||||||
@ -401,10 +439,12 @@ class Test(ReplProbeTest):
|
|||||||
for key in usermeta:
|
for key in usermeta:
|
||||||
self.assertFalse(key in metadata)
|
self.assertFalse(key in metadata)
|
||||||
self.brain.start_primary_half()
|
self.brain.start_primary_half()
|
||||||
|
self.container_brain.start_primary_half()
|
||||||
|
|
||||||
# check stale user metadata is removed from second server subset
|
# check stale user metadata is removed from second server subset
|
||||||
# and sysmeta is replicated
|
# and sysmeta is replicated
|
||||||
self.brain.stop_handoff_half()
|
self.brain.stop_handoff_half()
|
||||||
|
self.container_brain.stop_handoff_half()
|
||||||
metadata = self._get_object_metadata()
|
metadata = self._get_object_metadata()
|
||||||
for key in sysmeta:
|
for key in sysmeta:
|
||||||
self.assertTrue(key in metadata)
|
self.assertTrue(key in metadata)
|
||||||
@ -412,6 +452,7 @@ class Test(ReplProbeTest):
|
|||||||
for key in usermeta:
|
for key in usermeta:
|
||||||
self.assertFalse(key in metadata)
|
self.assertFalse(key in metadata)
|
||||||
self.brain.start_handoff_half()
|
self.brain.start_handoff_half()
|
||||||
|
self.container_brain.start_handoff_half()
|
||||||
|
|
||||||
self._assert_consistent_object_metadata()
|
self._assert_consistent_object_metadata()
|
||||||
self._assert_consistent_container_dbs()
|
self._assert_consistent_container_dbs()
|
||||||
@ -432,18 +473,24 @@ class Test(ReplProbeTest):
|
|||||||
|
|
||||||
# incomplete write to primary half
|
# incomplete write to primary half
|
||||||
self.brain.stop_handoff_half()
|
self.brain.stop_handoff_half()
|
||||||
|
self.container_brain.stop_handoff_half()
|
||||||
self._put_object(headers={'Content-Type': 'foo'})
|
self._put_object(headers={'Content-Type': 'foo'})
|
||||||
self.brain.start_handoff_half()
|
self.brain.start_handoff_half()
|
||||||
|
self.container_brain.start_handoff_half()
|
||||||
|
|
||||||
# handoff write
|
# handoff write
|
||||||
self.brain.stop_primary_half()
|
self.brain.stop_primary_half()
|
||||||
|
self.container_brain.stop_primary_half()
|
||||||
self._put_object(headers={'Content-Type': 'bar'})
|
self._put_object(headers={'Content-Type': 'bar'})
|
||||||
self.brain.start_primary_half()
|
self.brain.start_primary_half()
|
||||||
|
self.container_brain.start_primary_half()
|
||||||
|
|
||||||
# content-type update to primary half
|
# content-type update to primary half
|
||||||
self.brain.stop_handoff_half()
|
self.brain.stop_handoff_half()
|
||||||
|
self.container_brain.stop_handoff_half()
|
||||||
self._post_object(headers={'Content-Type': 'baz'})
|
self._post_object(headers={'Content-Type': 'baz'})
|
||||||
self.brain.start_handoff_half()
|
self.brain.start_handoff_half()
|
||||||
|
self.container_brain.start_handoff_half()
|
||||||
|
|
||||||
self.get_to_final_state()
|
self.get_to_final_state()
|
||||||
|
|
||||||
@ -481,18 +528,24 @@ class Test(ReplProbeTest):
|
|||||||
|
|
||||||
# incomplete write
|
# incomplete write
|
||||||
self.brain.stop_handoff_half()
|
self.brain.stop_handoff_half()
|
||||||
|
self.container_brain.stop_handoff_half()
|
||||||
self._put_object(headers={'Content-Type': 'foo'})
|
self._put_object(headers={'Content-Type': 'foo'})
|
||||||
self.brain.start_handoff_half()
|
self.brain.start_handoff_half()
|
||||||
|
self.container_brain.start_handoff_half()
|
||||||
|
|
||||||
# handoff write
|
# handoff write
|
||||||
self.brain.stop_primary_half()
|
self.brain.stop_primary_half()
|
||||||
|
self.container_brain.stop_primary_half()
|
||||||
self._put_object(headers={'Content-Type': 'bar'})
|
self._put_object(headers={'Content-Type': 'bar'})
|
||||||
self.brain.start_primary_half()
|
self.brain.start_primary_half()
|
||||||
|
self.container_brain.start_primary_half()
|
||||||
|
|
||||||
# metadata update with newest data unavailable
|
# metadata update with newest data unavailable
|
||||||
self.brain.stop_handoff_half()
|
self.brain.stop_handoff_half()
|
||||||
|
self.container_brain.stop_handoff_half()
|
||||||
self._post_object(headers={'X-Object-Meta-Color': 'Blue'})
|
self._post_object(headers={'X-Object-Meta-Color': 'Blue'})
|
||||||
self.brain.start_handoff_half()
|
self.brain.start_handoff_half()
|
||||||
|
self.container_brain.start_handoff_half()
|
||||||
|
|
||||||
self.get_to_final_state()
|
self.get_to_final_state()
|
||||||
|
|
||||||
@ -535,26 +588,34 @@ class Test(ReplProbeTest):
|
|||||||
|
|
||||||
# incomplete write
|
# incomplete write
|
||||||
self.brain.stop_handoff_half()
|
self.brain.stop_handoff_half()
|
||||||
|
self.container_brain.stop_handoff_half()
|
||||||
self._put_object(headers={'Content-Type': 'foo',
|
self._put_object(headers={'Content-Type': 'foo',
|
||||||
'X-Object-Sysmeta-Test': 'older'})
|
'X-Object-Sysmeta-Test': 'older'})
|
||||||
self.brain.start_handoff_half()
|
self.brain.start_handoff_half()
|
||||||
|
self.container_brain.start_handoff_half()
|
||||||
|
|
||||||
# handoff write
|
# handoff write
|
||||||
self.brain.stop_primary_half()
|
self.brain.stop_primary_half()
|
||||||
|
self.container_brain.stop_primary_half()
|
||||||
self._put_object(headers={'Content-Type': 'bar',
|
self._put_object(headers={'Content-Type': 'bar',
|
||||||
'X-Object-Sysmeta-Test': 'newer'})
|
'X-Object-Sysmeta-Test': 'newer'})
|
||||||
self.brain.start_primary_half()
|
self.brain.start_primary_half()
|
||||||
|
self.container_brain.start_primary_half()
|
||||||
|
|
||||||
# incomplete post with content type
|
# incomplete post with content type
|
||||||
self.brain.stop_handoff_half()
|
self.brain.stop_handoff_half()
|
||||||
|
self.container_brain.stop_handoff_half()
|
||||||
self._post_object(headers={'Content-Type': 'bif'})
|
self._post_object(headers={'Content-Type': 'bif'})
|
||||||
self.brain.start_handoff_half()
|
self.brain.start_handoff_half()
|
||||||
|
self.container_brain.start_handoff_half()
|
||||||
|
|
||||||
# incomplete post to handoff with content type
|
# incomplete post to handoff with content type
|
||||||
self.brain.stop_primary_half()
|
self.brain.stop_primary_half()
|
||||||
|
self.container_brain.stop_primary_half()
|
||||||
self._post_object(headers={'Content-Type': 'baz',
|
self._post_object(headers={'Content-Type': 'baz',
|
||||||
'X-Object-Meta-Color': 'Red'})
|
'X-Object-Meta-Color': 'Red'})
|
||||||
self.brain.start_primary_half()
|
self.brain.start_primary_half()
|
||||||
|
self.container_brain.start_primary_half()
|
||||||
|
|
||||||
# complete post with no content type
|
# complete post with no content type
|
||||||
self._post_object(headers={'X-Object-Meta-Color': 'Blue',
|
self._post_object(headers={'X-Object-Meta-Color': 'Blue',
|
||||||
@ -601,20 +662,26 @@ class Test(ReplProbeTest):
|
|||||||
|
|
||||||
# incomplete write to handoff half
|
# incomplete write to handoff half
|
||||||
self.brain.stop_primary_half()
|
self.brain.stop_primary_half()
|
||||||
|
self.container_brain.stop_primary_half()
|
||||||
self._put_object(headers={'Content-Type': 'bar',
|
self._put_object(headers={'Content-Type': 'bar',
|
||||||
'X-Object-Sysmeta-Test': 'newer'})
|
'X-Object-Sysmeta-Test': 'newer'})
|
||||||
self.brain.start_primary_half()
|
self.brain.start_primary_half()
|
||||||
|
self.container_brain.start_primary_half()
|
||||||
|
|
||||||
# incomplete post with no content type to primary half
|
# incomplete post with no content type to primary half
|
||||||
self.brain.stop_handoff_half()
|
self.brain.stop_handoff_half()
|
||||||
|
self.container_brain.stop_handoff_half()
|
||||||
self._post_object(headers={'X-Object-Meta-Color': 'Red',
|
self._post_object(headers={'X-Object-Meta-Color': 'Red',
|
||||||
'X-Object-Sysmeta-Test': 'ignored'})
|
'X-Object-Sysmeta-Test': 'ignored'})
|
||||||
self.brain.start_handoff_half()
|
self.brain.start_handoff_half()
|
||||||
|
self.container_brain.start_handoff_half()
|
||||||
|
|
||||||
# incomplete post with no content type to handoff half
|
# incomplete post with no content type to handoff half
|
||||||
self.brain.stop_primary_half()
|
self.brain.stop_primary_half()
|
||||||
|
self.container_brain.stop_primary_half()
|
||||||
self._post_object(headers={'X-Object-Meta-Color': 'Blue'})
|
self._post_object(headers={'X-Object-Meta-Color': 'Blue'})
|
||||||
self.brain.start_primary_half()
|
self.brain.start_primary_half()
|
||||||
|
self.container_brain.start_primary_half()
|
||||||
|
|
||||||
self.get_to_final_state()
|
self.get_to_final_state()
|
||||||
|
|
||||||
@ -645,38 +712,48 @@ class Test(ReplProbeTest):
|
|||||||
self.brain.put_container(policy_index=0)
|
self.brain.put_container(policy_index=0)
|
||||||
# incomplete put to handoff
|
# incomplete put to handoff
|
||||||
self.brain.stop_primary_half()
|
self.brain.stop_primary_half()
|
||||||
|
self.container_brain.stop_primary_half()
|
||||||
self._put_object(headers={'Content-Type': 'oldest',
|
self._put_object(headers={'Content-Type': 'oldest',
|
||||||
'X-Object-Sysmeta-Test': 'oldest',
|
'X-Object-Sysmeta-Test': 'oldest',
|
||||||
'X-Object-Meta-Test': 'oldest'})
|
'X-Object-Meta-Test': 'oldest'})
|
||||||
self.brain.start_primary_half()
|
self.brain.start_primary_half()
|
||||||
|
self.container_brain.start_primary_half()
|
||||||
# incomplete put to primary
|
# incomplete put to primary
|
||||||
self.brain.stop_handoff_half()
|
self.brain.stop_handoff_half()
|
||||||
|
self.container_brain.stop_handoff_half()
|
||||||
self._put_object(headers={'Content-Type': 'oldest',
|
self._put_object(headers={'Content-Type': 'oldest',
|
||||||
'X-Object-Sysmeta-Test': 'oldest',
|
'X-Object-Sysmeta-Test': 'oldest',
|
||||||
'X-Object-Meta-Test': 'oldest'})
|
'X-Object-Meta-Test': 'oldest'})
|
||||||
self.brain.start_handoff_half()
|
self.brain.start_handoff_half()
|
||||||
|
self.container_brain.start_handoff_half()
|
||||||
|
|
||||||
# incomplete post with content-type to handoff
|
# incomplete post with content-type to handoff
|
||||||
self.brain.stop_primary_half()
|
self.brain.stop_primary_half()
|
||||||
|
self.container_brain.stop_primary_half()
|
||||||
self._post_object(headers={'Content-Type': 'newer',
|
self._post_object(headers={'Content-Type': 'newer',
|
||||||
'X-Object-Meta-Test': 'newer'})
|
'X-Object-Meta-Test': 'newer'})
|
||||||
self.brain.start_primary_half()
|
self.brain.start_primary_half()
|
||||||
|
self.container_brain.start_primary_half()
|
||||||
|
|
||||||
# incomplete put to primary
|
# incomplete put to primary
|
||||||
self.brain.stop_handoff_half()
|
self.brain.stop_handoff_half()
|
||||||
|
self.container_brain.stop_handoff_half()
|
||||||
self._put_object(headers={'Content-Type': 'newest',
|
self._put_object(headers={'Content-Type': 'newest',
|
||||||
'X-Object-Sysmeta-Test': 'newest',
|
'X-Object-Sysmeta-Test': 'newest',
|
||||||
'X-Object-Meta-Test': 'newer'})
|
'X-Object-Meta-Test': 'newer'})
|
||||||
self.brain.start_handoff_half()
|
self.brain.start_handoff_half()
|
||||||
|
self.container_brain.start_handoff_half()
|
||||||
|
|
||||||
# incomplete post with no content-type to handoff which still has
|
# incomplete post with no content-type to handoff which still has
|
||||||
# out of date content-type
|
# out of date content-type
|
||||||
self.brain.stop_primary_half()
|
self.brain.stop_primary_half()
|
||||||
|
self.container_brain.stop_primary_half()
|
||||||
self._post_object(headers={'X-Object-Meta-Test': 'newest'})
|
self._post_object(headers={'X-Object-Meta-Test': 'newest'})
|
||||||
metadata = self._get_object_metadata()
|
metadata = self._get_object_metadata()
|
||||||
self.assertEqual(metadata['x-object-meta-test'], 'newest')
|
self.assertEqual(metadata['x-object-meta-test'], 'newest')
|
||||||
self.assertEqual(metadata['content-type'], 'newer')
|
self.assertEqual(metadata['content-type'], 'newer')
|
||||||
self.brain.start_primary_half()
|
self.brain.start_primary_half()
|
||||||
|
self.container_brain.start_primary_half()
|
||||||
|
|
||||||
self.get_to_final_state()
|
self.get_to_final_state()
|
||||||
|
|
||||||
@ -707,21 +784,26 @@ class Test(ReplProbeTest):
|
|||||||
self.brain.put_container(policy_index=0)
|
self.brain.put_container(policy_index=0)
|
||||||
# incomplete put
|
# incomplete put
|
||||||
self.brain.stop_primary_half()
|
self.brain.stop_primary_half()
|
||||||
|
self.container_brain.stop_primary_half()
|
||||||
self._put_object(headers={'Content-Type': 'oldest',
|
self._put_object(headers={'Content-Type': 'oldest',
|
||||||
'X-Object-Sysmeta-Test': 'oldest',
|
'X-Object-Sysmeta-Test': 'oldest',
|
||||||
'X-Object-Meta-Test': 'oldest'})
|
'X-Object-Meta-Test': 'oldest'})
|
||||||
self.brain.start_primary_half()
|
self.brain.start_primary_half()
|
||||||
|
self.container_brain.start_primary_half()
|
||||||
|
|
||||||
# incomplete put then delete
|
# incomplete put then delete
|
||||||
self.brain.stop_handoff_half()
|
self.brain.stop_handoff_half()
|
||||||
|
self.container_brain.stop_handoff_half()
|
||||||
self._put_object(headers={'Content-Type': 'oldest',
|
self._put_object(headers={'Content-Type': 'oldest',
|
||||||
'X-Object-Sysmeta-Test': 'oldest',
|
'X-Object-Sysmeta-Test': 'oldest',
|
||||||
'X-Object-Meta-Test': 'oldest'})
|
'X-Object-Meta-Test': 'oldest'})
|
||||||
self._delete_object()
|
self._delete_object()
|
||||||
self.brain.start_handoff_half()
|
self.brain.start_handoff_half()
|
||||||
|
self.container_brain.start_handoff_half()
|
||||||
|
|
||||||
# handoff post
|
# handoff post
|
||||||
self.brain.stop_primary_half()
|
self.brain.stop_primary_half()
|
||||||
|
self.container_brain.stop_primary_half()
|
||||||
self._post_object(headers={'Content-Type': 'newest',
|
self._post_object(headers={'Content-Type': 'newest',
|
||||||
'X-Object-Sysmeta-Test': 'ignored',
|
'X-Object-Sysmeta-Test': 'ignored',
|
||||||
'X-Object-Meta-Test': 'newest'})
|
'X-Object-Meta-Test': 'newest'})
|
||||||
@ -733,6 +815,7 @@ class Test(ReplProbeTest):
|
|||||||
self.assertEqual(metadata['content-type'], 'newest')
|
self.assertEqual(metadata['content-type'], 'newest')
|
||||||
|
|
||||||
self.brain.start_primary_half()
|
self.brain.start_primary_half()
|
||||||
|
self.container_brain.start_primary_half()
|
||||||
|
|
||||||
# delete trumps later post
|
# delete trumps later post
|
||||||
self.get_to_final_state()
|
self.get_to_final_state()
|
||||||
|
Loading…
Reference in New Issue
Block a user