build 059.10: add runtime transport message models
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
# app/src/market_data/acquisition/runtime/transport_messages.py
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass
|
||||
|
||||
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class TransportTextMessage:
|
||||
"""
|
||||
Транспортное текстовое сообщение.
|
||||
|
||||
Представляет уже полученный или подготовленный для отправки
|
||||
текстовый payload без какой-либо интерпретации содержимого.
|
||||
"""
|
||||
|
||||
payload: str
|
||||
|
||||
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class TransportBinaryMessage:
|
||||
"""
|
||||
Транспортное бинарное сообщение.
|
||||
|
||||
Представляет уже полученный или подготовленный для отправки
|
||||
бинарный payload без какой-либо интерпретации содержимого.
|
||||
"""
|
||||
|
||||
payload: bytes
|
||||
@@ -0,0 +1,36 @@
|
||||
# app/tests/unit/market_data/acquisition/runtime/test_transport_messages.py
|
||||
|
||||
from dataclasses import FrozenInstanceError
|
||||
|
||||
import pytest
|
||||
|
||||
from src.market_data.acquisition.runtime.transport_messages import (
|
||||
TransportBinaryMessage,
|
||||
TransportTextMessage,
|
||||
)
|
||||
|
||||
|
||||
def test_transport_text_message() -> None:
|
||||
message = TransportTextMessage(payload='{"ping":1}')
|
||||
|
||||
assert message.payload == '{"ping":1}'
|
||||
|
||||
|
||||
def test_transport_binary_message() -> None:
|
||||
message = TransportBinaryMessage(payload=b"\x01\x02")
|
||||
|
||||
assert message.payload == b"\x01\x02"
|
||||
|
||||
|
||||
def test_text_message_is_immutable() -> None:
|
||||
message = TransportTextMessage(payload="abc")
|
||||
|
||||
with pytest.raises(FrozenInstanceError):
|
||||
setattr(message, "payload", "def")
|
||||
|
||||
|
||||
def test_binary_message_is_immutable() -> None:
|
||||
message = TransportBinaryMessage(payload=b"\x00")
|
||||
|
||||
with pytest.raises(FrozenInstanceError):
|
||||
setattr(message, "payload", b"\x01")
|
||||
Reference in New Issue
Block a user