Skip to content

Commit 060b445

Browse files
Optimize operation-name builder for oversized inputs
Co-authored-by: Shri Sukhani <shrisukhani@users.noreply.github.com>
1 parent 444e3d0 commit 060b445

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

hyperbrowser/client/polling.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,11 @@ def build_operation_name(prefix: object, identifier: object) -> str:
9292
for character in normalized_identifier
9393
)
9494

95-
operation_name = f"{normalized_prefix}{normalized_identifier}".strip()
96-
if not operation_name:
97-
operation_name = "operation"
98-
if len(operation_name) <= _MAX_OPERATION_NAME_LENGTH:
95+
combined_length = len(normalized_prefix) + len(normalized_identifier)
96+
if combined_length <= _MAX_OPERATION_NAME_LENGTH:
97+
operation_name = f"{normalized_prefix}{normalized_identifier}".strip()
98+
if not operation_name:
99+
return "operation"
99100
return operation_name
100101
available_identifier_length = (
101102
_MAX_OPERATION_NAME_LENGTH

tests/test_polling.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,13 @@ def test_build_fetch_operation_name_sanitizes_non_string_and_control_input():
6060
assert numeric_operation_name == "Fetching 123"
6161

6262

63+
def test_build_fetch_operation_name_bounds_very_large_operation_names():
64+
operation_name = build_fetch_operation_name("x" * 10000)
65+
66+
assert operation_name.endswith("...")
67+
assert len(operation_name) == 200
68+
69+
6370
def test_build_fetch_operation_name_handles_unstringifiable_input():
6471
class _BadOperationName:
6572
def __str__(self) -> str:
@@ -81,6 +88,14 @@ def test_build_operation_name_truncates_long_identifiers():
8188
assert len(operation_name) == 200
8289

8390

91+
def test_build_operation_name_handles_very_large_identifier_inputs():
92+
operation_name = build_operation_name("crawl job ", "x" * 10000)
93+
94+
assert operation_name.startswith("crawl job ")
95+
assert operation_name.endswith("...")
96+
assert len(operation_name) == 200
97+
98+
8499
def test_build_operation_name_truncates_overlong_prefixes():
85100
long_prefix = "p" * 250
86101
operation_name = build_operation_name(long_prefix, "identifier")

0 commit comments

Comments
 (0)