Test GNS remote endpoint preservation

This commit is contained in:
Nomads_Reach
2026-08-16 00:27:56 -04:00
parent 9d8bb4404f
commit 72b8dd5fac
+14 -1
View File
@@ -5,7 +5,7 @@ from collections import deque
import pytest
from gns_transport import EventType, GnsServerTransport, GnsTransportError, SendResult
from gns_transport import EventType, GnsServerTransport, GnsTransportError, RemoteEndpoint, SendResult
class FakeFunction:
@@ -23,6 +23,7 @@ class FakeNativeBridge:
self.events = deque()
self.sent = []
self.disconnects = []
self.endpoints = {42: (0x7F000001, 54321)}
self.destroyed = False
self.co_gns_server_create = FakeFunction(self._create)
self.co_gns_server_destroy = FakeFunction(self._destroy)
@@ -31,6 +32,7 @@ class FakeNativeBridge:
self.co_gns_server_poll = FakeFunction(self._poll)
self.co_gns_server_send = FakeFunction(self._send)
self.co_gns_server_disconnect = FakeFunction(self._disconnect)
self.co_gns_server_remote_ipv4 = FakeFunction(self._remote_ipv4)
def _create(self, host, port, out_handle, error_buffer, error_size):
assert host == b"127.0.0.1"
@@ -66,6 +68,15 @@ class FakeNativeBridge:
self.disconnects.append((connection_id, reason, debug))
return 1
def _remote_ipv4(self, handle, connection_id, out_ipv4, out_port):
endpoint = self.endpoints.get(connection_id)
if endpoint is None:
return 0
ipv4, port = endpoint
ctypes.cast(out_ipv4, ctypes.POINTER(ctypes.c_uint32))[0] = ipv4
ctypes.cast(out_port, ctypes.POINTER(ctypes.c_uint16))[0] = port
return 1
def test_wrapper_polls_message_events_without_line_framing():
native = FakeNativeBridge()
@@ -75,6 +86,8 @@ def test_wrapper_polls_message_events_without_line_framing():
transport = GnsServerTransport("127.0.0.1", 0, native_library=native)
assert transport.local_port == 7777
assert transport.connection_count == 2
assert transport.remote_endpoint(42) == RemoteEndpoint("127.0.0.1", 54321)
assert transport.remote_endpoint(99) is None
connected = transport.poll()
assert connected is not None