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)
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)
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)
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])
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]
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)
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)
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")
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)
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)
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)
@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)