Files
zhuangang/topics/cs/network-os/examples/tcp-basics/test_framing.py
T

24 lines
683 B
Python

import random
import pytest
from framing import FrameDecoder, encode
def test_any_split_restores_messages():
msgs = [{"seq": i, "text": "你好" * i} for i in range(20)]
stream = b"".join(encode(m) for m in msgs)
rng = random.Random(42)
for _ in range(100): # 随机切分 100 种方式
dec, out, i = FrameDecoder(), [], 0
while i < len(stream):
j = i + rng.randint(1, 17)
out += dec.feed(stream[i:j])
i = j
assert out == msgs
def test_rejects_oversized_frame():
with pytest.raises(ValueError):
FrameDecoder(max_frame=10).feed(encode({"text": "x" * 100}))