Sync from GitHub main #1
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user