def test_session_periodic_callback(self): application = Application() with ManagedServerLoop(application) as server: doc = document.Document() client_session = ClientSession( session_id='test_client_session_callback', url=server.ws_url, io_loop=server.io_loop) server_session = ServerSession('test_server_session_callback', doc, server.io_loop) client_session._attach_document(doc) assert len(server_session._callbacks) == 0 assert len(client_session._callbacks) == 0 def cb(): pass callback = doc.add_periodic_callback(cb, 1, 'abc') server_session2 = ServerSession('test_server_session_callback', doc, server.io_loop) assert server_session2._callbacks assert len(server_session._callbacks) == 1 assert len(client_session._callbacks) == 1 started_callbacks = [] for ss in [server_session, server_session2]: iocb = ss._callbacks[callback.id] assert iocb._period == 1 assert iocb._loop == server.io_loop assert iocb._handle is not None started_callbacks.append(iocb) for ss in [client_session]: iocb = ss._callbacks[callback.id] assert isinstance(iocb, PeriodicCallback) assert iocb.callback_time == 1 assert iocb.io_loop == server.io_loop assert iocb.is_running() started_callbacks.append(iocb) callback = doc.remove_periodic_callback(cb) assert len(server_session._callbacks) == 0 assert len(client_session._callbacks) == 0 assert len(server_session._callbacks) == 0 for iocb in started_callbacks: if hasattr(iocb, '_handle'): assert iocb._handle is None else: assert not iocb.is_running()
def test_session_periodic_callback(self): application = Application() with ManagedServerLoop(application) as server: doc = document.Document() client_session = ClientSession(session_id='test_client_session_callback', url=ws_url(server), io_loop=server.io_loop) server_session = ServerSession(session_id='test_server_session_callback', document=doc, io_loop=server.io_loop) client_session._attach_document(doc) assert len(server_session._callbacks) == 0 assert len(client_session._callbacks) == 0 def cb(): pass callback = doc.add_periodic_callback(cb, 1, 'abc') server_session2 = ServerSession('test_server_session_callback', doc, server.io_loop) assert server_session2._callbacks assert len(server_session._callbacks) == 1 assert len(client_session._callbacks) == 1 started_callbacks = [] for ss in [server_session, server_session2]: iocb = ss._callbacks[callback.id] assert iocb._period == 1 assert iocb._loop == server.io_loop assert iocb._handle is not None started_callbacks.append(iocb) for ss in [client_session]: iocb = ss._callbacks[callback.id] assert isinstance(iocb, PeriodicCallback) assert iocb.callback_time == 1 assert iocb.io_loop == server.io_loop assert iocb.is_running() started_callbacks.append(iocb) callback = doc.remove_periodic_callback(cb) assert len(server_session._callbacks) == 0 assert len(client_session._callbacks) == 0 assert len(server_session._callbacks) == 0 for iocb in started_callbacks: if hasattr(iocb, '_handle'): assert iocb._handle is None else: assert not iocb.is_running()
def test_session_periodic_callback(self): application = Application() with ManagedServerLoop(application) as server: doc = document.Document() client_session = ClientSession(session_id='test_client_session_callback', websocket_url=ws_url(server), io_loop=server.io_loop) server_session = ServerSession(session_id='test_server_session_callback', document=doc, io_loop=server.io_loop) client_session._attach_document(doc) assert len(server_session._callbacks) == 0 assert len(client_session._callbacks) == 0 def cb(): pass callback = doc.add_periodic_callback(cb, 1, 'abc') server_session2 = ServerSession('test_server_session_callback', doc, server.io_loop) assert server_session2._callbacks assert len(server_session._callbacks) == 1 assert len(client_session._callbacks) == 1 started_callbacks = [] for ss in [server_session, server_session2]: iocb = ss._callbacks[callback.id] assert iocb._period == 1 assert iocb._loop == server.io_loop assert iocb._started assert not iocb._stopped started_callbacks.append(iocb) for ss in [client_session]: iocb = ss._callbacks[callback.id] assert iocb._period == 1 assert iocb._loop == server.io_loop assert iocb._started assert not iocb._stopped started_callbacks.append(iocb) callback = doc.remove_periodic_callback(cb) assert len(server_session._callbacks) == 0 assert len(client_session._callbacks) == 0 assert len(server_session._callbacks) == 0 for iocb in started_callbacks: assert iocb._stopped # server
def test_session_timeout_callback(self): application = Application() with ManagedServerLoop(application) as server: doc = document.Document() client_session = ClientSession(session_id='test_client_session_callback', url=ws_url(server), io_loop=server.io_loop) server_session = ServerSession(session_id='test_server_session_callback', document=doc, io_loop=server.io_loop) client_session._attach_document(doc) assert len(server_session._callbacks) == 0 assert len(client_session._callbacks) == 0 def cb(): pass x = server.io_loop.time() callback = doc.add_timeout_callback(cb, 10, 'abc') server_session2 = ServerSession('test_server_session_callback', doc, server.io_loop) assert server_session2._callbacks assert len(server_session._callbacks) == 1 assert len(client_session._callbacks) == 1 started_callbacks = [] for ss in [server_session, client_session, server_session2]: iocb = ss._callbacks[callback.id] assert isinstance(iocb, _Timeout) # check that the callback deadline is 10 # milliseconds later from when we called # add_timeout_callback (using int to avoid ms # differences between the x definition and the # call) assert abs(int(iocb.deadline) - int(x + 10/1000.0)) < 1e6 started_callbacks.append(iocb) callback = doc.remove_timeout_callback(cb) assert len(server_session._callbacks) == 0 assert len(client_session._callbacks) == 0 assert len(server_session._callbacks) == 0
def test_session_timeout_callback(self): application = Application() with ManagedServerLoop(application) as server: doc = document.Document() client_session = ClientSession(session_id='test_client_session_callback', websocket_url=ws_url(server), io_loop=server.io_loop) server_session = ServerSession(session_id='test_server_session_callback', document=doc, io_loop=server.io_loop) client_session._attach_document(doc) assert len(server_session._callbacks) == 0 assert len(client_session._callbacks) == 0 def cb(): pass x = server.io_loop.time() callback = doc.add_timeout_callback(cb, 10, 'abc') server_session2 = ServerSession('test_server_session_callback', doc, server.io_loop) assert server_session2._callbacks assert len(server_session._callbacks) == 1 assert len(client_session._callbacks) == 1 started_callbacks = [] for ss in [server_session, client_session, server_session2]: iocb = ss._callbacks[callback.id] assert isinstance(iocb, _Timeout) # check that the callback deadline is 10 # milliseconds later from when we called # add_timeout_callback (using int to avoid ms # differences between the x definition and the # call) assert abs(int(iocb.deadline) - int(x + 10/1000.0)) < 1e6 started_callbacks.append(iocb) callback = doc.remove_timeout_callback(cb) assert len(server_session._callbacks) == 0 assert len(client_session._callbacks) == 0 assert len(server_session._callbacks) == 0