예제 #1
0
class RESTMainTestServer(object):
    def __init__(self, cfg, statedir, testName):
        self.server = RESTMain(cfg, statedir)
        self.testName = testName
        self.config = cfg
        self.port = cfg.main.port
        self.host = '127.0.0.1'
        self.serverUrl = "http://%s:%s/%s/" % (self.host, self.port,
                                               cfg.main.application)

        ## test authentication using fake filepermission
        self.test_authz_key = fake_authz_key_file(False)
        self.config.main.tools.cms_auth.key_file = self.test_authz_key.name
        #self.header = fake_authz_headers(test_authz_key.data, roles = {"Admin": {'group': ['ReqMgr']}})

        self.jsonSender = JSONRequests(self.serverUrl)

    def getLastTest(self):
        global lastTest
        return lastTest

    def setLastTest(self):
        global lastTest
        lastTest = self.testName

    def start(self, blocking=True):
        self.server.validate_config()
        self.server.setup_server()
        self.server.install_application()
        cherrypy.config.update({'server.socket_port': self.port})
        cherrypy.config.update({'server.socket_host': self.host})
        cherrypy.config.update({'request.show_tracebacks': True})
        cherrypy.config.update({'environment': 'test_suite'})
        cherrypy.config.update({'server.thread_pool': 10})
        cherrypy.config.update({'server.accepted_queue_size': -1})
        cherrypy.config.update({'server.accepted_queue_timeout': 10})
        for app in viewvalues(cherrypy.tree.apps):
            if '/' in app.config:
                app.config["/"]["request.show_tracebacks"] = True

        cherrypy.server.httpserver = None
        cherrypy.engine.start()
        if blocking:
            cherrypy.engine.block()

    def stop(self):
        """
        Stop the server
        """
        cherrypy.engine.exit()
        cherrypy.engine.stop()

        # Ensure the next server that's started gets fresh objects
        for name, server in viewitems(getattr(cherrypy, 'servers', {})):
            server.unsubscribe()
            del cherrypy.servers[name]

        self.test_authz_key.close()
        os.remove(self.test_authz_key.name)
예제 #2
0
class RESTMainTestServer(object):

    def __init__(self, cfg, statedir, testName):
        self.server = RESTMain(cfg, statedir)
        self.testName = testName
        self.config = cfg
        self.port = cfg.main.port
        self.host = '127.0.0.1'
        self.serverUrl = "http://%s:%s/%s/" % (self.host, self.port, cfg.main.application)

        ## test authentication using fake filepermission
        self.test_authz_key = fake_authz_key_file(False)
        self.config.main.tools.cms_auth.key_file = self.test_authz_key.name
        #self.header = fake_authz_headers(test_authz_key.data, roles = {"Admin": {'group': ['ReqMgr']}})

        self.jsonSender = JSONRequests(self.serverUrl)

    def getLastTest(self):
        global lastTest
        return lastTest

    def setLastTest(self):
        global lastTest
        lastTest = self.testName


    def start(self, blocking = True):
        self.server.validate_config()
        self.server.setup_server()
        self.server.install_application()
        cherrypy.config.update({'server.socket_port': self.port})
        cherrypy.config.update({'server.socket_host': self.host})
        cherrypy.config.update({'request.show_tracebacks': True})
        cherrypy.config.update({'environment': 'test_suite'})
        for app in cherrypy.tree.apps.values():
            if '/' in app.config:
                app.config["/"]["request.show_tracebacks"] = True

        cherrypy.server.httpserver = None
        cherrypy.engine.start()
        if blocking:
            cherrypy.engine.block()


    def stop(self):
        """
        Stop the server
        """
        cherrypy.engine.exit()
        cherrypy.engine.stop()

        # Ensure the next server that's started gets fresh objects
        for name, server in getattr(cherrypy, 'servers', {}).items():
            server.unsubscribe()
            del cherrypy.servers[name]

        self.test_authz_key.close()
        os.remove(self.test_authz_key.name)
예제 #3
0
class RESTMainTestServer(object):

    def __init__(self, cfg, statedir, testName):
        self.server = RESTMain(cfg, statedir)
        self.testName = testName
        self.cofig = cfg
        self.port = cfg.main.port
        self.host = '127.0.0.1'
        self.serverUrl = "http://%s:%s/%s/" % (self.host, self.port, cfg.main.application)
        ## test permission
        #test_authz_key = fake_authz_key_file()
        #self.header = fake_authz_headers(test_authz_key.data, roles = {"Global Admin": {'group': ['global']}})        
        self.jsonSender = JSONRequests(self.serverUrl)
        
    def getLastTest(self):
        global lastTest
        return lastTest

    def setLastTest(self):
        global lastTest
        lastTest = self.testName
    
        
    def start(self, blocking = True):    
        self.server.validate_config()
        self.server.setup_server()
        self.server.install_application()
        cherrypy.config.update({'server.socket_port': self.port})
        cherrypy.config.update({'server.socket_host': self.host})
        cherrypy.config.update({'request.show_tracebacks': True})
        cherrypy.config.update({'environment': 'test_suite'})
        for app in cherrypy.tree.apps.values():
            app.config["/"]["request.show_tracebacks"] = True
            
        cherrypy.server.httpserver = None
        cherrypy.engine.start()
        if blocking:
            cherrypy.engine.block()


    def stop(self):
        """
        Stop the server
        """
        cherrypy.engine.exit()
        cherrypy.engine.stop()

        # Ensure the next server that's started gets fresh objects
        for name, server in getattr(cherrypy, 'servers', {}).items():
            server.unsubscribe()
            del cherrypy.servers[name]
예제 #4
0
def setup_dummy_server(module_name,
                       class_name,
                       app_name=None,
                       authz_key_file=None,
                       port=8888):
    """Helper function to set up a :class:`~.RESTMain` server from given
    module and class. Creates a fake server configuration and instantiates
    the server application from it.

    :arg str module_name: module from which to import test class.
    :arg str class_type: name of the server test class.
    :arg str app_name: optional test application name, 'test' by default.
    :returns: tuple with the server object and authz hmac signing key."""
    if authz_key_file:
        test_authz_key = authz_key_file
    else:
        test_authz_key = fake_authz_key_file()

    cfg = Configuration()
    main = cfg.section_('main')
    main.application = app_name or 'test'
    main.silent = True
    main.index = 'top'
    main.authz_defaults = {'role': None, 'group': None, 'site': None}
    main.section_('tools').section_('cms_auth').key_file = test_authz_key.name

    app = cfg.section_(app_name or 'test')
    app.admin = '*****@*****.**'
    app.description = app.title = 'Test'

    views = cfg.section_('views')
    top = views.section_('top')
    top.object = module_name + "." + class_name

    server = RESTMain(cfg, os.getcwd())
    server.validate_config()
    server.setup_server()
    server.install_application()
    cherrypy.config.update({'server.socket_port': port})
    cherrypy.config.update({'server.socket_host': '127.0.0.1'})
    cherrypy.config.update({'request.show_tracebacks': True})
    cherrypy.config.update({'environment': 'test_suite'})
    for app in viewvalues(cherrypy.tree.apps):
        if '/' in app.config:
            app.config["/"]["request.show_tracebacks"] = True

    return server, test_authz_key
예제 #5
0
파일: Admin.py 프로젝트: ticoann/sitedb
def setup_server():
  """Create and set up an internal REST server for admin operations."""
  global server, authz_key
  authz_key = fake_authz_key_file()
  cfg = Config(authkey = authz_key.name)
  delattr(cfg.views, 'ui')
  cfg.main.index = 'data'
  cfg.main.silent = True
  cfg.views.data.object = "SiteDB.Admin.AdminServer"
  cfg.views.data.db = "SiteDB.Admin.AUTH"
  server = RESTMain(cfg, os.getcwd())
  server.validate_config()
  server.setup_server()
  server.install_application()
  cherrypy.config.update({'server.socket_port': 8888})
  cherrypy.config.update({'server.socket_host': '127.0.0.1'})
  cherrypy.config.update({'request.show_tracebacks': True})
  cherrypy.config.update({'environment': 'test_suite'})
  cherrypy.config.update({'log.screen': 'True'})
예제 #6
0
파일: Test.py 프로젝트: dciangot/WMCore
def setup_dummy_server(module_name, class_name, app_name=None, authz_key_file=None, port=8888):
    """Helper function to set up a :class:`~.RESTMain` server from given
    module and class. Creates a fake server configuration and instantiates
    the server application from it.

    :arg str module_name: module from which to import test class.
    :arg str class_type: name of the server test class.
    :arg str app_name: optional test application name, 'test' by default.
    :returns: tuple with the server object and authz hmac signing key."""
    if authz_key_file:
        test_authz_key = authz_key_file
    else:
        test_authz_key = fake_authz_key_file()

    cfg = Configuration()
    main = cfg.section_("main")
    main.application = app_name or "test"
    main.silent = True
    main.index = "top"
    main.authz_defaults = {"role": None, "group": None, "site": None}
    main.section_("tools").section_("cms_auth").key_file = test_authz_key.name

    app = cfg.section_(app_name or "test")
    app.admin = "*****@*****.**"
    app.description = app.title = "Test"

    views = cfg.section_("views")
    top = views.section_("top")
    top.object = module_name + "." + class_name

    server = RESTMain(cfg, os.getcwd())
    server.validate_config()
    server.setup_server()
    server.install_application()
    cherrypy.config.update({"server.socket_port": port})
    cherrypy.config.update({"server.socket_host": "127.0.0.1"})
    cherrypy.config.update({"request.show_tracebacks": True})
    cherrypy.config.update({"environment": "test_suite"})
    for app in cherrypy.tree.apps.values():
        if "/" in app.config:
            app.config["/"]["request.show_tracebacks"] = True

    return server, test_authz_key
예제 #7
0
def setup_test_server(module_name, class_name, app_name = None, authz_key_file=None, port=8888):
    """Helper function to set up a :class:`~.RESTMain` server from given
    module and class. Creates a fake server configuration and instantiates
    the server application from it.

    :arg str module_name: module from which to import test class.
    :arg str class_type: name of the server test class.
    :arg str app_name: optional test application name, 'test' by default.
    :returns: tuple with the server object and authz hmac signing key."""
    if authz_key_file:
        test_authz_key = authz_key_file
    else:
        test_authz_key = fake_authz_key_file()

    cfg = Configuration()
    main = cfg.section_('main')
    main.application = app_name or 'test'
    main.silent = True
    main.index = 'top'
    main.authz_defaults = { 'role': None, 'group': None, 'site': None }
    main.section_('tools').section_('cms_auth').key_file = test_authz_key.name

    app = cfg.section_(app_name or 'test')
    app.admin = '*****@*****.**'
    app.description = app.title = 'Test'

    views = cfg.section_('views')
    top = views.section_('top')
    top.object = module_name + "." + class_name

    server = RESTMain(cfg, os.getcwd())
    server.validate_config()
    server.setup_server()
    server.install_application()
    cherrypy.config.update({'server.socket_port': port})
    cherrypy.config.update({'server.socket_host': '127.0.0.1'})
    cherrypy.config.update({'request.show_tracebacks': True})
    cherrypy.config.update({'environment': 'test_suite'})
    for app in cherrypy.tree.apps.values():
        if '/' in app.config:
            app.config["/"]["request.show_tracebacks"] = True

    return server, test_authz_key
예제 #8
0
파일: Admin.py 프로젝트: nikmagini/sitedb
def setup_server():
    """Create and set up an internal REST server for admin operations."""
    global server, authz_key
    authz_key = fake_authz_key_file()
    cfg = Config(authkey=authz_key.name)
    delattr(cfg.views, 'ui')
    cfg.main.index = 'data'
    cfg.main.silent = True
    cfg.views.data.object = "SiteDB.Admin.AdminServer"
    cfg.views.data.db = "SiteDB.Admin.AUTH"
    server = RESTMain(cfg, os.getcwd())
    server.validate_config()
    server.setup_server()
    server.install_application()
    cherrypy.config.update({'server.socket_port': 8888})
    cherrypy.config.update({'server.socket_host': '127.0.0.1'})
    cherrypy.config.update({'request.show_tracebacks': True})
    cherrypy.config.update({'environment': 'test_suite'})
    cherrypy.config.update({'log.screen': 'True'})