From fcf4de3855f01e80b90d246529916a5915fe413d Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Mon, 6 Apr 2020 23:11:21 +0800 Subject: [PATCH] test/rgw: pass encoding to Key.get_content_as_string() we assume that boto.Key.get_content_as_string() returns str instead of bytes, and compare the return value with a string, so, to ensure that lhs and rhs are both strings, we need to decode the returned content. since we always store strings composed with ASCII, it's safe to use 'ascii' to decode them. Signed-off-by: Kefu Chai --- src/test/rgw/rgw_multi/tests.py | 8 ++++---- src/test/rgw/rgw_multi/tests_az.py | 18 +++++++++--------- src/test/rgw/rgw_multi/zone_cloud.py | 4 ++-- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/test/rgw/rgw_multi/tests.py b/src/test/rgw/rgw_multi/tests.py index f910b7c57e4a1..5a496d39665fa 100644 --- a/src/test/rgw/rgw_multi/tests.py +++ b/src/test/rgw/rgw_multi/tests.py @@ -998,14 +998,14 @@ def test_multi_zone_redirect(): key2 = bucket2.get_key(obj) - eq(data, key2.get_contents_as_string()) + eq(data, key2.get_contents_as_string(encoding='ascii')) key = bucket.new_key(obj) for x in ['a', 'b', 'c', 'd']: data = x*512 key.set_contents_from_string(data) - eq(data, key2.get_contents_as_string()) + eq(data, key2.get_contents_as_string(encoding='ascii')) # revert config changes set_sync_from_all(z2, True) @@ -1239,10 +1239,10 @@ def test_encrypted_object_sync(): # read the encrypted objects from the second zone bucket2 = get_bucket(zone2, bucket_name) key = bucket2.get_key('testobj-sse-c', headers=sse_c_headers) - eq(data, key.get_contents_as_string(headers=sse_c_headers)) + eq(data, key.get_contents_as_string(headers=sse_c_headers, encoding='ascii')) key = bucket2.get_key('testobj-sse-kms') - eq(data, key.get_contents_as_string()) + eq(data, key.get_contents_as_string(encoding='ascii')) def test_bucket_index_log_trim(): zonegroup = realm.master_zonegroup() diff --git a/src/test/rgw/rgw_multi/tests_az.py b/src/test/rgw/rgw_multi/tests_az.py index 1a1434ae26ce9..13ec832a2041c 100644 --- a/src/test/rgw/rgw_multi/tests_az.py +++ b/src/test/rgw/rgw_multi/tests_az.py @@ -221,7 +221,7 @@ def test_az_object_replication(): # check object on archive zone bucket_az = az_zones[0].conn.get_bucket(bucket_name) key_az = bucket_az.get_key("foo") - p1 = key_az.get_contents_as_string() == "bar" + p1 = key_az.get_contents_as_string(encoding='ascii') == "bar" assert_equal(p1, True) @@ -238,7 +238,7 @@ def test_az_object_replication_versioning(): # check object content on archive zone bucket_az = az_zones[0].conn.get_bucket(bucket_name) key_az = bucket_az.get_key("foo") - p1 = key_az.get_contents_as_string() == "bar" + p1 = key_az.get_contents_as_string(encoding='ascii') == "bar" assert_equal(p1, True) # grab object versioning and etag for b_version in bucket.list_versions(): @@ -345,13 +345,13 @@ def test_az_deleted_object_replication(): bucket = zones[0].create_bucket(bucket_name) key = bucket.new_key("foo") key.set_contents_from_string("bar") - p1 = key.get_contents_as_string() == "bar" + p1 = key.get_contents_as_string(encoding='ascii') == "bar" assert_equal(p1, True) # sync zone_full_checkpoint(az_zones[0].zone, zones[0].zone) # update object on non archive zone key.set_contents_from_string("soup") - p2 = key.get_contents_as_string() == "soup" + p2 = key.get_contents_as_string(encoding='ascii') == "soup" assert_equal(p2, True) # sync zone_full_checkpoint(az_zones[0].zone, zones[0].zone) @@ -367,7 +367,7 @@ def test_az_deleted_object_replication(): key_az = bucket_az.get_key("foo") p4 = check_key_exists(key_az) == True assert_equal(p4, True) - p5 = key_az.get_contents_as_string() == "soup" + p5 = key_az.get_contents_as_string(encoding='ascii') == "soup" assert_equal(p5, True) b_ver_az = get_versioned_objs(bucket_az) p6 = len(b_ver_az) == 2 @@ -450,10 +450,10 @@ def test_az_old_object_version_in_archive_zone(): assert_equal(p4, True) # check versioned objects on archive zone new_key_az = new_bucket_az.get_key("foo", version_id=obj_az_version_id) - p5 = new_key_az.get_contents_as_string() == "zero" + p5 = new_key_az.get_contents_as_string(encoding='ascii') == "zero" assert_equal(p5, True) new_key_latest_az = new_bucket_az.get_key("foo") - p6 = new_key_latest_az.get_contents_as_string() == "one" + p6 = new_key_latest_az.get_contents_as_string(encoding='ascii') == "one" assert_equal(p6, True) @@ -589,9 +589,9 @@ def test_az_versioning_support_in_zones(): # check body in zones obj_version_id = b_ver[0]['foo']['version_id'] key = bucket.get_key("foo", version_id=obj_version_id) - p18 = key.get_contents_as_string() == "zero" + p18 = key.get_contents_as_string(encoding='ascii') == "zero" assert_equal(p18, True) obj_az_version_id = b_ver_az[0]['foo']['version_id'] key_az = bucket_az.get_key("foo", version_id=obj_az_version_id) - p19 = key_az.get_contents_as_string() == "zero" + p19 = key_az.get_contents_as_string(encoding='ascii') == "zero" assert_equal(p19, True) diff --git a/src/test/rgw/rgw_multi/zone_cloud.py b/src/test/rgw/rgw_multi/zone_cloud.py index a9caff1e84e6e..eb945a44bc21d 100644 --- a/src/test/rgw/rgw_multi/zone_cloud.py +++ b/src/test/rgw/rgw_multi/zone_cloud.py @@ -129,8 +129,8 @@ class CloudKey: self.content_language = k.content_language - def get_contents_as_string(self): - r = self.key.get_contents_as_string() + def get_contents_as_string(self, encoding=None): + r = self.key.get_contents_as_string(encoding=encoding) # the previous call changed the status of the source object, as it loaded # its metadata -- 2.39.5