Skip to content

Commit f590932

Browse files
committed
test: benchmark safe response sanitization path
Signed-off-by: lucarlig <luca.carlig@ibm.com>
1 parent 89a20b7 commit f590932

2 files changed

Lines changed: 18 additions & 6 deletions

File tree

tests/performance/test_validation_middleware_rust_benchmark.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,7 @@ def _build_python_parameter_runner(max_param_length: int, dangerous_patterns: li
9999

100100
def _run(query_params: dict[str, str]) -> None:
101101
request = _QueryRequest(query_params)
102-
middleware._validate_parameters(
103-
[("id", "123"), *list(request.query_params.items())]
104-
)
102+
middleware._validate_parameters([("id", "123"), *list(request.query_params.items())])
105103

106104
return _run
107105

@@ -116,9 +114,7 @@ def _build_rust_parameter_runner(max_param_length: int, dangerous_patterns: list
116114

117115
def _run(query_params: dict[str, str]) -> None:
118116
request = _QueryRequest(query_params)
119-
middleware._validate_parameters(
120-
[("id", "123"), *list(request.query_params.items())]
121-
)
117+
middleware._validate_parameters([("id", "123"), *list(request.query_params.items())])
122118

123119
return _run
124120

@@ -401,6 +397,16 @@ async def main() -> None:
401397
print(f"python_avg_median={python_sanitize_median:.3f}ms rust_avg_median={rust_sanitize_median:.3f}ms")
402398
print(f"speedup={python_sanitize_median / rust_sanitize_median:.2f}x")
403399

400+
print("\nresponse_sanitization_safe (1000 iterations)")
401+
python_sanitize_safe_median, rust_sanitize_safe_median = await _measure_pair(
402+
python_sanitize_fn,
403+
rust_sanitize_fn,
404+
b"plain-ascii-response-body-" * 256,
405+
1000,
406+
)
407+
print(f"python_avg_median={python_sanitize_safe_median:.3f}ms rust_avg_median={rust_sanitize_safe_median:.3f}ms")
408+
print(f"speedup={python_sanitize_safe_median / rust_sanitize_safe_median:.2f}x")
409+
404410
for name, payload, iterations in scenarios:
405411
body = orjson.dumps(payload)
406412
print(f"\n{name} ({iterations} iterations)")

tools_rust/validation_middleware_rust/src/lib.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -801,6 +801,12 @@ mod tests {
801801
assert_eq!(sanitized, b"HelloWorld");
802802
}
803803

804+
#[test]
805+
fn sanitize_response_body_keeps_safe_ascii_unchanged() {
806+
let sanitized = sanitize_response_body_bytes(b"plain-ascii-response-body");
807+
assert_eq!(sanitized, b"plain-ascii-response-body");
808+
}
809+
804810
#[test]
805811
fn validate_request_checks_parameters_before_json_body() {
806812
let validator = CompiledValidator {

0 commit comments

Comments
 (0)