Add pilorama loss test cases, marked as skipped #45
1 changed files with 55 additions and 0 deletions
|
@ -445,3 +445,58 @@ class TestEmptyMap(ClusterTestBase):
|
|||
|
||||
with allure.step("Delete bucket"):
|
||||
s3_client.delete_bucket(bucket)
|
||||
|
||||
@pytest.mark.skip(reason="Need to increase cache lifetime")
|
||||
@pytest.mark.parametrize(
|
||||
# versioning should NOT be VersioningStatus.SUSPENDED, it needs to be undefined
|
||||
"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"):
|
||||
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)
|
||||
|
|
Loading…
Reference in a new issue