mirror of
https://github.com/varun-r-mallya/py-libp2p.git
synced 2025-12-31 20:36:24 +00:00
82 lines
2.4 KiB
Python
82 lines
2.4 KiB
Python
import pytest
|
|
import trio
|
|
|
|
from libp2p.network.stream.exceptions import (
|
|
StreamClosed,
|
|
StreamEOF,
|
|
StreamReset,
|
|
)
|
|
from libp2p.tools.constants import (
|
|
MAX_READ_LEN,
|
|
)
|
|
|
|
DATA = b"data"
|
|
|
|
|
|
@pytest.mark.trio
|
|
async def test_net_stream_read_write(py_to_daemon_stream_pair, p2pds):
|
|
stream_py, stream_daemon = py_to_daemon_stream_pair
|
|
assert (
|
|
stream_py.protocol_id is not None
|
|
and stream_py.protocol_id == stream_daemon.stream_info.proto
|
|
)
|
|
await stream_py.write(DATA)
|
|
assert (await stream_daemon.read(MAX_READ_LEN)) == DATA
|
|
|
|
|
|
@pytest.mark.trio
|
|
async def test_net_stream_read_after_remote_closed(py_to_daemon_stream_pair, p2pds):
|
|
stream_py, stream_daemon = py_to_daemon_stream_pair
|
|
await stream_daemon.write(DATA)
|
|
await stream_daemon.close()
|
|
await trio.sleep(0.01)
|
|
assert (await stream_py.read(MAX_READ_LEN)) == DATA
|
|
# EOF
|
|
with pytest.raises(StreamEOF):
|
|
await stream_py.read(MAX_READ_LEN)
|
|
|
|
|
|
@pytest.mark.trio
|
|
async def test_net_stream_read_after_local_reset(py_to_daemon_stream_pair, p2pds):
|
|
stream_py, _ = py_to_daemon_stream_pair
|
|
await stream_py.reset()
|
|
with pytest.raises(StreamReset):
|
|
await stream_py.read(MAX_READ_LEN)
|
|
|
|
|
|
@pytest.mark.parametrize("is_to_fail_daemon_stream", (True,))
|
|
@pytest.mark.trio
|
|
@pytest.mark.skip
|
|
async def test_net_stream_read_after_remote_reset(py_to_daemon_stream_pair, p2pds):
|
|
stream_py, _ = py_to_daemon_stream_pair
|
|
await trio.sleep(0.01)
|
|
with pytest.raises(StreamReset):
|
|
await stream_py.read(MAX_READ_LEN)
|
|
|
|
|
|
@pytest.mark.trio
|
|
async def test_net_stream_write_after_local_closed(py_to_daemon_stream_pair, p2pds):
|
|
stream_py, _ = py_to_daemon_stream_pair
|
|
await stream_py.write(DATA)
|
|
await stream_py.close()
|
|
with pytest.raises(StreamClosed):
|
|
await stream_py.write(DATA)
|
|
|
|
|
|
@pytest.mark.trio
|
|
async def test_net_stream_write_after_local_reset(py_to_daemon_stream_pair, p2pds):
|
|
stream_py, stream_daemon = py_to_daemon_stream_pair
|
|
await stream_py.reset()
|
|
with pytest.raises(StreamClosed):
|
|
await stream_py.write(DATA)
|
|
|
|
|
|
@pytest.mark.parametrize("is_to_fail_daemon_stream", (True,))
|
|
@pytest.mark.trio
|
|
@pytest.mark.skip
|
|
async def test_net_stream_write_after_remote_reset(py_to_daemon_stream_pair, p2pds):
|
|
stream_py, _ = py_to_daemon_stream_pair
|
|
await trio.sleep(0.01)
|
|
with pytest.raises(StreamClosed):
|
|
await stream_py.write(DATA)
|