Add pilorama loss test cases, marked as skipped #45

Merged
ylukoyan merged 1 commit from ylukoyan/frostfs-testcases:tree_loss into master 2023-05-25 08:21:07 +00:00

View file

@ -445,3 +445,58 @@ class TestEmptyMap(ClusterTestBase):
with allure.step("Delete bucket"): with allure.step("Delete bucket"):
s3_client.delete_bucket(bucket) s3_client.delete_bucket(bucket)
@pytest.mark.skip(reason="Need to increase cache lifetime")
abereziny marked this conversation as resolved Outdated

Do not include internal information to public repos. (OBJECT-xxx)

Do not include internal information to public repos. (OBJECT-xxx)
@pytest.mark.parametrize(
abereziny marked this conversation as resolved Outdated

Let's get away from common test titles and be more specific.

@allure.title("After Pilorama.db loss on all nodes list objects should return nothing")

Let's get away from common test titles and be more specific. @allure.title("After Pilorama.db loss on all nodes list objects should return nothing")
# versioning should NOT be VersioningStatus.SUSPENDED, it needs to be undefined
abereziny marked this conversation as resolved Outdated

simple_object_size: int

`simple_object_size: int`
"versioning_status",
[VersioningStatus.ENABLED, None],
)
@allure.title(
"After Pilorama.db loss on all nodes list objects should return nothing in second listing"
)
def test_s3_pilorama_loss(
self,
s3_client: S3ClientWrapper,
simple_object_size: int,
versioning_status: VersioningStatus,
):
bucket = s3_client.create_bucket()
if versioning_status:
s3_helper.set_bucket_versioning(s3_client, bucket, versioning_status)
file_path = generate_file(simple_object_size)
file_name = s3_helper.object_key_from_file_path(file_path)
with allure.step("Put object into one bucket"):
s3_client.put_object(bucket, file_path)
s3_helper.check_objects_in_bucket(s3_client, bucket, expected_objects=[file_name])
with allure.step("Stop all storage nodes"):
for node in self.cluster.storage_nodes:
with allure.step(f"Stop storage service on node: {node}"):
node.stop_service()
stopped_nodes.append(node)
with allure.step("Delete pilorama.db from all nodes"):
for node in self.cluster.storage_nodes:
node.delete_pilorama()
with allure.step("Start all storage nodes"):
for node in list(stopped_nodes):
with allure.step(f"Start node {node}"):
node.start_service()
stopped_nodes.remove(node)
with allure.step(f"Waiting status ready for node {node}"):
wait_for_node_to_be_ready(node)
with allure.step("Check list objects first time"):
abereziny marked this conversation as resolved Outdated

This is a copy-pasta cases with 1 single diff.
Please make it to be one test case with param.

Smth like this

def test_s3_pilorama_loss(self, s3_client: S3ClientWrapper, simple_object_size: int, versioning_status: VersioningStatus):
    <...>
    s3_helper.set_bucket_versioning(s3_client, bucket, versioning_status)
This is a copy-pasta cases with 1 single diff. Please make it to be one test case with param. Smth like this ``` def test_s3_pilorama_loss(self, s3_client: S3ClientWrapper, simple_object_size: int, versioning_status: VersioningStatus): <...> s3_helper.set_bucket_versioning(s3_client, bucket, versioning_status) ```
objects_list = s3_client.list_objects(bucket)
assert objects_list, f"Expected not empty bucket"
with allure.step("Check list objects second time"):
objects_list = s3_client.list_objects(bucket)
assert not objects_list, f"Expected empty bucket, got {objects_list}"
with allure.step("Delete bucket"):
s3_client.delete_bucket(bucket)