test_frame.py 文件源码

python
阅读 26 收藏 0 点赞 0 评论 0

项目:dataplicity-lomond 作者: wildfoundry 项目源码 文件源码
def test_binary_output_length_larger_than_127(frame_factory, monkeypatch):
    # even shorter test, as we don't want to repeat ourselves.
    monkeypatch.setattr(
        'lomond.frame.make_masking_key', lambda: b'\x00\x00\x00\x00')
    large_length = 1 << 16
    frame = frame_factory(Opcode.BINARY, payload=b'\x01' * large_length)
    frame_binary = frame.to_bytes()
    expected_length = 1 + 1 + 8 + 4 + large_length
    #                 ^   ^   ^   ^    ^
    #                 |   |   |   |    +-- payload length     (128 bytes)
    #                 |   |   |   +------- mask length        (4 bytes  )
    #                 |   |   +----------- length as uint64_t (4 bytes  )
    #                 |   +--------------- masking byte
    #                 +------------------- opcode byte
    assert len(frame_binary) == expected_length
    assert six.indexbytes(frame_binary, 0) == 0b10000010
    _length = six.indexbytes(frame_binary, 1) & 0b01111111
    assert _length == 127
    # we can decode the real length as well:
    decoded_length = unpack('!Q', frame_binary[2:10])
    assert len(decoded_length) == 1
    assert decoded_length[0] == large_length
    assert frame_binary[10:14] == b'\x00\x00\x00\x00'
    assert frame_binary[14:] == frame.payload
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号