Create a fully mocked client for tests, requiring no server.
All agents are in-memory mocks, so the client can be exercised without a
running QuEL system.
Parameters:
| Name |
Type |
Description |
Default |
unit_to_status
|
dict[UnitLabel, UnitStatus]
|
Status to report for each unit.
|
required
|
unit_to_resources
|
dict[UnitLabel, list[ResourceInfo]]
|
Resource information to expose for each unit.
|
required
|
Returns:
| Type |
Description |
QuelwareClient
|
A configured, not-yet-started QuelwareClient backed by mocks.
|
Source code in quelware-client/src/quelware_client/testing/mock_client.py
| def create_mock_quelware_client(
unit_to_status: dict[UnitLabel, UnitStatus],
unit_to_resources: dict[UnitLabel, list[ResourceInfo]],
) -> QuelwareClient:
"""Create a fully mocked client for tests, requiring no server.
All agents are in-memory mocks, so the client can be exercised without a
running QuEL system.
Args:
unit_to_status: Status to report for each unit.
unit_to_resources: Resource information to expose for each unit.
Returns:
A configured, not-yet-started `QuelwareClient` backed by mocks.
"""
agent_container = AgentContainer()
agent_container.system_configuration = SystemConfigurationAgentMock(unit_to_status)
agent_container.session = SessionAgentMock()
agent_container.trigger = TriggerAgentMock()
def resource_agent_factory(ul: UnitLabel) -> ResourceAgentMock:
rinfos = unit_to_resources.get(ul, [])
return ResourceAgentMock(rinfos)
def instrument_agent_factory(ul: UnitLabel) -> InstrumentAgentMock:
return InstrumentAgentMock()
def worker_agent_factory(ul: UnitLabel) -> WorkerAgentMock:
return WorkerAgentMock()
return QuelwareClient(
agent=agent_container,
resource_agent_factory=resource_agent_factory,
instrument_agent_factory=instrument_agent_factory,
worker_agent_factory=worker_agent_factory,
)
|