def server_factory(request, event_loop, server_permanent_keys): """ Return a factory to create :class:`saltyrtc.Server` instances. """ # Enable asyncio debug logging os.environ['PYTHONASYNCIODEBUG'] = '1' # Enable logging util.enable_logging(level=logbook.DEBUG, redirect_loggers={ 'asyncio': logbook.WARNING, 'websockets': logbook.WARNING, }) # Push handlers logging_handler = logbook.StderrHandler(bubble=True) logging_handler.push_application() _server_instances = [] def _server_factory(permanent_keys=None): if permanent_keys is None: permanent_keys = server_permanent_keys # Setup server port = unused_tcp_port() coroutine = serve( util.create_ssl_context(pytest.saltyrtc.cert, keyfile=pytest.saltyrtc.key, dh_params_file=pytest.saltyrtc.dh_params), permanent_keys, host=pytest.saltyrtc.host, port=port, loop=event_loop, server_class=TestServer, ) server_ = event_loop.run_until_complete(coroutine) # Inject timeout and address (little bit of a hack but meh...) server_.timeout = _get_timeout(request=request) server_.address = (pytest.saltyrtc.host, port) _server_instances.append(server_) def fin(): server_.close() event_loop.run_until_complete(server_.wait_closed()) _server_instances.remove(server_) if len(_server_instances) == 0: logging_handler.pop_application() request.addfinalizer(fin) return server_ return _server_factory
def server_factory(request, event_loop, server_permanent_keys): """ Return a factory to create :class:`saltyrtc.Server` instances. """ # Enable asyncio debug logging event_loop.set_debug(True) # Enable logging util.enable_logging(level=logbook.DEBUG, redirect_loggers={ 'asyncio': logbook.WARNING, 'websockets': logbook.WARNING, }) # Push handlers logging_handler = logbook.StderrHandler(bubble=True) logging_handler.push_application() _server_instances = [] def _server_factory(permanent_keys=None): if permanent_keys is None: permanent_keys = server_permanent_keys # Setup server port = unused_tcp_port() coroutine = serve( util.create_ssl_context( pytest.saltyrtc.cert, keyfile=pytest.saltyrtc.key, dh_params_file=pytest.saltyrtc.dh_params), permanent_keys, host=pytest.saltyrtc.host, port=port, loop=event_loop, server_class=TestServer, ) server_ = event_loop.run_until_complete(coroutine) # Inject timeout and address (little bit of a hack but meh...) server_.timeout = _get_timeout(request=request) server_.address = (pytest.saltyrtc.host, port) _server_instances.append(server_) def fin(): server_.close() event_loop.run_until_complete(server_.wait_closed()) _server_instances.remove(server_) if len(_server_instances) == 0: logging_handler.pop_application() request.addfinalizer(fin) return server_ return _server_factory