]> git.apps.os.sepia.ceph.com Git - s3-tests.git/commitdiff
boto3: multi-object-delete tests use client.delete_objects()
authorCasey Bodley <cbodley@redhat.com>
Mon, 13 Mar 2023 17:00:25 +0000 (13:00 -0400)
committerCasey Bodley <cbodley@redhat.com>
Fri, 31 Mar 2023 18:43:34 +0000 (14:43 -0400)
when the tests were converted from boto2, they were rewritten as loops
over client.delete_object(). switch back to multi-delete

Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit 787dc6bd43d11acaec6ec8e7b942296410b254f3)

s3tests_boto3/functional/test_s3.py

index b8c638feb6eb5e9521a7785b4e73b30efdc633b0..dd37d004440d22e4d89eb27b5e3adebc73750b10 100644 (file)
@@ -7459,20 +7459,17 @@ def test_versioning_multi_object_delete():
     num_versions = 2
 
     (version_ids, contents) = create_multiple_versions(client, bucket_name, key, num_versions)
+    assert len(version_ids) == 2
 
-    response = client.list_object_versions(Bucket=bucket_name)
-    versions = response['Versions']
-    versions.reverse()
-
-    for version in versions:
-        client.delete_object(Bucket=bucket_name, Key=key, VersionId=version['VersionId'])
+    # delete both versions
+    objects = [{'Key': key, 'VersionId': v} for v in version_ids]
+    client.delete_objects(Bucket=bucket_name, Delete={'Objects': objects})
 
     response = client.list_object_versions(Bucket=bucket_name)
     assert not 'Versions' in response
 
     # now remove again, should all succeed due to idempotency
-    for version in versions:
-        client.delete_object(Bucket=bucket_name, Key=key, VersionId=version['VersionId'])
+    client.delete_objects(Bucket=bucket_name, Delete={'Objects': objects})
 
     response = client.list_object_versions(Bucket=bucket_name)
     assert not 'Versions' in response
@@ -7487,33 +7484,24 @@ def test_versioning_multi_object_delete_with_marker():
     num_versions = 2
 
     (version_ids, contents) = create_multiple_versions(client, bucket_name, key, num_versions)
+    assert len(version_ids) == num_versions
+    objects = [{'Key': key, 'VersionId': v} for v in version_ids]
 
-    client.delete_object(Bucket=bucket_name, Key=key)
-    response = client.list_object_versions(Bucket=bucket_name)
-    versions = response['Versions']
-    delete_markers = response['DeleteMarkers']
-
-    version_ids.append(delete_markers[0]['VersionId'])
-    assert len(version_ids) == 3
-    assert len(delete_markers) == 1
-
-    for version in versions:
-        client.delete_object(Bucket=bucket_name, Key=key, VersionId=version['VersionId'])
+    # create a delete marker
+    response = client.delete_object(Bucket=bucket_name, Key=key)
+    assert response['DeleteMarker']
+    objects += [{'Key': key, 'VersionId': response['VersionId']}]
 
-    for delete_marker in delete_markers:
-        client.delete_object(Bucket=bucket_name, Key=key, VersionId=delete_marker['VersionId'])
+    # delete all versions
+    client.delete_objects(Bucket=bucket_name, Delete={'Objects': objects})
 
     response = client.list_object_versions(Bucket=bucket_name)
     assert not 'Versions' in response
     assert not 'DeleteMarkers' in response
 
-    for version in versions:
-        client.delete_object(Bucket=bucket_name, Key=key, VersionId=version['VersionId'])
-
-    for delete_marker in delete_markers:
-        client.delete_object(Bucket=bucket_name, Key=key, VersionId=delete_marker['VersionId'])
-
     # now remove again, should all succeed due to idempotency
+    client.delete_objects(Bucket=bucket_name, Delete={'Objects': objects})
+
     response = client.list_object_versions(Bucket=bucket_name)
     assert not 'Versions' in response
     assert not 'DeleteMarkers' in response
@@ -7527,8 +7515,11 @@ def test_versioning_multi_object_delete_with_marker_create():
 
     key = 'key'
 
-    response = client.delete_object(Bucket=bucket_name, Key=key)
-    delete_marker_version_id = response['VersionId']
+    # use delete_objects() to create a delete marker
+    response = client.delete_objects(Bucket=bucket_name, Delete={'Objects': [{'Key': key}]})
+    assert len(response['Deleted']) == 1
+    assert response['Deleted'][0]['DeleteMarker']
+    delete_marker_version_id = response['Deleted'][0]['DeleteMarkerVersionId']
 
     response = client.list_object_versions(Bucket=bucket_name)
     delete_markers = response['DeleteMarkers']