Skip to content

Commit a16bbfd

Browse files
acul71lla-dane
authored andcommitted
fix: fix test hang
1 parent 229c443 commit a16bbfd

File tree

2 files changed

+24
-11
lines changed

2 files changed

+24
-11
lines changed

tests/core/stream_muxer/test_yamux_interleaving.py

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121
YamuxStream,
2222
)
2323

24+
# Configure logger for this test module
25+
logger = logging.getLogger(__name__)
26+
2427

2528
class TrioStreamAdapter(IRawConnection):
2629
"""Adapter to make trio memory streams work with libp2p."""
@@ -31,21 +34,26 @@ def __init__(self, send_stream, receive_stream, is_initiator=False):
3134
self.is_initiator = is_initiator
3235

3336
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")
3538
with trio.move_on_after(2):
3639
await self.send_stream.send_all(data)
3740

3841
async def read(self, n: int | None = None) -> bytes:
3942
if n is None or n <= 0:
4043
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")
4245
with trio.move_on_after(2):
4346
data = await self.receive_stream.receive_some(n)
44-
logging.debug(f"Read {len(data)} bytes")
47+
logger.debug(f"Read {len(data)} bytes")
4548
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})
4654

4755
async def close(self) -> None:
48-
logging.debug("Closing stream")
56+
logger.debug("Closing stream")
4957
await self.send_stream.aclose()
5058
await self.receive_stream.aclose()
5159

@@ -67,7 +75,7 @@ def peer_id(key_pair):
6775
@pytest.fixture
6876
async def secure_conn_pair(key_pair, peer_id):
6977
"""Create a pair of secure connections for testing."""
70-
logging.debug("Setting up secure_conn_pair")
78+
logger.debug("Setting up secure_conn_pair")
7179
client_send, server_receive = memory_stream_pair()
7280
server_send, client_receive = memory_stream_pair()
7381

@@ -79,13 +87,13 @@ async def secure_conn_pair(key_pair, peer_id):
7987
async def run_outbound(nursery_results):
8088
with trio.move_on_after(5):
8189
client_conn = await insecure_transport.secure_outbound(client_rw, peer_id)
82-
logging.debug("Outbound handshake complete")
90+
logger.debug("Outbound handshake complete")
8391
nursery_results["client"] = client_conn
8492

8593
async def run_inbound(nursery_results):
8694
with trio.move_on_after(5):
8795
server_conn = await insecure_transport.secure_inbound(server_rw)
88-
logging.debug("Inbound handshake complete")
96+
logger.debug("Inbound handshake complete")
8997
nursery_results["server"] = server_conn
9098

9199
nursery_results = {}
@@ -100,14 +108,14 @@ async def run_inbound(nursery_results):
100108
if client_conn is None or server_conn is None:
101109
raise RuntimeError("Handshake failed: client_conn or server_conn is None")
102110

103-
logging.debug("secure_conn_pair setup complete")
111+
logger.debug("secure_conn_pair setup complete")
104112
return client_conn, server_conn
105113

106114

107115
@pytest.fixture
108116
async def yamux_pair(secure_conn_pair, peer_id):
109117
"""Create a pair of Yamux multiplexers for testing."""
110-
logging.debug("Setting up yamux_pair")
118+
logger.debug("Setting up yamux_pair")
111119
client_conn, server_conn = secure_conn_pair
112120
client_yamux = Yamux(client_conn, peer_id, is_initiator=True)
113121
server_yamux = Yamux(server_conn, peer_id, is_initiator=False)
@@ -116,9 +124,9 @@ async def yamux_pair(secure_conn_pair, peer_id):
116124
nursery.start_soon(client_yamux.start)
117125
nursery.start_soon(server_yamux.start)
118126
await trio.sleep(0.1)
119-
logging.debug("yamux_pair started")
127+
logger.debug("yamux_pair started")
120128
yield client_yamux, server_yamux
121-
logging.debug("yamux_pair cleanup")
129+
logger.debug("yamux_pair cleanup")
122130

123131

124132
@pytest.mark.trio

tests/core/stream_muxer/test_yamux_interleaving_EOF.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@ async def read(self, n: int | None = None) -> bytes:
4444
data = await self.receive_stream.receive_some(n)
4545
logging.debug(f"Read {len(data)} bytes")
4646
return data
47+
# Raise IncompleteReadError on timeout to simulate connection closed
48+
logging.debug("Read timed out after 2 seconds, raising IncompleteReadError")
49+
from libp2p.io.exceptions import IncompleteReadError
50+
51+
raise IncompleteReadError({"requested_count": n, "received_count": 0})
4752

4853
async def close(self) -> None:
4954
logging.debug("Closing stream")

0 commit comments

Comments
 (0)