Merge "Additionally break container servers during fast-post probes"

This commit is contained in:
Jenkins 2016-04-11 08:52:19 +00:00 committed by Gerrit Code Review
commit 4c7086375a

View File

@ -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()