mirror of
https://github.com/ceph/ceph
synced 2025-03-06 08:20:12 +00:00
test/rgw: check_bucket_eq() supports delete markers
Signed-off-by: Casey Bodley <cbodley@redhat.com>
This commit is contained in:
parent
22d1da7240
commit
305f6dd6e9
@ -1,4 +1,5 @@
|
||||
import logging
|
||||
from boto.s3.deletemarker import DeleteMarker
|
||||
|
||||
try:
|
||||
from itertools import izip_longest as zip_longest
|
||||
@ -16,6 +17,13 @@ def check_object_eq(k1, k2, check_extra = True):
|
||||
assert k2
|
||||
log.debug('comparing key name=%s', k1.name)
|
||||
eq(k1.name, k2.name)
|
||||
eq(k1.version_id, k2.version_id)
|
||||
eq(k1.is_latest, k2.is_latest)
|
||||
eq(k1.last_modified, k2.last_modified)
|
||||
if isinstance(k1, DeleteMarker):
|
||||
assert isinstance(k2, DeleteMarker)
|
||||
return
|
||||
|
||||
eq(k1.get_contents_as_string(), k2.get_contents_as_string())
|
||||
eq(k1.metadata, k2.metadata)
|
||||
eq(k1.cache_control, k2.cache_control)
|
||||
@ -24,16 +32,13 @@ def check_object_eq(k1, k2, check_extra = True):
|
||||
eq(k1.content_disposition, k2.content_disposition)
|
||||
eq(k1.content_language, k2.content_language)
|
||||
eq(k1.etag, k2.etag)
|
||||
eq(k1.last_modified, k2.last_modified)
|
||||
if check_extra:
|
||||
eq(k1.owner.id, k2.owner.id)
|
||||
eq(k1.owner.display_name, k2.owner.display_name)
|
||||
eq(k1.storage_class, k2.storage_class)
|
||||
eq(k1.size, k2.size)
|
||||
eq(k1.version_id, k2.version_id)
|
||||
eq(k1.encrypted, k2.encrypted)
|
||||
|
||||
|
||||
class RadosZone(Zone):
|
||||
def __init__(self, name, zonegroup = None, cluster = None, data = None, zone_id = None, gateways = None):
|
||||
super(RadosZone, self).__init__(name, zonegroup, cluster, data, zone_id, gateways)
|
||||
@ -77,11 +82,23 @@ class RadosZone(Zone):
|
||||
|
||||
check_object_eq(k1, k2)
|
||||
|
||||
# now get the keys through a HEAD operation, verify that the available data is the same
|
||||
k1_head = b1.get_key(k1.name)
|
||||
k2_head = b2.get_key(k2.name)
|
||||
if isinstance(k1, DeleteMarker):
|
||||
# verify that HEAD sees a delete marker
|
||||
assert b1.get_key(k1.name) is None
|
||||
assert b2.get_key(k2.name) is None
|
||||
else:
|
||||
# now get the keys through a HEAD operation, verify that the available data is the same
|
||||
k1_head = b1.get_key(k1.name, version_id=k1.version_id)
|
||||
k2_head = b2.get_key(k2.name, version_id=k2.version_id)
|
||||
check_object_eq(k1_head, k2_head, False)
|
||||
|
||||
check_object_eq(k1_head, k2_head, False)
|
||||
if k1.version_id:
|
||||
# compare the olh to make sure they agree about the current version
|
||||
k1_olh = b1.get_key(k1.name)
|
||||
k2_olh = b2.get_key(k2.name)
|
||||
# if there's a delete marker, HEAD will return None
|
||||
if k1_olh or k2_olh:
|
||||
check_object_eq(k1_olh, k2_olh, False)
|
||||
|
||||
log.info('success, bucket identical: bucket=%s zones={%s, %s}', bucket_name, self.name, zone_conn.name)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user