forked from TrueCloudLab/frostfs-testlib
63 lines
2.1 KiB
Python
63 lines
2.1 KiB
Python
import logging
|
|
from time import sleep
|
|
|
|
import pytest
|
|
|
|
from frostfs_testlib.reporter import get_reporter
|
|
from frostfs_testlib.resources.error_patterns import OBJECT_ALREADY_REMOVED
|
|
from frostfs_testlib.shell import Shell
|
|
from frostfs_testlib.steps.cli.object import delete_object, get_object
|
|
from frostfs_testlib.steps.epoch import tick_epoch
|
|
from frostfs_testlib.steps.tombstone import verify_head_tombstone
|
|
from frostfs_testlib.storage.cluster import Cluster
|
|
from frostfs_testlib.storage.dataclasses.storage_object_info import StorageObjectInfo
|
|
|
|
reporter = get_reporter()
|
|
logger = logging.getLogger("NeoLogger")
|
|
|
|
CLEANUP_TIMEOUT = 10
|
|
|
|
|
|
@reporter.step_deco("Delete Objects")
|
|
def delete_objects(
|
|
storage_objects: list[StorageObjectInfo], shell: Shell, cluster: Cluster
|
|
) -> None:
|
|
"""
|
|
Deletes given storage objects.
|
|
|
|
Args:
|
|
storage_objects: list of objects to delete
|
|
shell: executor for cli command
|
|
"""
|
|
|
|
with reporter.step("Delete objects"):
|
|
for storage_object in storage_objects:
|
|
storage_object.tombstone = delete_object(
|
|
storage_object.wallet_file_path,
|
|
storage_object.cid,
|
|
storage_object.oid,
|
|
shell=shell,
|
|
endpoint=cluster.default_rpc_endpoint,
|
|
)
|
|
verify_head_tombstone(
|
|
wallet_path=storage_object.wallet_file_path,
|
|
cid=storage_object.cid,
|
|
oid_ts=storage_object.tombstone,
|
|
oid=storage_object.oid,
|
|
shell=shell,
|
|
endpoint=cluster.default_rpc_endpoint,
|
|
)
|
|
|
|
tick_epoch(shell, cluster)
|
|
sleep(CLEANUP_TIMEOUT)
|
|
|
|
with reporter.step("Get objects and check errors"):
|
|
for storage_object in storage_objects:
|
|
with pytest.raises(Exception, match=OBJECT_ALREADY_REMOVED):
|
|
get_object(
|
|
storage_object.wallet_file_path,
|
|
storage_object.cid,
|
|
storage_object.oid,
|
|
shell=shell,
|
|
endpoint=cluster.default_rpc_endpoint,
|
|
)
|