|
29 | 29 |
|
30 | 30 | import pytest |
31 | 31 |
|
| 32 | +from pyleco.core.message import MessageTypes |
32 | 33 | from pyleco.coordinators.coordinator import Coordinator |
33 | 34 | from pyleco.actors.actor import Actor |
34 | 35 | from pyleco.directors.director import Director |
@@ -83,10 +84,14 @@ def binary_method_created(additional_payload: list[bytes]) -> tuple[None, list[b |
83 | 84 | """Receive binary data and return it. Create binary method by registering it.""" |
84 | 85 | return None, [additional_payload[0] * 2] |
85 | 86 |
|
| 87 | + def publish(): |
| 88 | + actor.publisher.send_data("super content") |
| 89 | + |
86 | 90 | actor.register_rpc_method(binary_method_manually) |
87 | 91 | actor.register_binary_rpc_method( |
88 | 92 | binary_method_created, accept_binary_input=True, return_binary_output=True |
89 | 93 | ) |
| 94 | + actor.register_rpc_method(publish) |
90 | 95 | actor.connect() |
91 | 96 | actor.rpc.method()(actor.device.triple) |
92 | 97 | actor.register_device_method(actor.device.triple) |
@@ -165,3 +170,23 @@ def test_binary_data_transfer_created(director: Director): |
165 | 170 | assert director.ask_rpc( |
166 | 171 | method="binary_method_created", additional_payload=[b"123"], extract_additional_payload=True |
167 | 172 | ) == (None, [b"123123"]) |
| 173 | + |
| 174 | + |
| 175 | +def test_data_via_control_protocol(director: Director): |
| 176 | + # act |
| 177 | + director.ask_rpc("register_subscriber") |
| 178 | + director.ask_rpc("publish") |
| 179 | + |
| 180 | + msg = director.communicator.read_message() |
| 181 | + director.communicator.send( |
| 182 | + receiver=director.actor, # type: ignore |
| 183 | + data={"jsonrpc": "2.0", "id": 1, "result": None}, |
| 184 | + conversation_id=msg.conversation_id, |
| 185 | + message_type=MessageTypes.JSON, |
| 186 | + ) |
| 187 | + |
| 188 | + # teardown |
| 189 | + director.ask_rpc("unregister_subscriber") |
| 190 | + |
| 191 | + assert msg.data == {"jsonrpc": "2.0", "id": 1, "method": "set_subscription_message"} |
| 192 | + assert msg.payload[1:] == [b'super content'] |
0 commit comments