async def write(s, transport, bts, original_message): called.append("write") pkt = Messages.unpack(bts, protocol_register=protocol_register) res = DeviceMessages.EchoResponse( source=pkt.source, sequence=pkt.sequence, target=pkt.target, echoing=b"pong" ) loop = asyncio.get_event_loop() bts = res.pack().tobytes() addr = ("fake://device", 56700) loop.call_soon(s.session.sync_received_data, bts, addr)
async def respond(self, event): if event | DeviceMessages.GetLabel: event.add_replies(self.state_for(DeviceMessages.StateLabel)) elif event | DeviceMessages.GetPower: event.add_replies(self.state_for(DeviceMessages.StatePower)) elif event | DeviceMessages.SetLabel: await self.change_one("label", event.pkt.label, event=event) event.add_replies(self.state_for(DeviceMessages.StateLabel)) elif event | DeviceMessages.SetPower: event.add_replies(self.state_for(DeviceMessages.StatePower)) await self.change_one("power", event.pkt.level, event=event) elif event | DeviceMessages.EchoRequest: event.add_replies( DeviceMessages.EchoResponse(echoing=event.pkt.echoing))
with ServicesResponder.limited_services(device, Services.UDP, AnotherService): async for m in responder.respond(device, get_service, "UDP"): got.append(m) assert got == [state_service1, state_service2] got = [] with ServicesResponder.limited_services(device, MemoryService): async for m in responder.respond(device, get_service, "UDP"): got.append(m) assert got == [state_service3] got = [] with ServicesResponder.limited_services(device, mock.Mock(name="Service")): async for m in responder.respond(device, get_service, "UDP"): got.append(m) assert got == [] describe "EchoResponder": @pytest.fixture() def responder(self, device): return device.echo_responder async it "returns an EchoResponse", device, responder: pkt = DeviceMessages.EchoRequest(echoing=b"hello") got = [] async for m in responder.respond(device, pkt, "memory"): got.append(m) assert got == [DeviceMessages.EchoResponse(echoing=pkt.echoing)]
got = [] errors = [] async with sender(msg, V.device.serial, error_catcher=errors) as pkts: async for pkt in pkts: got.append(1) if len(got) == 5: raise pkts.StopPacketStream() assert not errors assert len(got) == 5 async it "allows errors to go to an error catcher", V, FakeTime, MockedCallLater, sender: ack = CoreMessages.Acknowledgement() original = DeviceMessages.EchoRequest(echoing=b"hi") reply = DeviceMessages.EchoResponse(echoing=b"hi") async def gen(sd, reference, **kwargs): assert await ( yield DeviceMessages.EchoRequest(echoing=b"hi", target=V.device.serial) ) assert not await ( yield DeviceMessages.EchoRequest(echoing=b"hi", target=V.device2.serial) ) for i in range(5): assert await ( yield DeviceMessages.EchoRequest(echoing=b"hi", target=V.device.serial) ) msg = FromGenerator(gen)
async def respond(self, device, pkt, source): if pkt | DeviceMessages.EchoRequest: yield DeviceMessages.EchoResponse(echoing=pkt.echoing)