Пример #1
0
    def test_widget_routes(self):
        link_server = link.Link()
        link_server.wire(
            "main",
            receive=self.listeners[0],
            respond=self.listeners[0]
        )

        link_client = link.Link()
        link_client.wire(
            "main",
            receive=self.connections[0],
            send=self.connections[0],
            meta={"remote":self.listeners[1].remote}
        )
        link_client.wire(
            "responder",
            receive=self.listeners[1],
            respond=self.listeners[1]
        )

        server_a = Server(link=link_server, path="route_a")
        server_b = Server(link=link_server, path="route_b")
        client_a = Client(link=link_client, path="route_a")
        client_b = Client(link=link_client, path="route_b")
        self._test_widget_routes(server_a, server_b, client_a, client_b)
Пример #2
0
        def test_link_receive_multiple(self):
            """
            Test receiving from multiple connections
            """

            link_rep = link.Link()
            link_rep.wire("first", receive=self.listeners[0])
            link_rep.wire("second", receive=self.listeners[1])

            link_req = link.Link()
            link_req.wire("first", send=self.connections[0])
            link_req.wire("second", send=self.connections[1])

            self.assertEqual(isinstance(link_req.first, link.Wire), True)
            self.assertEqual(isinstance(link_req.second, link.Wire), True)
            self.assertEqual(isinstance(link_rep.first, link.Wire), True)
            self.assertEqual(isinstance(link_rep.second, link.Wire), True)

            status = {}

            def rep_receive(**kwargs):
                message = kwargs.get("message")
                status[message.data] = True

            link_rep.on("receive", rep_receive)
            link_req.first.send("test", Message("First!"))
            link_req.second.send("test", Message("Second!"))

            while status.get("First!") != True or status.get(
                    "Second!") != True:
                time.sleep(0.01)
Пример #3
0
        def test_link_send_and_receive(self):
            """
            Test sending and receiving via links (one connection each)
            """

            link_rep = link.Link()
            link_rep.wire("main", receive=self.listeners[0])

            link_req = link.Link()
            link_req.wire("main", send=self.connections[0])

            self.assertEqual(isinstance(link_req.main, link.Wire), True)
            self.assertEqual(isinstance(link_rep.main, link.Wire), True)

            status = {}

            def rep_receive(**kwargs):
                message = kwargs.get("message")
                status[message.data] = True

            link_rep.on("receive", rep_receive, once=True)
            link_req.main.send("test", Message("Ping!"))

            while status.get("Ping!") != True:
                time.sleep(0.01)
Пример #4
0
 def setUp(self):
     self.server_link = link.Link()
     self.server_link.wire("main",
                           receive=self.listeners[0],
                           respond=self.listeners[0])
     self.client_link = link.Link()
     self.client_link.wire("main",
                           receive=self.connections[0],
                           send=self.connections[0])
Пример #5
0
 def setUp(self):
     self.server_link = link.Link()
     self.server_link.wire("main",
                           receive=self.listeners[0],
                           respond=self.listeners[0])
     self.cli = CliRunner()
     self.host = self.listeners[0].remote.split("->")[1]
Пример #6
0
    def test_unaware_comm_reqrep(self):
        link_server = link.Link()
        link_server.wire(
            "main",
            receive=self.listeners[0],
            respond=self.listeners[0]
        )

        link_client = link.Link()
        link_client.wire(
            "main",
            receive=self.connections[0],
            send=self.connections[0]
        )

        server = UnawareServer(link=link_server)
        client = Client(link=link_client)
        self._test_unaware_comm(server, client)
Пример #7
0
        def test_link_disconnect(self):
            """
            Test cutting and disconnecting wires
            """
            link_rep = link.Link()
            link_rep.wire("main", receive=self.listeners[0])
            link_rep.disconnect()

            self.assertEqual(link_rep.main, None)
            self.assertEqual(self.listeners[0].close_when_ready, True)
Пример #8
0
    def connect(self, ctx):
        """
        establish xbahn connection and store on click context
        """

        if hasattr(ctx, "conn") or "host" not in ctx.params:
            return

        ctx.conn = conn = connect(ctx.params["host"])
        lnk = link.Link()
        lnk.wire("main", receive=conn, send=conn)
        ctx.client = api.Client(link=lnk)
        ctx.widget = ClientWidget(ctx.client, "engineer")
Пример #9
0
        def test_link_wire_cut(self):
            """
            Test cutting and disconnecting wires
            """
            link_rep = link.Link()
            link_rep.wire("main", receive=self.listeners[0])
            link_rep.wire("send_wire", send=self.connections[0])

            link_rep.cut("main")
            self.assertEqual(getattr(link_rep, "main", None),
                             link_rep.send_wire)
            link_rep.cut("send_wire")
            self.assertEqual(getattr(link_rep, "main", None), None)
            self.assertEqual(getattr(link_rep, "send_wire", None), None)
Пример #10
0
        def test_link_send_receive_respond(self):
            """
            Tests responding to a received message
            """

            link_rep = link.Link()
            link_rep.wire("main",
                          receive=self.listeners[0],
                          respond=self.listeners[0])

            link_req = link.Link()
            link_req.wire("main",
                          receive=self.connections[0],
                          send=self.connections[0])

            self.assertEqual(isinstance(link_req.main, link.Wire), True)
            self.assertEqual(isinstance(link_rep.main, link.Wire), True)

            status = {}

            def rep_receive_ping(**kwargs):
                message = kwargs.get("message")
                wire = kwargs.get("wire")
                wire.respond(message, Message("Pong!"))
                status[message.data] = True

            def msg_response(message, **kwargs):
                status[message.data] = True

            ping_message = Message("Ping!")
            ping_message.on("response", msg_response)

            link_rep.on("receive_ping", rep_receive_ping, once=True)
            link_req.main.send("ping", ping_message)

            while status.get("Ping!") != True or status.get("Pong!") != True:
                time.sleep(0.01)
Пример #11
0
    def test_widget_groups(self):
        link_server = link.Link()
        link_server.wire(
            "main",
            receive=self.listeners[0],
            respond=self.listeners[0]
        )

        link_client = link.Link()
        link_client.wire(
            "main",
            receive=self.connections[0],
            send=self.connections[0],
            meta={"remote":self.listeners[1].remote}
        )
        link_client.wire(
            "responder",
            receive=self.listeners[1],
            respond=self.listeners[1]
        )

        server = Server(link=link_server)
        client = Client(link=link_client)
        self._test_widget_groups(server, client)
Пример #12
0
    @engineer.expose()
    def status(self):
        return self.comm.status

    @engineer.argument("what")
    @engineer.expose()
    def do_something(self, what):
        """
        Do the task specified in [WHAT]
        """
        return self.comm.do(what)

    @engineer.option("--extra/--no-extra",
                     default=False,
                     help="include extra info")
    @engineer.expose()
    def show(self, extra=False):
        rv = ["Basic"]
        if extra:
            rv.append("Extra!!")
        return rv


if __name__ == "__main__":
    conn = listen("zmq://0.0.0.0:7050/rep")
    lnk = link.Link()
    lnk.wire("main", receive=conn, respond=conn)
    server = Server(link=lnk)
    print("Server running ...")
    conn.wait_for_signal(signal.SIGINT)