forked from TrueCloudLab/frostfs-testcases
Fix for object range content tests
Signed-off-by: anikeev-yadro <a.anikeev@yadro.com>
This commit is contained in:
parent
f70dc9d648
commit
f47a9d09ec
2 changed files with 20 additions and 6 deletions
|
@ -78,6 +78,9 @@ def get_file_hash(file_path: str, len: Optional[int] = None, offset: Optional[in
|
||||||
elif len and offset:
|
elif len and offset:
|
||||||
out.seek(offset, 0)
|
out.seek(offset, 0)
|
||||||
file_hash.update(out.read(len))
|
file_hash.update(out.read(len))
|
||||||
|
elif offset and not len:
|
||||||
|
out.seek(offset, 0)
|
||||||
|
file_hash.update(out.read())
|
||||||
else:
|
else:
|
||||||
file_hash.update(out.read())
|
file_hash.update(out.read())
|
||||||
return file_hash.hexdigest()
|
return file_hash.hexdigest()
|
||||||
|
@ -133,7 +136,9 @@ def split_file(file_path: str, parts: int) -> list[str]:
|
||||||
return part_file_paths
|
return part_file_paths
|
||||||
|
|
||||||
|
|
||||||
def get_file_content(file_path: str, content_len: Optional[int] = None, mode: str = "r") -> Any:
|
def get_file_content(
|
||||||
|
file_path: str, content_len: Optional[int] = None, mode: str = "r", offset: Optional[int] = None
|
||||||
|
) -> Any:
|
||||||
"""Returns content of specified file.
|
"""Returns content of specified file.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
|
@ -141,13 +146,20 @@ def get_file_content(file_path: str, content_len: Optional[int] = None, mode: st
|
||||||
content_len: Limit of content length. If None, then entire file content is returned;
|
content_len: Limit of content length. If None, then entire file content is returned;
|
||||||
otherwise only the first content_len bytes of the content are returned.
|
otherwise only the first content_len bytes of the content are returned.
|
||||||
mode: Mode of opening the file.
|
mode: Mode of opening the file.
|
||||||
|
offset: Position to start reading from.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Content of the specified file.
|
Content of the specified file.
|
||||||
"""
|
"""
|
||||||
with open(file_path, mode) as file:
|
with open(file_path, mode) as file:
|
||||||
if content_len:
|
if content_len and not offset:
|
||||||
content = file.read(content_len)
|
content = file.read(content_len)
|
||||||
|
elif content_len and offset:
|
||||||
|
file.seek(offset, 0)
|
||||||
|
content = file.read(content_len)
|
||||||
|
elif offset and not content_len:
|
||||||
|
file.seek(offset, 0)
|
||||||
|
content = file.read()
|
||||||
else:
|
else:
|
||||||
content = file.read()
|
content = file.read()
|
||||||
|
|
||||||
|
|
|
@ -45,8 +45,9 @@ def test_object_api(prepare_wallet_and_deposit, client_shell, request, object_si
|
||||||
file_usr_header = {"key1": 1, "key2": "abc", "common_key": "common_value"}
|
file_usr_header = {"key1": 1, "key2": "abc", "common_key": "common_value"}
|
||||||
file_usr_header_oth = {"key1": 2, "common_key": "common_value"}
|
file_usr_header_oth = {"key1": 2, "common_key": "common_value"}
|
||||||
common_header = {"common_key": "common_value"}
|
common_header = {"common_key": "common_value"}
|
||||||
|
range_offset = 0
|
||||||
range_len = 10
|
range_len = 10
|
||||||
range_cut = f"0:{range_len}"
|
range_cut = f"{range_offset}:{range_len}"
|
||||||
file_path = generate_file(object_size)
|
file_path = generate_file(object_size)
|
||||||
file_hash = get_file_hash(file_path)
|
file_hash = get_file_hash(file_path)
|
||||||
|
|
||||||
|
@ -98,21 +99,22 @@ def test_object_api(prepare_wallet_and_deposit, client_shell, request, object_si
|
||||||
**wallet_cid, oid=oids[0], shell=client_shell, range_cut=range_cut
|
**wallet_cid, oid=oids[0], shell=client_shell, range_cut=range_cut
|
||||||
)
|
)
|
||||||
assert (
|
assert (
|
||||||
get_file_hash(file_path, range_len) == range_hash
|
get_file_hash(file_path, range_len, range_offset) == range_hash
|
||||||
), f"Expected range hash to match {range_cut} slice of file payload"
|
), f"Expected range hash to match {range_cut} slice of file payload"
|
||||||
|
|
||||||
range_hash = get_range_hash(
|
range_hash = get_range_hash(
|
||||||
**wallet_cid, oid=oids[1], shell=client_shell, range_cut=range_cut
|
**wallet_cid, oid=oids[1], shell=client_shell, range_cut=range_cut
|
||||||
)
|
)
|
||||||
assert (
|
assert (
|
||||||
get_file_hash(file_path, range_len) == range_hash
|
get_file_hash(file_path, range_len, range_offset) == range_hash
|
||||||
), f"Expected range hash to match {range_cut} slice of file payload"
|
), f"Expected range hash to match {range_cut} slice of file payload"
|
||||||
|
|
||||||
_, range_content = get_range(
|
_, range_content = get_range(
|
||||||
**wallet_cid, oid=oids[1], shell=client_shell, range_cut=range_cut
|
**wallet_cid, oid=oids[1], shell=client_shell, range_cut=range_cut
|
||||||
)
|
)
|
||||||
assert (
|
assert (
|
||||||
get_file_content(file_path, content_len=range_len, mode="rb") == range_content
|
get_file_content(file_path, content_len=range_len, mode="rb", offset=range_offset)
|
||||||
|
== range_content
|
||||||
), f"Expected range content to match {range_cut} slice of file payload"
|
), f"Expected range content to match {range_cut} slice of file payload"
|
||||||
|
|
||||||
with allure.step("Search objects"):
|
with allure.step("Search objects"):
|
||||||
|
|
Loading…
Reference in a new issue