hyf

Context-aware query service for Radroots
git clone https://radroots.dev/git/hyf.git
Log | Files | Refs | README | LICENSE

commit aa40f0306c534721e3fd0a7e043bb29863a4a0a8
parent adb7938c48140089b0541bd5cf44d31ae3c542e2
Author: triesap <tyson@radroots.org>
Date:   Mon, 21 Sep 2026 21:29:12 +0000

test: strict port-0 local servers and bounded reads (C002)

Diffstat:
Mpixi.toml | 2++
Mtests/jev_provider_helper.mojo | 25+++++++++++++++++++++++++
Mtests/max_local_process_helper.mojo | 78+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------
Mtests/test_provider_adapter.mojo | 10++++------
Atests/test_provider_helpers.mojo | 90+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtests/test_stdio_contract.mojo | 40++++++++++++++--------------------------
6 files changed, 200 insertions(+), 45 deletions(-)

diff --git a/pixi.toml b/pixi.toml @@ -27,6 +27,7 @@ test-runtime = "mojo -I src tests/test_runtime_paths.mojo" test-repo-local-process = "mojo -I src tests/test_repo_local_process_contract.mojo" test-stdio = "mojo -I src tests/test_stdio_contract.mojo" test-provider-adapter = "mojo -I src -I tests tests/test_provider_adapter.mojo" +test-provider-helpers = "mojo -I src -I tests tests/test_provider_helpers.mojo" test-domain = "mojo -I src -I tests tests/test_domain.mojo" test-assist = "mojo -I src -I tests tests/test_assist.mojo" test-jev = "mojo -I src -I tests tests/test_jev.mojo" @@ -62,6 +63,7 @@ test = { depends-on = [ "test-stdio-session", "test-journeys", "test-provider-adapter", + "test-provider-helpers", "test-spec", "test-architecture", "test-runtime-contract", diff --git a/tests/jev_provider_helper.mojo b/tests/jev_provider_helper.mojo @@ -90,6 +90,21 @@ def _request_path(request: String) -> String: return String(rest[byte=0:second_space]) +def _header_value(request: String, name: String) -> String: + var header_end = request.find("\r\n\r\n") + var header_block = request if header_end < 0 else String( + request[byte=0:header_end] + ) + var lowered = header_block.lower() + var marker = lowered.find(name.lower() + ":") + if marker < 0: + return "" + var rest = String(header_block[byte = marker + name.byte_length() + 1 :]) + var line_end = rest.find("\r\n") + var value = rest if line_end < 0 else String(rest[byte=0:line_end]) + return String(String(value).strip()) + + def _json_string(value: String) -> String: return '"' + value.replace("\\", "\\\\").replace('"', '\\"') + '"' @@ -135,6 +150,16 @@ def _send_raw(mut stream: TcpStream, response: String) raises: def _handle(mut stream: TcpStream, mode: String) raises: var request = _read_request(stream) var path = _request_path(request) + if mode == "echo_authorization": + _send( + stream, + 200, + '{"authorization":"' + + _header_value(request, "authorization") + + '"}', + ) + stream.close() + return if path != "/v1/systemone": _send(stream, 404, '{"error":{"message":"not found"}}') stream.close() diff --git a/tests/max_local_process_helper.mojo b/tests/max_local_process_helper.mojo @@ -44,13 +44,47 @@ def _read_pipe_line(mut pipe: Pipe) raises -> String: return output^ +comptime MAX_TEST_REQUEST_BYTES = 1048576 + + def _read_request(mut stream: TcpStream) raises -> String: - var buffer = List[UInt8]() - buffer.resize(8192, 0) - var n = stream.read(buffer.unsafe_ptr(), len(buffer)) - if n <= 0: + var bytes = List[UInt8]() + var chunk = InlineArray[Byte, 4096](fill=0) + var expected_total = -1 + while True: + var n = stream.read(chunk.unsafe_ptr(), 4096) + if n <= 0: + break + for index in range(Int(n)): + bytes.append(chunk[index]) + if len(bytes) > MAX_TEST_REQUEST_BYTES: + break + var text = String(unsafe_from_utf8=bytes[:]) + var header_end = text.find("\r\n\r\n") + if header_end >= 0 and expected_total < 0: + var lowered = text.lower() + var marker = lowered.find("content-length:") + var content_length = 0 + if marker >= 0: + var rest = String(text[byte = marker + 15 :]) + var line_end = rest.find("\r\n") + var value = rest if line_end < 0 else String( + rest[byte=0:line_end] + ) + content_length = Int(String(String(value).strip())) + expected_total = header_end + 4 + content_length + if expected_total >= 0 and len(bytes) >= expected_total: + break + if len(bytes) == 0: return "" - return String(unsafe_from_utf8=buffer[:n]) + return String(unsafe_from_utf8=bytes[:]) + + +def _request_body(request: String) -> String: + var header_end = request.find("\r\n\r\n") + if header_end < 0: + return "" + return String(request[byte = header_end + 4 :]) def _request_path(request: String) -> String: @@ -180,10 +214,20 @@ def _handle_chat_completions(mut stream: TcpStream, mode: String) raises: _send(stream, 500, '{"error":"unsupported_mode"}') -def _handle_request(mut stream: TcpStream, mode: String) raises: +def _handle_request(mut stream: TcpStream, mode: String, index: Int) raises: var request = _read_request(stream) var path = _request_path(request) - if path == "/health": + if mode == "echo_body_bytes": + _send( + stream, + 200, + '{"received_bytes":' + + String(_request_body(request).byte_length()) + + "}", + ) + elif mode == "count_requests": + _send(stream, 200, '{"request_index":' + String(index + 1) + "}") + elif path == "/health": _handle_health(stream, mode) elif path == "/v1/chat/completions": _handle_chat_completions(stream, mode) @@ -194,18 +238,21 @@ def _handle_request(mut stream: TcpStream, mode: String) raises: def _serve_max_local_stub(port: Int, mode: String, requests: Int) raises: var listener = TcpListener.bind(SocketAddr.localhost(UInt16(port))) - _write(1, "ready\n") - for _ in range(requests): + var actual_port = Int(listener.local_addr().port) + _write(1, "ready " + String(actual_port) + "\n") + for request_index in range(requests): var stream = listener.accept() - _handle_request(stream, mode) + _handle_request(stream, mode, request_index) listener.close() struct SpawnedMaxLocalStub(Movable): var pid: Int + var port: Int - def __init__(out self, pid: Int): + def __init__(out self, pid: Int, port: Int): self.pid = pid + self.port = port def wait(mut self) raises: var process = Process(self.pid) @@ -245,11 +292,16 @@ def spawn_max_local_stub( stdout_pipe.set_input_only() var ready_line = _read_pipe_line(stdout_pipe) - if ready_line != "ready": + if not ready_line.startswith("ready"): stdout_pipe.set_output_only() var process = Process(Int(pid)) _ = process.wait() raise Error("max_local stub failed to report ready") + var reported_port = port + var space = ready_line.find(" ") + if space >= 0: + reported_port = Int(String(ready_line[byte = space + 1 :])) + stdout_pipe.set_output_only() - return SpawnedMaxLocalStub(Int(pid)) + return SpawnedMaxLocalStub(Int(pid), reported_port) diff --git a/tests/test_provider_adapter.mojo b/tests/test_provider_adapter.mojo @@ -261,10 +261,10 @@ def test_max_local_transport_boundary_rejects_invalid_health_url() raises: def test_max_local_transport_boundary_reports_unknown_chat_transport() raises: - var provider_port = reserve_loopback_port() var provider_stub = spawn_max_local_stub( - provider_port, "query_rewrite_malformed_http", 1 + 0, "query_rewrite_malformed_http", 1 ) + var provider_port = provider_stub.port var outcome = post_max_local_chat_completion( _provider_config_for_port(provider_port), loads("{}") ) @@ -278,10 +278,8 @@ def test_max_local_transport_boundary_reports_unknown_chat_transport() raises: def test_max_local_transport_boundary_reports_unknown_health_transport() raises: - var provider_port = reserve_loopback_port() - var provider_stub = spawn_max_local_stub( - provider_port, "health_malformed_http", 1 - ) + var provider_stub = spawn_max_local_stub(0, "health_malformed_http", 1) + var provider_port = provider_stub.port var outcome = get_max_local_health(_provider_config_for_port(provider_port)) assert_true(outcome.failure) diff --git a/tests/test_provider_helpers.mojo b/tests/test_provider_helpers.mojo @@ -0,0 +1,90 @@ +from std.testing import TestSuite, assert_true + +from flare.net import SocketAddr +from flare.tcp import TcpStream + +from max_local_process_helper import spawn_max_local_stub +from jev_provider_helper import spawn_jev_stub_auto + + +def _client_request( + port: Int, path: String, body: String, auth: String = "" +) raises -> String: + var client = TcpStream.connect(SocketAddr.localhost(UInt16(port))) + var auth_line = "" if auth == "" else "authorization: " + auth + "\r\n" + var headers = ( + "POST " + + path + + " HTTP/1.1\r\nhost: 127.0.0.1\r\n" + + auth_line + + "content-type: application/json\r\ncontent-length: " + + String(body.byte_length()) + + "\r\nconnection: close\r\n\r\n" + ) + client.write_all(Span[UInt8, _](headers.as_bytes())) + var sent = 0 + while sent < body.byte_length(): + var end = sent + 3000 + if end > body.byte_length(): + end = body.byte_length() + client.write_all(Span[UInt8, _](body[byte=sent:end].as_bytes())) + sent = end + var buffer = InlineArray[Byte, 4096](fill=0) + var response = String("") + while True: + var n = client.read(buffer.unsafe_ptr(), 4096) + if n <= 0: + break + response += String( + unsafe_from_utf8=Span(ptr=buffer.unsafe_ptr(), length=Int(n)) + ) + client.close() + return response^ + + +def test_max_local_stub_reads_fragmented_large_body() raises: + var stub = spawn_max_local_stub(0, "echo_body_bytes", 1) + var body = String("") + for _ in range(9000): + body += "x" + var response = _client_request(stub.port, "/v1/chat/completions", body) + assert_true(response.find('"received_bytes":9000') >= 0) + stub.wait() + + +def test_max_local_stub_counts_every_wire_attempt() raises: + var requests = 3 + var stub = spawn_max_local_stub(0, "count_requests", requests) + for index in range(requests): + var response = _client_request(stub.port, "/v1/chat/completions", "{}") + assert_true(response.find('"request_index":' + String(index + 1)) >= 0) + stub.wait() + + +def test_max_local_stub_rejects_unknown_path() raises: + var stub = spawn_max_local_stub(0, "query_rewrite_ok", 1) + var response = _client_request(stub.port, "/not-a-route", "{}") + assert_true(response.find("404") >= 0) + assert_true(response.find('"not_found"') >= 0) + stub.wait() + + +def test_max_local_stub_binds_and_reports_port() raises: + var stub = spawn_max_local_stub(0, "count_requests", 1) + assert_true(stub.port > 0) + var response = _client_request(stub.port, "/v1/chat/completions", "{}") + assert_true(response.find('"request_index":1') >= 0) + stub.wait() + + +def test_jev_stub_observes_bearer_sentinel_at_intended_origin() raises: + var started = spawn_jev_stub_auto("echo_authorization", 1) + var response = _client_request( + started.port, "/v1/systemone", "{}", "Bearer hyf-sentinel-token" + ) + assert_true(response.find("Bearer hyf-sentinel-token") >= 0) + started.stub.wait() + + +def main() raises: + TestSuite.discover_tests[__functions_in_module()]().run() diff --git a/tests/test_stdio_contract.mojo b/tests/test_stdio_contract.mojo @@ -198,8 +198,8 @@ def _assert_query_rewrite_provider_fallback_with_deadline( requests: Int, ) raises: with SafeTempDir() as temp_dir: - var provider_port = reserve_loopback_port() - var provider_stub = spawn_max_local_stub(provider_port, mode, requests) + var provider_stub = spawn_max_local_stub(0, mode, requests) + var provider_port = provider_stub.port var startup_config_path = Path(temp_dir) / "explicit-hyf-config.toml" startup_config_path.write_text( _max_local_runtime_config_toml_with_urls( @@ -1001,10 +1001,8 @@ def test_status_reports_unconfigured_assisted_runtime_truthfully() raises: def test_status_reports_non_2xx_max_local_health_truthfully() raises: with SafeTempDir() as temp_dir: - var provider_port = reserve_loopback_port() - var provider_stub = spawn_max_local_stub( - provider_port, "health_non_2xx", 1 - ) + var provider_stub = spawn_max_local_stub(0, "health_non_2xx", 1) + var provider_port = provider_stub.port var startup_config_path = Path(temp_dir) / "explicit-hyf-config.toml" startup_config_path.write_text( _max_local_runtime_config_toml_with_urls( @@ -1047,10 +1045,8 @@ def test_status_reports_non_2xx_max_local_health_truthfully() raises: def test_status_reports_ready_max_local_provider_truthfully() raises: with SafeTempDir() as temp_dir: - var provider_port = reserve_loopback_port() - var provider_stub = spawn_max_local_stub( - provider_port, "query_rewrite_ok", 1 - ) + var provider_stub = spawn_max_local_stub(0, "query_rewrite_ok", 1) + var provider_port = provider_stub.port var startup_config_path = Path(temp_dir) / "explicit-hyf-config.toml" startup_config_path.write_text( _max_local_runtime_config_toml_with_urls( @@ -1135,10 +1131,8 @@ def test_status_reports_ready_max_local_provider_truthfully() raises: def test_status_bounds_max_local_health_probe_timeout() raises: with SafeTempDir() as temp_dir: - var provider_port = reserve_loopback_port() - var provider_stub = spawn_max_local_stub( - provider_port, "health_timeout", 1 - ) + var provider_stub = spawn_max_local_stub(0, "health_timeout", 1) + var provider_port = provider_stub.port var startup_config_path = Path(temp_dir) / "explicit-hyf-config.toml" startup_config_path.write_text( _max_local_runtime_config_toml_with_urls( @@ -1515,10 +1509,8 @@ def test_capabilities_reports_configured_provider_runtime_truthfully() raises: def test_capabilities_reports_ready_max_local_provider_truthfully() raises: with SafeTempDir() as temp_dir: - var provider_port = reserve_loopback_port() - var provider_stub = spawn_max_local_stub( - provider_port, "query_rewrite_ok", 1 - ) + var provider_stub = spawn_max_local_stub(0, "query_rewrite_ok", 1) + var provider_port = provider_stub.port var startup_config_path = Path(temp_dir) / "explicit-hyf-config.toml" startup_config_path.write_text( _max_local_runtime_config_toml_with_urls( @@ -1581,10 +1573,8 @@ def test_capabilities_reports_ready_max_local_provider_truthfully() raises: def test_capabilities_bounds_max_local_health_probe_timeout() raises: with SafeTempDir() as temp_dir: - var provider_port = reserve_loopback_port() - var provider_stub = spawn_max_local_stub( - provider_port, "health_timeout", 1 - ) + var provider_stub = spawn_max_local_stub(0, "health_timeout", 1) + var provider_port = provider_stub.port var startup_config_path = Path(temp_dir) / "explicit-hyf-config.toml" startup_config_path.write_text( _max_local_runtime_config_toml_with_urls( @@ -1758,10 +1748,8 @@ def test_assisted_semantic_rank_falls_back_as_unsupported_provider_capability() def test_query_rewrite_uses_max_local_provider_when_ready() raises: with SafeTempDir() as temp_dir: - var provider_port = reserve_loopback_port() - var provider_stub = spawn_max_local_stub( - provider_port, "query_rewrite_ok", 2 - ) + var provider_stub = spawn_max_local_stub(0, "query_rewrite_ok", 2) + var provider_port = provider_stub.port var startup_config_path = Path(temp_dir) / "explicit-hyf-config.toml" startup_config_path.write_text( _max_local_runtime_config_toml_with_urls(