Changes for object size usage
Signed-off-by: Andrey Berezin <a.berezin@yadro.com>
This commit is contained in:
parent
05b5f7d133
commit
6449264dcf
29 changed files with 425 additions and 302 deletions
|
@ -11,6 +11,7 @@ from frostfs_testlib.resources.common import ASSETS_DIR, DEFAULT_WALLET_PASS
|
|||
from frostfs_testlib.resources.error_patterns import S3_MALFORMED_XML_REQUEST
|
||||
from frostfs_testlib.s3 import AwsCliClient, Boto3ClientWrapper, S3ClientWrapper, VersioningStatus
|
||||
from frostfs_testlib.steps.s3 import s3_helper
|
||||
from frostfs_testlib.storage.dataclasses.object_size import ObjectSize
|
||||
from frostfs_testlib.testing.test_control import expect_not_raises
|
||||
from frostfs_testlib.utils import wallet_utils
|
||||
from frostfs_testlib.utils.file_utils import (
|
||||
|
@ -68,9 +69,12 @@ class TestS3GateObject:
|
|||
|
||||
@allure.title("Test S3: Copy object")
|
||||
def test_s3_copy_object(
|
||||
self, s3_client: S3ClientWrapper, two_buckets: tuple[str, str], simple_object_size: int
|
||||
self,
|
||||
s3_client: S3ClientWrapper,
|
||||
two_buckets: tuple[str, str],
|
||||
simple_object_size: ObjectSize,
|
||||
):
|
||||
file_path = generate_file(simple_object_size)
|
||||
file_path = generate_file(simple_object_size.value)
|
||||
file_name = s3_helper.object_key_from_file_path(file_path)
|
||||
bucket_1_objects = [file_name]
|
||||
|
||||
|
@ -121,10 +125,15 @@ class TestS3GateObject:
|
|||
|
||||
@allure.title("Test S3: Copy version of object")
|
||||
def test_s3_copy_version_object(
|
||||
self, s3_client: S3ClientWrapper, two_buckets: tuple[str, str], simple_object_size: int
|
||||
self,
|
||||
s3_client: S3ClientWrapper,
|
||||
two_buckets: tuple[str, str],
|
||||
simple_object_size: ObjectSize,
|
||||
):
|
||||
version_1_content = "Version 1"
|
||||
file_name_simple = generate_file_with_content(simple_object_size, content=version_1_content)
|
||||
file_name_simple = generate_file_with_content(
|
||||
simple_object_size.value, content=version_1_content
|
||||
)
|
||||
obj_key = os.path.basename(file_name_simple)
|
||||
|
||||
bucket_1, bucket_2 = two_buckets
|
||||
|
@ -162,9 +171,13 @@ class TestS3GateObject:
|
|||
s3_client.copy_object(bucket_1, obj_key)
|
||||
|
||||
@allure.title("Test S3: Checking copy with acl")
|
||||
def test_s3_copy_acl(self, s3_client: S3ClientWrapper, bucket: str, simple_object_size: int):
|
||||
def test_s3_copy_acl(
|
||||
self, s3_client: S3ClientWrapper, bucket: str, simple_object_size: ObjectSize
|
||||
):
|
||||
version_1_content = "Version 1"
|
||||
file_name_simple = generate_file_with_content(simple_object_size, content=version_1_content)
|
||||
file_name_simple = generate_file_with_content(
|
||||
simple_object_size.value, content=version_1_content
|
||||
)
|
||||
obj_key = os.path.basename(file_name_simple)
|
||||
|
||||
s3_helper.set_bucket_versioning(s3_client, bucket, VersioningStatus.ENABLED)
|
||||
|
@ -180,10 +193,10 @@ class TestS3GateObject:
|
|||
|
||||
@allure.title("Test S3: Copy object with metadata")
|
||||
def test_s3_copy_metadate(
|
||||
self, s3_client: S3ClientWrapper, bucket: str, simple_object_size: int
|
||||
self, s3_client: S3ClientWrapper, bucket: str, simple_object_size: ObjectSize
|
||||
):
|
||||
object_metadata = {f"{uuid.uuid4()}": f"{uuid.uuid4()}"}
|
||||
file_path = generate_file(simple_object_size)
|
||||
file_path = generate_file(simple_object_size.value)
|
||||
file_name = s3_helper.object_key_from_file_path(file_path)
|
||||
bucket_1_objects = [file_name]
|
||||
|
||||
|
@ -227,10 +240,10 @@ class TestS3GateObject:
|
|||
|
||||
@allure.title("Test S3: Copy object with tagging")
|
||||
def test_s3_copy_tagging(
|
||||
self, s3_client: S3ClientWrapper, bucket: str, simple_object_size: int
|
||||
self, s3_client: S3ClientWrapper, bucket: str, simple_object_size: ObjectSize
|
||||
):
|
||||
object_tagging = [(f"{uuid.uuid4()}", f"{uuid.uuid4()}")]
|
||||
file_path = generate_file(simple_object_size)
|
||||
file_path = generate_file(simple_object_size.value)
|
||||
file_name_simple = s3_helper.object_key_from_file_path(file_path)
|
||||
bucket_1_objects = [file_name_simple]
|
||||
|
||||
|
@ -281,12 +294,14 @@ class TestS3GateObject:
|
|||
self,
|
||||
s3_client: S3ClientWrapper,
|
||||
bucket: str,
|
||||
simple_object_size: int,
|
||||
complex_object_size: int,
|
||||
simple_object_size: ObjectSize,
|
||||
complex_object_size: ObjectSize,
|
||||
):
|
||||
version_1_content = "Version 1"
|
||||
version_2_content = "Version 2"
|
||||
file_name_simple = generate_file_with_content(simple_object_size, content=version_1_content)
|
||||
file_name_simple = generate_file_with_content(
|
||||
simple_object_size.value, content=version_1_content
|
||||
)
|
||||
|
||||
obj_key = os.path.basename(file_name_simple)
|
||||
s3_helper.set_bucket_versioning(s3_client, bucket, VersioningStatus.ENABLED)
|
||||
|
@ -294,7 +309,7 @@ class TestS3GateObject:
|
|||
with allure.step("Put several versions of object into bucket"):
|
||||
version_id_1 = s3_client.put_object(bucket, file_name_simple)
|
||||
file_name_1 = generate_file_with_content(
|
||||
simple_object_size, file_path=file_name_simple, content=version_2_content
|
||||
simple_object_size.value, file_path=file_name_simple, content=version_2_content
|
||||
)
|
||||
version_id_2 = s3_client.put_object(bucket, file_name_1)
|
||||
|
||||
|
@ -327,7 +342,7 @@ class TestS3GateObject:
|
|||
assert "DeleteMarker" not in delete_obj.keys(), "Delete markers should not be created"
|
||||
|
||||
with allure.step("Put new object into bucket"):
|
||||
file_name_simple = generate_file(complex_object_size)
|
||||
file_name_simple = generate_file(complex_object_size.value)
|
||||
obj_key = os.path.basename(file_name_simple)
|
||||
s3_client.put_object(bucket, file_name_simple)
|
||||
|
||||
|
@ -339,13 +354,15 @@ class TestS3GateObject:
|
|||
|
||||
@allure.title("Test S3: bulk delete version of object")
|
||||
def test_s3_bulk_delete_versioning(
|
||||
self, s3_client: S3ClientWrapper, bucket: str, simple_object_size: int
|
||||
self, s3_client: S3ClientWrapper, bucket: str, simple_object_size: ObjectSize
|
||||
):
|
||||
version_1_content = "Version 1"
|
||||
version_2_content = "Version 2"
|
||||
version_3_content = "Version 3"
|
||||
version_4_content = "Version 4"
|
||||
file_name_1 = generate_file_with_content(simple_object_size, content=version_1_content)
|
||||
file_name_1 = generate_file_with_content(
|
||||
simple_object_size.value, content=version_1_content
|
||||
)
|
||||
|
||||
obj_key = os.path.basename(file_name_1)
|
||||
s3_helper.set_bucket_versioning(s3_client, bucket, VersioningStatus.ENABLED)
|
||||
|
@ -353,15 +370,15 @@ class TestS3GateObject:
|
|||
with allure.step("Put several versions of object into bucket"):
|
||||
version_id_1 = s3_client.put_object(bucket, file_name_1)
|
||||
file_name_2 = generate_file_with_content(
|
||||
simple_object_size, file_path=file_name_1, content=version_2_content
|
||||
simple_object_size.value, file_path=file_name_1, content=version_2_content
|
||||
)
|
||||
version_id_2 = s3_client.put_object(bucket, file_name_2)
|
||||
file_name_3 = generate_file_with_content(
|
||||
simple_object_size, file_path=file_name_1, content=version_3_content
|
||||
simple_object_size.value, file_path=file_name_1, content=version_3_content
|
||||
)
|
||||
version_id_3 = s3_client.put_object(bucket, file_name_3)
|
||||
file_name_4 = generate_file_with_content(
|
||||
simple_object_size, file_path=file_name_1, content=version_4_content
|
||||
simple_object_size.value, file_path=file_name_1, content=version_4_content
|
||||
)
|
||||
version_id_4 = s3_client.put_object(bucket, file_name_4)
|
||||
version_ids = {version_id_1, version_id_2, version_id_3, version_id_4}
|
||||
|
@ -392,18 +409,20 @@ class TestS3GateObject:
|
|||
|
||||
@allure.title("Test S3: Get versions of object")
|
||||
def test_s3_get_versioning(
|
||||
self, s3_client: S3ClientWrapper, bucket: str, simple_object_size: int
|
||||
self, s3_client: S3ClientWrapper, bucket: str, simple_object_size: ObjectSize
|
||||
):
|
||||
version_1_content = "Version 1"
|
||||
version_2_content = "Version 2"
|
||||
file_name_simple = generate_file_with_content(simple_object_size, content=version_1_content)
|
||||
file_name_simple = generate_file_with_content(
|
||||
simple_object_size.value, content=version_1_content
|
||||
)
|
||||
|
||||
obj_key = os.path.basename(file_name_simple)
|
||||
s3_helper.set_bucket_versioning(s3_client, bucket, VersioningStatus.ENABLED)
|
||||
with allure.step("Put several versions of object into bucket"):
|
||||
version_id_1 = s3_client.put_object(bucket, file_name_simple)
|
||||
file_name_1 = generate_file_with_content(
|
||||
simple_object_size, file_path=file_name_simple, content=version_2_content
|
||||
simple_object_size.value, file_path=file_name_simple, content=version_2_content
|
||||
)
|
||||
version_id_2 = s3_client.put_object(bucket, file_name_1)
|
||||
|
||||
|
@ -430,16 +449,16 @@ class TestS3GateObject:
|
|||
self,
|
||||
s3_client: S3ClientWrapper,
|
||||
bucket: str,
|
||||
complex_object_size: int,
|
||||
simple_object_size: int,
|
||||
complex_object_size: ObjectSize,
|
||||
simple_object_size: ObjectSize,
|
||||
):
|
||||
file_path = generate_file(complex_object_size)
|
||||
file_path = generate_file(complex_object_size.value)
|
||||
file_name = s3_helper.object_key_from_file_path(file_path)
|
||||
file_hash = get_file_hash(file_path)
|
||||
s3_helper.set_bucket_versioning(s3_client, bucket, VersioningStatus.ENABLED)
|
||||
with allure.step("Put several versions of object into bucket"):
|
||||
version_id_1 = s3_client.put_object(bucket, file_path)
|
||||
file_name_1 = generate_file_with_content(simple_object_size, file_path=file_path)
|
||||
file_name_1 = generate_file_with_content(simple_object_size.value, file_path=file_path)
|
||||
version_id_2 = s3_client.put_object(bucket, file_name_1)
|
||||
|
||||
with allure.step("Get first version of object"):
|
||||
|
@ -447,19 +466,25 @@ class TestS3GateObject:
|
|||
bucket,
|
||||
file_name,
|
||||
version_id_1,
|
||||
object_range=[0, int(complex_object_size / 3)],
|
||||
object_range=[0, int(complex_object_size.value / 3)],
|
||||
)
|
||||
object_1_part_2 = s3_client.get_object(
|
||||
bucket,
|
||||
file_name,
|
||||
version_id_1,
|
||||
object_range=[int(complex_object_size / 3) + 1, 2 * int(complex_object_size / 3)],
|
||||
object_range=[
|
||||
int(complex_object_size.value / 3) + 1,
|
||||
2 * int(complex_object_size.value / 3),
|
||||
],
|
||||
)
|
||||
object_1_part_3 = s3_client.get_object(
|
||||
bucket,
|
||||
file_name,
|
||||
version_id_1,
|
||||
object_range=[2 * int(complex_object_size / 3) + 1, complex_object_size],
|
||||
object_range=[
|
||||
2 * int(complex_object_size.value / 3) + 1,
|
||||
complex_object_size.value,
|
||||
],
|
||||
)
|
||||
con_file = concat_files([object_1_part_1, object_1_part_2, object_1_part_3])
|
||||
assert get_file_hash(con_file) == file_hash, "Hashes must be the same"
|
||||
|
@ -469,19 +494,22 @@ class TestS3GateObject:
|
|||
bucket,
|
||||
file_name,
|
||||
version_id_2,
|
||||
object_range=[0, int(simple_object_size / 3)],
|
||||
object_range=[0, int(simple_object_size.value / 3)],
|
||||
)
|
||||
object_2_part_2 = s3_client.get_object(
|
||||
bucket,
|
||||
file_name,
|
||||
version_id_2,
|
||||
object_range=[int(simple_object_size / 3) + 1, 2 * int(simple_object_size / 3)],
|
||||
object_range=[
|
||||
int(simple_object_size.value / 3) + 1,
|
||||
2 * int(simple_object_size.value / 3),
|
||||
],
|
||||
)
|
||||
object_2_part_3 = s3_client.get_object(
|
||||
bucket,
|
||||
file_name,
|
||||
version_id_2,
|
||||
object_range=[2 * int(simple_object_size / 3) + 1, simple_object_size],
|
||||
object_range=[2 * int(simple_object_size.value / 3) + 1, simple_object_size.value],
|
||||
)
|
||||
con_file_1 = concat_files([object_2_part_1, object_2_part_2, object_2_part_3])
|
||||
assert get_file_hash(con_file_1) == get_file_hash(
|
||||
|
@ -490,17 +518,20 @@ class TestS3GateObject:
|
|||
|
||||
with allure.step("Get object"):
|
||||
object_3_part_1 = s3_client.get_object(
|
||||
bucket, file_name, object_range=[0, int(simple_object_size / 3)]
|
||||
bucket, file_name, object_range=[0, int(simple_object_size.value / 3)]
|
||||
)
|
||||
object_3_part_2 = s3_client.get_object(
|
||||
bucket,
|
||||
file_name,
|
||||
object_range=[int(simple_object_size / 3) + 1, 2 * int(simple_object_size / 3)],
|
||||
object_range=[
|
||||
int(simple_object_size.value / 3) + 1,
|
||||
2 * int(simple_object_size.value / 3),
|
||||
],
|
||||
)
|
||||
object_3_part_3 = s3_client.get_object(
|
||||
bucket,
|
||||
file_name,
|
||||
object_range=[2 * int(simple_object_size / 3) + 1, simple_object_size],
|
||||
object_range=[2 * int(simple_object_size.value / 3) + 1, simple_object_size.value],
|
||||
)
|
||||
con_file = concat_files([object_3_part_1, object_3_part_2, object_3_part_3])
|
||||
assert get_file_hash(con_file) == get_file_hash(file_name_1), "Hashes must be the same"
|
||||
|
@ -540,17 +571,17 @@ class TestS3GateObject:
|
|||
self,
|
||||
s3_client: S3ClientWrapper,
|
||||
bucket: str,
|
||||
complex_object_size: int,
|
||||
simple_object_size: int,
|
||||
complex_object_size: ObjectSize,
|
||||
simple_object_size: ObjectSize,
|
||||
):
|
||||
object_metadata = {f"{uuid.uuid4()}": f"{uuid.uuid4()}"}
|
||||
file_path = generate_file(complex_object_size)
|
||||
file_path = generate_file(complex_object_size.value)
|
||||
file_name = s3_helper.object_key_from_file_path(file_path)
|
||||
s3_helper.set_bucket_versioning(s3_client, bucket, VersioningStatus.ENABLED)
|
||||
|
||||
with allure.step("Put several versions of object into bucket"):
|
||||
version_id_1 = s3_client.put_object(bucket, file_path, metadata=object_metadata)
|
||||
file_name_1 = generate_file_with_content(simple_object_size, file_path=file_path)
|
||||
file_name_1 = generate_file_with_content(simple_object_size.value, file_path=file_path)
|
||||
version_id_2 = s3_client.put_object(bucket, file_name_1)
|
||||
|
||||
with allure.step("Get head of first version of object"):
|
||||
|
@ -578,11 +609,15 @@ class TestS3GateObject:
|
|||
@allure.title("Test S3: list of object with versions")
|
||||
@pytest.mark.parametrize("list_type", ["v1", "v2"])
|
||||
def test_s3_list_object(
|
||||
self, s3_client: S3ClientWrapper, list_type: str, bucket: str, complex_object_size: int
|
||||
self,
|
||||
s3_client: S3ClientWrapper,
|
||||
list_type: str,
|
||||
bucket: str,
|
||||
complex_object_size: ObjectSize,
|
||||
):
|
||||
file_path_1 = generate_file(complex_object_size)
|
||||
file_path_1 = generate_file(complex_object_size.value)
|
||||
file_name = s3_helper.object_key_from_file_path(file_path_1)
|
||||
file_path_2 = generate_file(complex_object_size)
|
||||
file_path_2 = generate_file(complex_object_size.value)
|
||||
file_name_2 = s3_helper.object_key_from_file_path(file_path_2)
|
||||
|
||||
s3_helper.set_bucket_versioning(s3_client, bucket, VersioningStatus.ENABLED)
|
||||
|
@ -618,10 +653,10 @@ class TestS3GateObject:
|
|||
self,
|
||||
s3_client: S3ClientWrapper,
|
||||
bucket: str,
|
||||
complex_object_size: int,
|
||||
simple_object_size: int,
|
||||
complex_object_size: ObjectSize,
|
||||
simple_object_size: ObjectSize,
|
||||
):
|
||||
file_path_1 = generate_file(complex_object_size)
|
||||
file_path_1 = generate_file(complex_object_size.value)
|
||||
file_name = s3_helper.object_key_from_file_path(file_path_1)
|
||||
object_1_metadata = {f"{uuid.uuid4()}": f"{uuid.uuid4()}"}
|
||||
tag_key_1 = "tag1"
|
||||
|
@ -644,7 +679,9 @@ class TestS3GateObject:
|
|||
], "Tags must be the same"
|
||||
|
||||
with allure.step("Rewrite file into bucket"):
|
||||
file_path_2 = generate_file_with_content(simple_object_size, file_path=file_path_1)
|
||||
file_path_2 = generate_file_with_content(
|
||||
simple_object_size.value, file_path=file_path_1
|
||||
)
|
||||
s3_client.put_object(bucket, file_path_2, metadata=object_2_metadata, tagging=tag_2)
|
||||
obj_head = s3_client.head_object(bucket, file_name)
|
||||
assert obj_head.get("Metadata") == object_2_metadata, "Metadata must be the same"
|
||||
|
@ -656,7 +693,7 @@ class TestS3GateObject:
|
|||
|
||||
s3_helper.set_bucket_versioning(s3_client, bucket, VersioningStatus.ENABLED)
|
||||
|
||||
file_path_3 = generate_file(complex_object_size)
|
||||
file_path_3 = generate_file(complex_object_size.value)
|
||||
file_hash = get_file_hash(file_path_3)
|
||||
file_name_3 = s3_helper.object_key_from_file_path(file_path_3)
|
||||
object_3_metadata = {f"{uuid.uuid4()}": f"{uuid.uuid4()}"}
|
||||
|
@ -677,7 +714,9 @@ class TestS3GateObject:
|
|||
], "Tags must be the same"
|
||||
|
||||
with allure.step("Put new version of file into bucket"):
|
||||
file_path_4 = generate_file_with_content(simple_object_size, file_path=file_path_3)
|
||||
file_path_4 = generate_file_with_content(
|
||||
simple_object_size.value, file_path=file_path_3
|
||||
)
|
||||
version_id_2 = s3_client.put_object(bucket, file_path_4)
|
||||
versions = s3_client.list_objects_versions(bucket)
|
||||
obj_versions = {
|
||||
|
@ -722,11 +761,11 @@ class TestS3GateObject:
|
|||
s3_client: S3ClientWrapper,
|
||||
bucket_versioning: Literal["ENABLED", "SUSPENDED"],
|
||||
bucket: str,
|
||||
complex_object_size: int,
|
||||
simple_object_size: int,
|
||||
complex_object_size: ObjectSize,
|
||||
simple_object_size: ObjectSize,
|
||||
second_wallet_public_key: str,
|
||||
):
|
||||
file_path_1 = generate_file(complex_object_size)
|
||||
file_path_1 = generate_file(complex_object_size.value)
|
||||
file_name = s3_helper.object_key_from_file_path(file_path_1)
|
||||
if bucket_versioning == "ENABLED":
|
||||
status = VersioningStatus.ENABLED
|
||||
|
@ -742,7 +781,9 @@ class TestS3GateObject:
|
|||
assert get_file_hash(file_path_1) == get_file_hash(object_1), "Hashes must be the same"
|
||||
|
||||
with allure.step("Put object with acl public-read"):
|
||||
file_path_2 = generate_file_with_content(simple_object_size, file_path=file_path_1)
|
||||
file_path_2 = generate_file_with_content(
|
||||
simple_object_size.value, file_path=file_path_1
|
||||
)
|
||||
s3_client.put_object(bucket, file_path_2, acl="public-read")
|
||||
obj_acl = s3_client.get_object_acl(bucket, file_name)
|
||||
s3_helper.assert_s3_acl(acl_grants=obj_acl, permitted_users="AllUsers")
|
||||
|
@ -750,7 +791,9 @@ class TestS3GateObject:
|
|||
assert get_file_hash(file_path_2) == get_file_hash(object_2), "Hashes must be the same"
|
||||
|
||||
with allure.step("Put object with acl public-read-write"):
|
||||
file_path_3 = generate_file_with_content(simple_object_size, file_path=file_path_1)
|
||||
file_path_3 = generate_file_with_content(
|
||||
simple_object_size.value, file_path=file_path_1
|
||||
)
|
||||
s3_client.put_object(bucket, file_path_3, acl="public-read-write")
|
||||
obj_acl = s3_client.get_object_acl(bucket, file_name)
|
||||
s3_helper.assert_s3_acl(acl_grants=obj_acl, permitted_users="AllUsers")
|
||||
|
@ -758,18 +801,20 @@ class TestS3GateObject:
|
|||
assert get_file_hash(file_path_3) == get_file_hash(object_3), "Hashes must be the same"
|
||||
|
||||
with allure.step("Put object with acl authenticated-read"):
|
||||
file_path_4 = generate_file_with_content(simple_object_size, file_path=file_path_1)
|
||||
file_path_4 = generate_file_with_content(
|
||||
simple_object_size.value, file_path=file_path_1
|
||||
)
|
||||
s3_client.put_object(bucket, file_path_4, acl="authenticated-read")
|
||||
obj_acl = s3_client.get_object_acl(bucket, file_name)
|
||||
s3_helper.assert_s3_acl(acl_grants=obj_acl, permitted_users="AllUsers")
|
||||
object_4 = s3_client.get_object(bucket, file_name)
|
||||
assert get_file_hash(file_path_4) == get_file_hash(object_4), "Hashes must be the same"
|
||||
|
||||
file_path_5 = generate_file(complex_object_size)
|
||||
file_path_5 = generate_file(complex_object_size.value)
|
||||
file_name_5 = s3_helper.object_key_from_file_path(file_path_5)
|
||||
|
||||
with allure.step("Put object with --grant-full-control id=mycanonicaluserid"):
|
||||
generate_file_with_content(simple_object_size, file_path=file_path_5)
|
||||
generate_file_with_content(simple_object_size.value, file_path=file_path_5)
|
||||
s3_client.put_object(
|
||||
bucket,
|
||||
file_path_5,
|
||||
|
@ -783,7 +828,7 @@ class TestS3GateObject:
|
|||
with allure.step(
|
||||
"Put object with --grant-read uri=http://acs.amazonaws.com/groups/global/AllUsers"
|
||||
):
|
||||
generate_file_with_content(simple_object_size, file_path=file_path_5)
|
||||
generate_file_with_content(simple_object_size.value, file_path=file_path_5)
|
||||
s3_client.put_object(
|
||||
bucket,
|
||||
file_path_5,
|
||||
|
@ -796,10 +841,13 @@ class TestS3GateObject:
|
|||
|
||||
@allure.title("Test S3: put object with lock-mode")
|
||||
def test_s3_put_object_lock_mode(
|
||||
self, s3_client: S3ClientWrapper, complex_object_size: int, simple_object_size: int
|
||||
self,
|
||||
s3_client: S3ClientWrapper,
|
||||
complex_object_size: ObjectSize,
|
||||
simple_object_size: ObjectSize,
|
||||
):
|
||||
|
||||
file_path_1 = generate_file(complex_object_size)
|
||||
file_path_1 = generate_file(complex_object_size.value)
|
||||
file_name = s3_helper.object_key_from_file_path(file_path_1)
|
||||
bucket = s3_client.create_bucket(object_lock_enabled_for_bucket=True)
|
||||
s3_helper.set_bucket_versioning(s3_client, bucket, VersioningStatus.ENABLED)
|
||||
|
@ -823,7 +871,7 @@ class TestS3GateObject:
|
|||
"Put new version of object with [--object-lock-mode COMPLIANCE] и [--object-lock-retain-until-date +3days]"
|
||||
):
|
||||
date_obj = datetime.utcnow() + timedelta(days=2)
|
||||
generate_file_with_content(simple_object_size, file_path=file_path_1)
|
||||
generate_file_with_content(simple_object_size.value, file_path=file_path_1)
|
||||
s3_client.put_object(
|
||||
bucket,
|
||||
file_path_1,
|
||||
|
@ -838,7 +886,7 @@ class TestS3GateObject:
|
|||
"Put new version of object with [--object-lock-mode COMPLIANCE] и [--object-lock-retain-until-date +2days]"
|
||||
):
|
||||
date_obj = datetime.utcnow() + timedelta(days=3)
|
||||
generate_file_with_content(simple_object_size, file_path=file_path_1)
|
||||
generate_file_with_content(simple_object_size.value, file_path=file_path_1)
|
||||
s3_client.put_object(
|
||||
bucket,
|
||||
file_path_1,
|
||||
|
@ -879,7 +927,7 @@ class TestS3GateObject:
|
|||
s3_client: S3ClientWrapper,
|
||||
sync_type: Literal["sync", "cp"],
|
||||
bucket: str,
|
||||
simple_object_size: int,
|
||||
simple_object_size: ObjectSize,
|
||||
):
|
||||
file_path_1 = os.path.join(os.getcwd(), ASSETS_DIR, "test_sync", "test_file_1")
|
||||
file_path_2 = os.path.join(os.getcwd(), ASSETS_DIR, "test_sync", "test_file_2")
|
||||
|
@ -889,8 +937,8 @@ class TestS3GateObject:
|
|||
if not isinstance(s3_client, AwsCliClient):
|
||||
pytest.skip("This test is not supported with boto3 client")
|
||||
|
||||
generate_file_with_content(simple_object_size, file_path=file_path_1)
|
||||
generate_file_with_content(simple_object_size, file_path=file_path_2)
|
||||
generate_file_with_content(simple_object_size.value, file_path=file_path_1)
|
||||
generate_file_with_content(simple_object_size.value, file_path=file_path_2)
|
||||
s3_helper.set_bucket_versioning(s3_client, bucket, VersioningStatus.ENABLED)
|
||||
# TODO: return ACL, when https://github.com/nspcc-dev/neofs-s3-gw/issues/685 will be closed
|
||||
if sync_type == "sync":
|
||||
|
@ -930,11 +978,15 @@ class TestS3GateObject:
|
|||
|
||||
@allure.title("Test S3 Put 10 nested level object")
|
||||
def test_s3_put_10_folder(
|
||||
self, s3_client: S3ClientWrapper, bucket: str, temp_directory, simple_object_size: int
|
||||
self,
|
||||
s3_client: S3ClientWrapper,
|
||||
bucket: str,
|
||||
temp_directory,
|
||||
simple_object_size: ObjectSize,
|
||||
):
|
||||
path = "/".join(["".join(choices(string.ascii_letters, k=3)) for _ in range(10)])
|
||||
file_path_1 = os.path.join(temp_directory, path, "test_file_1")
|
||||
generate_file_with_content(simple_object_size, file_path=file_path_1)
|
||||
generate_file_with_content(simple_object_size.value, file_path=file_path_1)
|
||||
file_name = s3_helper.object_key_from_file_path(file_path_1)
|
||||
objects_list = s3_client.list_objects(bucket)
|
||||
assert not objects_list, f"Expected empty bucket, got {objects_list}"
|
||||
|
@ -962,14 +1014,14 @@ class TestS3GateObject:
|
|||
|
||||
@allure.title("Test S3: Delete the same object twice")
|
||||
def test_s3_delete_twice(
|
||||
self, s3_client: S3ClientWrapper, bucket: str, simple_object_size: int
|
||||
self, s3_client: S3ClientWrapper, bucket: str, simple_object_size: ObjectSize
|
||||
):
|
||||
s3_helper.set_bucket_versioning(s3_client, bucket, VersioningStatus.ENABLED)
|
||||
objects_list = s3_client.list_objects(bucket)
|
||||
with allure.step("Check that bucket is empty"):
|
||||
assert not objects_list, f"Expected empty bucket, got {objects_list}"
|
||||
|
||||
file_path = generate_file(simple_object_size)
|
||||
file_path = generate_file(simple_object_size.value)
|
||||
file_name = s3_helper.object_key_from_file_path(file_path)
|
||||
|
||||
with allure.step("Put object into one bucket"):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue