def setUpModule(): global browser, server inipath = os.path.abspath(os.environ.get('TEST_INI', 'test.ini')) if not os.path.isfile(inipath): raise RuntimeError( 'Cannot find INI file to setup selenium tests. ' 'Please specify the path via the TEST_INI environment variable ' 'or by adding a test.ini file to the current directory.') parser = ConfigParser() parser.read(inipath) config.update(parser.items('testconfig')) config['test_providers'] = splitlines(config['test_providers']) app = get_app(inipath) port = int(config['app_port']) server = StopableWSGIServer.create(app, port=port) driver = config.get('selenium.driver', 'firefox') browser = { 'firefox': webdriver.Firefox, 'chrome': webdriver.Chrome, 'ie': webdriver.Ie, }[driver]()
def setUp(self): self.server = StopableWSGIServer.create(debug_app) self.application_url = self.server.application_url.rstrip('/') self.proxy = proxies.HostProxy(self.application_url, client=self.client, **self.client_options) self.app = TestApp(self.proxy)
def serve(self): self.app = Flask('RESTConsumer') # noqa try: handler = self.app.logger.handlers[0] except IndexError: handler = logging.StreamHandler() finally: handler.setFormatter(logging.Formatter( '%(asctime)s [ConsumerAPI] %(levelname)-8s %(message)s')) self.app.logger.addHandler(handler) log_level = logging.getLevelName(self.settings .get('log_level', 'DEBUG')) self.app.logger.setLevel(log_level) self.app.config['JSONIFY_PRETTYPRINT_REGULAR'] = True server_ip = self.settings.get('server_ip', '0.0.0.0') server_port = int(self.settings.get('EXPOSE_PORT', 9013)) self.admin_name = self.settings.get('ADMIN_USER', 'admin') self.admin_password = self.settings.get('ADMIN_PW', 'password') self.http = StopableWSGIServer.create( self.app.wsgi_app, port=server_port, host=server_ip ) self.app.logger.debug('Http Serve start.') self.add_endpoints() self.app.logger.debug(f'Http Live on {server_ip} : {server_port}')
def setUpModule(): global browser, server inipath = os.path.abspath( os.environ.get('TEST_INI', 'testing.ini')) if not os.path.isfile(inipath): raise RuntimeError( 'Cannot find INI file to setup selenium tests. ' 'Please specify the path via the TEST_INI environment variable ' 'or by adding a testing.ini file to the current directory.') parser = ConfigParser() parser.read(inipath) config.update(parser.items('testconfig')) config['test_providers'] = splitlines(config['test_providers']) app = get_app(inipath) port = int(config['app_port']) server = StopableWSGIServer.create(app, port=port) driver = config.get('selenium.driver', 'firefox') browser = { 'firefox': webdriver.Firefox, 'chrome': webdriver.Chrome, 'ie': webdriver.Ie, }[driver]()
def customized_web_server_inner(overrides:dict =None) -> str: global _customized_web_server_port old_settings = app.registry.settings.copy() if overrides: app.registry.settings.update(overrides) port = customized_port or _customized_web_server_port host_base = "http://localhost:{}".format(port) logger.debug("Opening a test web server at %s", host_base) server = StopableWSGIServer.create(app, host="localhost", port=port) server.wait() _customized_web_server_port += 1 def teardown(): # Restore old settings app.registry.settings = old_settings # Shutdown server thread server.shutdown() request.addfinalizer(teardown) return host_base
def customized_web_server_inner(overrides: dict = None) -> str: global _customized_web_server_port old_settings = app.registry.settings.copy() if overrides: app.registry.settings.update(overrides) port = customized_port or _customized_web_server_port host_base = "http://localhost:{}".format(port) logger.debug("Opening a test web server at %s", host_base) server = StopableWSGIServer.create(app, host="localhost", port=port) server.wait() _customized_web_server_port += 1 def teardown(): # Restore old settings app.registry.settings = old_settings # Shutdown server thread server.shutdown() request.addfinalizer(teardown) return host_base
def server_for_test_app(app): try: from paste.exceptions.errormiddleware import ErrorMiddleware error_app = ErrorMiddleware(app.app, debug=True, error_log="errors.log") server = StopableWSGIServer.create(error_app) except ImportError: # paste.exceptions not available for Python 3. error_app = app.app server = StopableWSGIServer.create(error_app) try: server.wait() yield server finally: server.shutdown() # There seem to be persistent transient problems with the testing, sleeping # between creation of test app instances for greater than .5 seconds seems # to help (async loop length in code is .5 so this maybe makes some sense?) if "TEST_WEBAPP_POST_SHUTDOWN_SLEEP" in environ: time.sleep(int(environ.get("TEST_WEBAPP_POST_SHUTDOWN_SLEEP")))
def wsgi_server(settings, db, mock_dossiers, mock_organes_acteurs, amendements_repository): from zam_repondeur import make_app settings = {**settings, "zam.auth_cookie_secure": False} wsgi_app = make_app(None, **settings) server = StopableWSGIServer.create(wsgi_app) server.settings = settings yield server server.shutdown()
def __init__(self, app=None, url=None, timeout=30000, extra_environ=None, relative_to=None, **kwargs): super(TestApp, self).__init__(app, relative_to=relative_to) self.server = StopableWSGIServer.create(app) self.server.wait() self.application_url = self.server.application_url os.environ['APPLICATION_URL'] = self.application_url self.extra_environ = extra_environ or {} self.timeout = timeout self.test_app = self
def server_for_test_app(app): try: from paste.exceptions.errormiddleware import ErrorMiddleware error_app = ErrorMiddleware(app.app, debug=True, error_log="errors.log") except ImportError: # paste.exceptions not available for Python 3. error_app = app server = StopableWSGIServer.create(error_app) try: server.wait() yield server finally: server.shutdown()
def connect(self, cfg, customAppSettings={}, wrapper='StopableWSGIServer'): self.cfg = cfg # clear old connections # try: # DBSession.close() # DBSession.remove() # os.remove(self.cfg['app']['db']) # except: # pass # create appConfig from ini self.appSettings = appconfig( 'config:' + os.path.join( os.path.dirname(__file__), '../../', self.cfg['app']['ini'] ) ) # store some derived variables self.appSettings['sqlalchemy.url'] = 'sqlite:///'+self.cfg['app']['db'] # merge/override appConfig with custom settings in cfg self.appSettings.update(self.cfg['app']['appSettings']) # merge/override appConfig with individual custom settings self.appSettings.update(customAppSettings) # app engine = engine_from_config(self.appSettings) DBSession.configure(bind=engine) Base.metadata.create_all(engine) from c3smembership import main app = main({}, **self.appSettings) # create srv if wrapper == 'StopableWSGIServer': self.srv = StopableWSGIServer.create( app, host=self.cfg['app']['host'], port=self.cfg['app']['port'] ) # check srv if not self.srv.wait(): raise Exception('Server could not be fired up. Exiting ...') elif wrapper == 'TestApp': self.srv = TestApp(app) else: raise Exception('Wrapper could not be found. Exiting ...') # store some variables self.srv.db = DBSession self.srv.url = 'http://' + self.cfg['app']['host'] + ':' \ + self.cfg['app']['port'] + '/' # self.srv.lu = 'lu/' + self.cfg['member']['token'] + '/' \ # + self.cfg['member']['email'] return self.srv
def setUpServer(self): """Create a WSGI server instance and save it in self.server. """ app = self.make_wsgi_app() kwargs = {} if self.host is not None: kwargs['host'] = self.host if self.port is not None: kwargs['port'] = int(self.port) self.server = StopableWSGIServer.create(app, **kwargs) # If we dynamically set the host/port, we want to reset it to localhost # Otherwise this will depend on, for example, the local network setup if self.host in (None, '0.0.0.0', '127.0.0.1', 'localhost'): self.server.effective_host = 'localhost' # Refresh the hostname and port in case we dynamically picked them self['host'] = self.host = self.server.effective_host self['port'] = self.port = int(self.server.effective_port)
def wsgi_server(request, wsgi_server_app, wsgi_server_host_port): from webtest.http import StopableWSGIServer host, port = wsgi_server_host_port server = StopableWSGIServer.create( wsgi_server_app, host=host, port=port, threads=1, channel_timeout=60, cleanup_interval=10, expose_tracebacks=True, ) assert server.wait() yield 'http://%s:%s' % wsgi_server_host_port server.shutdown()
def _server(request, app, server_host_port): from webtest.http import StopableWSGIServer host, port = server_host_port server = StopableWSGIServer.create( app, host=host, port=port, threads=1, channel_timeout=60, cleanup_interval=10, expose_tracebacks=True, ) assert server.wait() @request.addfinalizer def shutdown(): server.shutdown() return 'http://%s:%s' % server_host_port
def _server(request, authenticated_app, server_host_port): from webtest.http import StopableWSGIServer host, port = server_host_port server = StopableWSGIServer.create( authenticated_app, host=host, port=port, threads=1, channel_timeout=60, cleanup_interval=10, expose_tracebacks=True, ) assert server.wait() @request.addfinalizer def shutdown(): server.shutdown() return 'http://%s:%s' % server_host_port
def connect(self, cfg, customAppSettings=None, wrapper='StopableWSGIServer'): if customAppSettings is None: customAppSettings = {} self.cfg = cfg self.app_settings = appconfig( 'config:' + os.path.join( os.path.dirname(__file__), '../../', self.cfg['app']['ini'] ) ) # store some derived variables self.app_settings['sqlalchemy.url'] = 'sqlite:///'+self.cfg['app']['db'] # merge/override appConfig with custom settings in cfg self.app_settings.update(self.cfg['app']['appSettings']) # merge/override appConfig with individual custom settings self.app_settings.update(customAppSettings) # app engine = engine_from_config(self.app_settings) DBSession.configure(bind=engine) Base.metadata.create_all(engine) from c3smembership import main app = main({}, **self.app_settings) # create srv if wrapper == 'StopableWSGIServer': self.srv = StopableWSGIServer.create( app, host=self.cfg['app']['host'], port=self.cfg['app']['port'] ) # check srv if not self.srv.wait(): raise Exception('Server could not be fired up. Exiting ...') elif wrapper == 'TestApp': self.srv = TestApp(app) else: raise Exception('Wrapper could not be found. Exiting ...') # store some variables self.srv.db = DBSession self.srv.url = 'http://' + self.cfg['app']['host'] + ':' \ + self.cfg['app']['port'] + '/' return self.srv
def web_server(request: FixtureRequest, app: Router) -> str: """py.test fixture to create a WSGI web server for functional tests. The default web server address is localhost:8521. The port can be changed with ``websauna.test_web_server_port``. :param app: py.test fixture for constructing a WSGI application :return: localhost URL where the web server is running. """ host = "localhost" port = int( app.initializer.config.registry.settings.get( "websauna.test_web_server_port", 8521)) server = StopableWSGIServer.create(app, host=host, port=port) server.wait() def teardown(): server.shutdown() request.addfinalizer(teardown) return "http://{0}:{1}".format(host, port)
def web_server(request, app:Router) -> str: """py.test fixture to create a WSGI web server for functional tests. The default web server address is localhost:8521. The port can be changed with ``websauna.test_web_server_port``. :param app: py.test fixture for constructing a WSGI application :return: localhost URL where the web server is running. """ host = "localhost" port = int(app.initializer.config.registry.settings.get("websauna.test_web_server_port", 8521)) server = StopableWSGIServer.create(app, host=host, port=port) server.wait() def teardown(): server.shutdown() request.addfinalizer(teardown) return "http://{}:{}".format(host, port)
def setUp(self): super(TestClient, self).setUp() settings = {'elasticsearch.host': self.es_cluster.urls} app = main({}, **settings) self.server = StopableWSGIServer.create(app) docs = [] for i in range(1, 32): docs.append({ 'date': '2012-01-%.2d' % i, 'downloads_count': i, 'add_on': str(i % 2 + 1), }) self.es_client.bulk_index('time_2012-01', 'downloads', docs) for j in range(2, 6): self.es_client.index('time_2012-%.2d' % j, 'downloads', { 'date': '2012-%.2d-01' % j, 'downloads_count': j, 'add_on': str(j % 2), }) self.es_client.refresh() self.server.wait()
def pytest_namespace(): return dict(server=StopableWSGIServer.create(SimpleApp()))
def webtest_server(application): """Return (running) WebTest's StopableWSGIServer for application.""" server = StopableWSGIServer.create(application) server.wait() return server
def setup_test(test): test.globs['server'] = StopableWSGIServer.create(debug_app) test.globs['application_url'] = test.globs['server'].application_url for example in test.examples: example.options.setdefault(ELLIPSIS, 1)
def http_server(self): if self._http_server is None: self._http_server = StopableWSGIServer.create( self.application, clear_untrusted_proxy_headers=True) return self._http_server
def wsgi_server(application): """Return (running) WebTest's StopableWSGIServer for application.""" server = StopableWSGIServer.create(application) server.wait() return server
def setUp(self): self.server = StopableWSGIServer.create(debug_app) self.app = TestApp(Proxy(self.server.application_url))