This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env python3
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
"""In-memory transport double for Phase-1.0W policy tests only."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any
|
||||
|
||||
|
||||
class FakeTransportError(RuntimeError):
|
||||
"""Synthetic sequence error."""
|
||||
|
||||
|
||||
class FakeTransport:
|
||||
"""Record one synthetic session without any network primitives."""
|
||||
|
||||
def __init__(self, inbound_chunks: list[bytes]) -> None:
|
||||
self._inbound = list(inbound_chunks)
|
||||
self._plan: Any = None
|
||||
self._command_index = 0
|
||||
self._opened_once = False
|
||||
self._closed = False
|
||||
self.events: list[str] = []
|
||||
|
||||
def open_once(self, plan: Any) -> None:
|
||||
if self._opened_once:
|
||||
raise FakeTransportError("fake transport already opened")
|
||||
self._opened_once = True
|
||||
self._plan = plan
|
||||
self.events.append("OPEN")
|
||||
|
||||
def send_command_token(self, command: str) -> None:
|
||||
if not self._opened_once or self._closed or self._plan is None:
|
||||
raise FakeTransportError("fake transport is not open")
|
||||
if self._command_index >= len(self._plan.commands) or \
|
||||
command != self._plan.commands[self._command_index]:
|
||||
raise FakeTransportError("unexpected synthetic command")
|
||||
self._command_index += 1
|
||||
self.events.append(f"COMMAND_{command.upper()}")
|
||||
|
||||
def receive_chunk(self) -> bytes | None:
|
||||
if not self._opened_once or self._closed:
|
||||
raise FakeTransportError("fake transport is not open")
|
||||
if not self._inbound:
|
||||
return None
|
||||
self.events.append("RECEIVE")
|
||||
return self._inbound.pop(0)
|
||||
|
||||
def close_once(self) -> None:
|
||||
if not self._opened_once or self._closed:
|
||||
raise FakeTransportError("fake transport cannot close")
|
||||
self._closed = True
|
||||
self.events.append("CLOSE")
|
||||
Reference in New Issue
Block a user