def test_auto_reconnect(app, watcher, manager): # add client client = App().register(manager) node = Node().register(client) chan = node.add('client1', *app.bind, reconnect_delay=1, connect_timeout=1) assert watcher.wait('connected', channel=chan) watcher.clear() # close server app.fire(close(), app.channel) assert watcher.wait('closed', channel=app.channel) watcher.clear() # client gets an unreachable assert watcher.wait('connect', channel=chan) assert watcher.wait('unreachable', channel=chan) watcher.clear() # start a new server node2 = Node(port=app.bind[1], server_ip=app.bind[0]) node2.register(manager) assert watcher.wait('ready', channel=node2.channel) watcher.clear() assert watcher.wait('connected', channel=chan) client.unregister()
def test_server_send_multicast(app, watcher, manager): client1 = App().register(manager) node1 = Node().register(client1) chan1 = node1.add('client1', *app.bind) assert watcher.wait('connected', channel=chan1) watcher.clear() client2 = App().register(manager) node2 = Node().register(client2) chan2 = node2.add('client2', *app.bind) assert watcher.wait('connected', channel=chan2) watcher.clear() client3 = App().register(manager) node3 = Node().register(client3) chan3 = node3.add('client3', *app.bind) assert watcher.wait('connected', channel=chan3) watcher.clear() event = return_value() app.server.send_to(event, app.server.get_socks()) assert watcher.wait('return_value') for _ in range(3): if watcher.count("return_value") == 3: break sleep(1) assert watcher.count("return_value") == 3 client1.unregister() client2.unregister() client3.unregister()
def test_auto_reconnect(app, watcher, manager): # add client client = App().register(manager) node = Node().register(client) chan = node.add('client1', *app.bind, reconnect_delay=1, connect_timeout=1) assert watcher.wait('connected', channel=chan) # close server app.fire(close(), app.channel) assert watcher.wait('closed', channel=app.channel) app.unregister() assert watcher.wait('unregistered', channel=app.channel) for _ in range(5): watcher.clear() assert watcher.wait('connect', channel=chan) assert watcher.wait('unreachable', channel=chan) # open server app = Node(port=app.bind[1], server_ip=app.bind[0]) app.register(manager) assert watcher.wait('registered', channel=app.channel) assert watcher.wait('connected_to', channel=app.channel) client.unregister()
def test_server_send_multicast(app, watcher, manager): client1 = App().register(manager) node1 = Node().register(client1) chan1 = node1.add('client1', *app.bind) assert watcher.wait('connected', channel=chan1) client2 = App().register(manager) node2 = Node().register(client2) chan2 = node2.add('client2', *app.bind) assert watcher.wait('connected', channel=chan2) client3 = App().register(manager) node3 = Node().register(client3) chan3 = node3.add('client3', *app.bind) assert watcher.wait('connected', channel=chan3) event = return_value() app.server.send_to(event, app.server.get_socks()[:2]) assert watcher.wait('return_value') event_cnt = 0 with watcher._lock: for event in watcher.events: if event.name == 'return_value': event_cnt += 1 assert event_cnt == 2 client1.unregister() client2.unregister() client3.unregister()
def app(manager, watcher, bind): server = Node(port=bind[1], server_ip=bind[0]) server.register(manager) server.bind = bind assert watcher.wait('registered', channel='node') return server
def app(request, manager, watcher, bind): app = App().register(manager) node = Node().register(app) watcher.wait('ready') child = (App() + Node(port=bind[1], server_ip=bind[0])) child.start(process=True) node.add('child', *bind) watcher.wait('connected') def finalizer(): child.stop() request.addfinalizer(finalizer) return app
def test_server_send(app, watcher, manager): client1 = App().register(manager) node1 = Node().register(client1) chan1 = node1.add('client1', *app.bind) assert watcher.wait('connected', channel=chan1) client2 = App().register(manager) node2 = Node().register(client2) chan2 = node2.add('client2', *app.bind) assert watcher.wait('connected', channel=chan2) event = return_value() app.server.send(event, app.server.get_socks()[0], no_result=True) assert watcher.wait('return_value') client1.unregister() client2.unregister()
def test_server_send_all(app, watcher, manager): client1 = App().register(manager) node1 = Node().register(client1) chan = node1.add('client1', *app.bind) assert watcher.wait('connected', channel=chan) client2 = App().register(manager) node2 = Node().register(client2) chan = node2.add('client2', *app.bind) assert watcher.wait('connected', channel=chan) event = return_value() app.server.send_all(event) assert watcher.wait('return_value') client1.unregister() client2.unregister()
def init(self, args, opts): if opts.debug: Debugger().register(self) if ":" in opts.bind: address, port = opts.bind.split(":") port = int(port) else: address, port = opts.bind, 8000 self.node = Node(port=port, server_ip=address).register(self)
def init(self, args, opts): if opts.debug: Debugger().register(self) if ":" in opts.bind: address, port = opts.bind.split(":") port = int(port) else: address, port = opts.bind, 8000 node = Node().register(self) node.add('peer_name', address, port)
def init(self, args, opts): if opts.debug: Debugger().register(self) if ":" in opts.bind: address, port = opts.bind.split(":") port = int(port) else: address, port = opts.bind, 8000 auto_remote_event = {'increment': '*'} node = Node().register(self) node.add('peer_name', address, port, auto_remote_event=auto_remote_event)
def init(self, args, opts): """Initialize our ``ChatServer`` Component. This uses the convenience ``init`` method which is called after the component is proeprly constructed and initialized and passed the same args and kwargs that were passed during construction. """ self.args = args self.opts = opts self.clients = {} if opts.debug: Debugger().register(self) if ":" in opts.bind: address, port = opts.bind.split(":") port = int(port) else: address, port = opts.bind, 8000 Node(port=port, server_ip=address).register(self)
"""hello Event""" class App(Component): def ready(self, client): print("Ready!") def connected(self, host, port): print("Connected to {}:{}".format(host, port)) print("Try: x = app.fire(hello())") def hello(self): print("Now try: y = app.fire(remote(hello(), \"test\"))") return "Hello World! ({0:d})".format(getpid()) # Setup app1 with a debugger app = App() node = Node().register(app) host = sys.argv[1] port = int(sys.argv[2]) bind = (host, port) # Add an address of a node to talk to called "test" node.add("test", *bind) # Start app as a thread app.start()