Пример #1
0
                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)
Пример #2
0
    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))
Пример #3
0
            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)]
Пример #4
0
                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)
Пример #5
0
 async def respond(self, device, pkt, source):
     if pkt | DeviceMessages.EchoRequest:
         yield DeviceMessages.EchoResponse(echoing=pkt.echoing)