inference fixes
This commit is contained in:
@@ -372,6 +372,68 @@ def test_relay_rpc_round_trips_http_request_to_peer():
|
||||
assert json.loads(response["body"]) == {"ok": True, "path": "/v1/chat/completions"}
|
||||
|
||||
|
||||
def test_relay_rpc_carries_activation_sized_frames():
|
||||
"""A >1 MiB activation body must survive the full relay round trip.
|
||||
|
||||
Regression: the websockets library caps frames at 1 MiB by default, so
|
||||
prefill activations forwarded via /rpc/<peer> died with close code 1009
|
||||
at every hop (requester → relay, relay → bridge, bridge → relay → requester).
|
||||
"""
|
||||
import http.server
|
||||
import os
|
||||
|
||||
from meshnet_node.relay_bridge import RelayHttpBridge
|
||||
from meshnet_node.torch_server import _relay_hop
|
||||
from meshnet_relay.server import RelayServer
|
||||
|
||||
body = os.urandom(2 * 1024 * 1024) # 2 MiB raw, ~2.7 MiB once base64-wrapped
|
||||
|
||||
class EchoHandler(http.server.BaseHTTPRequestHandler):
|
||||
def do_POST(self):
|
||||
data = self.rfile.read(int(self.headers.get("Content-Length", 0)))
|
||||
self.send_response(200)
|
||||
self.send_header("Content-Type", "application/octet-stream")
|
||||
self.send_header("Content-Length", str(len(data)))
|
||||
self.end_headers()
|
||||
self.wfile.write(data)
|
||||
|
||||
def log_message(self, *args):
|
||||
pass
|
||||
|
||||
local = http.server.HTTPServer(("127.0.0.1", 0), EchoHandler)
|
||||
local_thread = threading.Thread(target=local.serve_forever, daemon=True)
|
||||
local_thread.start()
|
||||
|
||||
relay = RelayServer(host="127.0.0.1", port=0)
|
||||
port = relay.start()
|
||||
|
||||
bridge = RelayHttpBridge(
|
||||
relay_url=f"ws://127.0.0.1:{port}/ws",
|
||||
peer_id="big_peer",
|
||||
local_base_url=f"http://127.0.0.1:{local.server_address[1]}",
|
||||
advertised_addr="",
|
||||
)
|
||||
try:
|
||||
bridge.start()
|
||||
assert bridge.wait_connected(timeout=5.0)
|
||||
time.sleep(0.2) # let peer-register land in the relay registry
|
||||
status, headers, resp_body = _relay_hop(
|
||||
f"ws://127.0.0.1:{port}/rpc/big_peer",
|
||||
"/forward",
|
||||
body,
|
||||
{"Content-Type": "application/octet-stream"},
|
||||
timeout=30.0,
|
||||
)
|
||||
finally:
|
||||
bridge.stop()
|
||||
relay.stop()
|
||||
local.shutdown()
|
||||
local_thread.join(timeout=3)
|
||||
|
||||
assert status == 200
|
||||
assert resp_body == body
|
||||
|
||||
|
||||
def test_node_relay_bridge_reconnects_after_failed_connection(monkeypatch):
|
||||
"""Node-side relay bridge keeps retrying its outbound WebSocket connection."""
|
||||
import websockets.sync.client as wsc # type: ignore[import]
|
||||
@@ -392,7 +454,7 @@ def test_node_relay_bridge_reconnects_after_failed_connection(monkeypatch):
|
||||
def recv(self, timeout=1):
|
||||
raise TimeoutError
|
||||
|
||||
def fake_connect(url, open_timeout=5):
|
||||
def fake_connect(url, open_timeout=5, **kwargs):
|
||||
attempts.append((url, open_timeout))
|
||||
if len(attempts) == 1:
|
||||
raise OSError("temporary relay outage")
|
||||
|
||||
Reference in New Issue
Block a user