21
21
YamuxStream ,
22
22
)
23
23
24
+ # Configure logger for this test module
25
+ logger = logging .getLogger (__name__ )
26
+
24
27
25
28
class TrioStreamAdapter (IRawConnection ):
26
29
"""Adapter to make trio memory streams work with libp2p."""
@@ -31,21 +34,26 @@ def __init__(self, send_stream, receive_stream, is_initiator=False):
31
34
self .is_initiator = is_initiator
32
35
33
36
async def write (self , data : bytes ) -> None :
34
- logging .debug (f"Attempting to write { len (data )} bytes" )
37
+ logger .debug (f"Attempting to write { len (data )} bytes" )
35
38
with trio .move_on_after (2 ):
36
39
await self .send_stream .send_all (data )
37
40
38
41
async def read (self , n : int | None = None ) -> bytes :
39
42
if n is None or n <= 0 :
40
43
raise ValueError ("Reading unbounded or zero bytes not supported" )
41
- logging .debug (f"Attempting to read { n } bytes" )
44
+ logger .debug (f"Attempting to read { n } bytes" )
42
45
with trio .move_on_after (2 ):
43
46
data = await self .receive_stream .receive_some (n )
44
- logging .debug (f"Read { len (data )} bytes" )
47
+ logger .debug (f"Read { len (data )} bytes" )
45
48
return data
49
+ # Raise IncompleteReadError on timeout to simulate connection closed
50
+ logger .debug ("Read timed out after 2 seconds, raising IncompleteReadError" )
51
+ from libp2p .io .exceptions import IncompleteReadError
52
+
53
+ raise IncompleteReadError ({"requested_count" : n , "received_count" : 0 })
46
54
47
55
async def close (self ) -> None :
48
- logging .debug ("Closing stream" )
56
+ logger .debug ("Closing stream" )
49
57
await self .send_stream .aclose ()
50
58
await self .receive_stream .aclose ()
51
59
@@ -67,7 +75,7 @@ def peer_id(key_pair):
67
75
@pytest .fixture
68
76
async def secure_conn_pair (key_pair , peer_id ):
69
77
"""Create a pair of secure connections for testing."""
70
- logging .debug ("Setting up secure_conn_pair" )
78
+ logger .debug ("Setting up secure_conn_pair" )
71
79
client_send , server_receive = memory_stream_pair ()
72
80
server_send , client_receive = memory_stream_pair ()
73
81
@@ -79,13 +87,13 @@ async def secure_conn_pair(key_pair, peer_id):
79
87
async def run_outbound (nursery_results ):
80
88
with trio .move_on_after (5 ):
81
89
client_conn = await insecure_transport .secure_outbound (client_rw , peer_id )
82
- logging .debug ("Outbound handshake complete" )
90
+ logger .debug ("Outbound handshake complete" )
83
91
nursery_results ["client" ] = client_conn
84
92
85
93
async def run_inbound (nursery_results ):
86
94
with trio .move_on_after (5 ):
87
95
server_conn = await insecure_transport .secure_inbound (server_rw )
88
- logging .debug ("Inbound handshake complete" )
96
+ logger .debug ("Inbound handshake complete" )
89
97
nursery_results ["server" ] = server_conn
90
98
91
99
nursery_results = {}
@@ -100,14 +108,14 @@ async def run_inbound(nursery_results):
100
108
if client_conn is None or server_conn is None :
101
109
raise RuntimeError ("Handshake failed: client_conn or server_conn is None" )
102
110
103
- logging .debug ("secure_conn_pair setup complete" )
111
+ logger .debug ("secure_conn_pair setup complete" )
104
112
return client_conn , server_conn
105
113
106
114
107
115
@pytest .fixture
108
116
async def yamux_pair (secure_conn_pair , peer_id ):
109
117
"""Create a pair of Yamux multiplexers for testing."""
110
- logging .debug ("Setting up yamux_pair" )
118
+ logger .debug ("Setting up yamux_pair" )
111
119
client_conn , server_conn = secure_conn_pair
112
120
client_yamux = Yamux (client_conn , peer_id , is_initiator = True )
113
121
server_yamux = Yamux (server_conn , peer_id , is_initiator = False )
@@ -116,9 +124,9 @@ async def yamux_pair(secure_conn_pair, peer_id):
116
124
nursery .start_soon (client_yamux .start )
117
125
nursery .start_soon (server_yamux .start )
118
126
await trio .sleep (0.1 )
119
- logging .debug ("yamux_pair started" )
127
+ logger .debug ("yamux_pair started" )
120
128
yield client_yamux , server_yamux
121
- logging .debug ("yamux_pair cleanup" )
129
+ logger .debug ("yamux_pair cleanup" )
122
130
123
131
124
132
@pytest .mark .trio
0 commit comments