コード例 #1
0
ファイル: hub.py プロジェクト: mileskin/ots-mirror
 def _initialize_logger(self):
     """
     initializes the logger
     """
     # This makes sure default formatters get loaded. Otherwise exc_info is
     # not processed correctly
     logging.basicConfig()
     root_logger = logging.getLogger('')
     root_logger.setLevel(logging.DEBUG)
     
     config_file = server_config_filename()
     
     try:
         config = configobj.ConfigObj(config_file).get("ots.server")
         log_dir = config.get('log_dir', LOG_DIR)
         # File handler for maintainers/developers
         log_id_string = _generate_log_id_string(self._request_id, 
                                                 self.testrun_uuid)
         l_format = '%(asctime)s  %(module)-12s %(levelname)-8s %(message)s'
         os.system("mkdir -p %s" % log_dir)
         log_file = os.path.join(log_dir, log_id_string)
         self._filehandler = logging.FileHandler(log_file)
         self._filehandler.setLevel(logging.DEBUG)
         self._filehandler.setFormatter(logging.Formatter(l_format))
         root_logger.addHandler(self._filehandler)
     except IOError:
         root_logger.error("IOError, no permission to write %s?" % log_dir,
                           exc_info=True)
     except:
         root_logger.error("Unexpected error while creating testrun log",
                           exc_info=True)
コード例 #2
0
    def _initialize_logger(self):
        """
        initializes the logger
        """
        # This makes sure default formatters get loaded. Otherwise exc_info is
        # not processed correctly
        logging.basicConfig()
        root_logger = logging.getLogger('')
        root_logger.setLevel(logging.DEBUG)

        config_file = server_config_filename()

        try:
            config = configobj.ConfigObj(config_file).get("ots.server")
            log_dir = config.get('log_dir', LOG_DIR)
            # File handler for maintainers/developers
            log_id_string = _generate_log_id_string(self._request_id,
                                                    self.testrun_uuid)
            l_format = '%(asctime)s  %(module)-12s %(levelname)-8s %(message)s'
            os.system("mkdir -p %s" % log_dir)
            log_file = os.path.join(log_dir, log_id_string)
            self._filehandler = logging.FileHandler(log_file)
            self._filehandler.setLevel(logging.DEBUG)
            self._filehandler.setFormatter(logging.Formatter(l_format))
            root_logger.addHandler(self._filehandler)
        except IOError:
            root_logger.error("IOError, no permission to write %s?" % log_dir,
                              exc_info=True)
        except:
            root_logger.error("Unexpected error while creating testrun log",
                              exc_info=True)
コード例 #3
0
ファイル: server.py プロジェクト: mileskin/ots-mirror
def _config():
    """
    @rtype: C{tuple} of C{str} and C{int}
    @return: hostname, port
    """
    config_file = server_config_filename()
    config = configobj.ConfigObj(config_file).get("ots.server.xmlrpc")
    return config.get('host'), config.as_int('port')
コード例 #4
0
ファイル: server.py プロジェクト: saraso-la/ots-mirror
def _config():
    """
    @rtype: C{tuple} of C{str} and C{int}
    @return: hostname, port
    """
    config_file = server_config_filename()
    config = configobj.ConfigObj(config_file).get("ots.server.xmlrpc")
    return config.get('host'), config.as_int('port')
コード例 #5
0
    def test_two_tasks_one_worker(self):
        if not DEBUG:
            self.worker_processes.start()
        self.testrun_id = 111
        taskrunner = taskrunner_factory(routing_key=ROUTING_KEY,
                                        execution_timeout=10,
                                        testrun_id=self.testrun_id,
                                        config_file=server_config_filename())
        #
        zipfile_1_name = os.path.join(TESTS_MODULE_DIRNAME, "data",
                                      "test_definition_1.xml")
        steps = ["mkdir foo"]
        self._create_zip_test_definition_file(zipfile_1_name, steps)
        command_1 = [
            "ots_mock",
            '"%s"' % (zipfile_1_name),
            "%s" % self.testrun_id
        ]
        taskrunner.add_task(command_1)
        #
        zipfile_2_name = os.path.join(TESTS_MODULE_DIRNAME, "data",
                                      "test_definition_2.xml")
        steps = ["mkdir bar"]
        self._create_zip_test_definition_file(zipfile_2_name, steps)
        command_2 = [
            "ots_mock",
            '"%s"' % (zipfile_2_name),
            "%s" % self.testrun_id
        ]
        taskrunner.add_task(command_2)
        #
        command_quit = ["quit"]
        taskrunner.add_task(command_quit)

        time_before_run = time.time()
        time.sleep(1)
        taskrunner.run()
        time.sleep(1)
        time_after_run = time.time()

        if not DEBUG:
            foo = os.path.join(EXECUTION_DIRNAME, "foo")
            foo_time = os.path.getctime(foo)
            bar = os.path.join(EXECUTION_DIRNAME, "bar")
            bar_time = os.path.getctime(bar)
            self.assertTrue(time_before_run < foo_time)
            self.assertTrue(foo_time <= bar_time)
            self.assertTrue(bar_time <= time_after_run)
            #
            self.assertFalse(all(self.worker_processes.exitcodes))
コード例 #6
0
def _storage_address():
    """
    rtype: C{str}
    rparam: The storage address 
    """
    
    conf = server_config_filename()
    config = configobj.ConfigObj(conf).get('ots.server.allocator')
    storage_host = config['storage_host']
    if not storage_host:
        storage_host = gethostname()

    # TODO: DEPRECATED REMOVE AFTER CONDUCTOR IS CHANGED
    storage_port = "1982" 
    return "%s:%s" % (storage_host, storage_port)     
コード例 #7
0
    def _default_options_dict(sw_product):
        """
        @type sw_product: C{str}
        @param sw_product: The name of the software product

        @rtype: C{dict} or None
        @return: The dictionary of options

        Get the default options for the SW product
        """
        conf = server_config_filename()
        config = configobj.ConfigObj(conf).get('swproducts').get(sw_product)
        if not config:
            pdts = configobj.ConfigObj(conf).get('swproducts').keys()
            msg = "'%s' not found in sw products: %s" % (sw_product, pdts)
            raise ValueError(msg)
        return config
コード例 #8
0
    def test_two_tasks_one_worker(self):
        if not DEBUG:
            self.worker_processes.start()
        self.testrun_id = 111
        taskrunner = taskrunner_factory(
            routing_key=ROUTING_KEY,
            execution_timeout=10,
            testrun_id=self.testrun_id,
            config_file=server_config_filename(),
        )
        #
        zipfile_1_name = os.path.join(TESTS_MODULE_DIRNAME, "data", "test_definition_1.xml")
        steps = ["mkdir foo"]
        self._create_zip_test_definition_file(zipfile_1_name, steps)
        command_1 = ["ots_mock", '"%s"' % (zipfile_1_name), "%s" % self.testrun_id]
        taskrunner.add_task(command_1)
        #
        zipfile_2_name = os.path.join(TESTS_MODULE_DIRNAME, "data", "test_definition_2.xml")
        steps = ["mkdir bar"]
        self._create_zip_test_definition_file(zipfile_2_name, steps)
        command_2 = ["ots_mock", '"%s"' % (zipfile_2_name), "%s" % self.testrun_id]
        taskrunner.add_task(command_2)
        #
        command_quit = ["quit"]
        taskrunner.add_task(command_quit)

        time_before_run = time.time()
        time.sleep(1)
        taskrunner.run()
        time.sleep(1)
        time_after_run = time.time()

        if not DEBUG:
            foo = os.path.join(EXECUTION_DIRNAME, "foo")
            foo_time = os.path.getctime(foo)
            bar = os.path.join(EXECUTION_DIRNAME, "bar")
            bar_time = os.path.getctime(bar)
            self.assertTrue(time_before_run < foo_time)
            self.assertTrue(foo_time <= bar_time)
            self.assertTrue(bar_time <= time_after_run)
            #
            self.assertFalse(all(self.worker_processes.exitcodes))
コード例 #9
0
def taskrunner_factory(routing_key,
                       execution_timeout,
                       testrun_id,
                       config_file=None):
    """
    Instantiate a Taskrunner from the config file

    @type routing_key : C{str}  
    @param routing_key : The routing_key for the Task

    @type execution_timeout: C{int}  
    @param execution_timeout: The timeout for the remote commands

    @type testrun_id: C{int}  
    @param testrun_id: The Testrun id 

    @type config_file: C{str}  
    @param config_file: The fqname of the config file

    @rtype: L{TaskRunner}  
    @return: The TaskRunner
    """
    if not config_file:
        config_file = server_config_filename()

    config = configobj.ConfigObj(config_file).get("ots.server.distributor")

    taskrunner = TaskRunner(username = config["username"],
                            password = config["password"],
                            host = config["host"],
                            vhost = config["vhost"],
                            services_exchange = routing_key,
                            port = config.as_int("port"),
                            routing_key = routing_key,
                            testrun_id = testrun_id,
                            execution_timeout = execution_timeout,
                            queue_timeout = config.as_int("timeout_task_start"),
                            controller_timeout = \
                                config.as_int("timeout_for_preparation"))
    return taskrunner
コード例 #10
0
def taskrunner_factory(routing_key,
                       execution_timeout,
                       testrun_id,
                       config_file=None):
    """
    Instantiate a Taskrunner from the config file

    @type routing_key : C{str}  
    @param routing_key : The routing_key for the Task

    @type execution_timeout: C{int}  
    @param execution_timeout: The timeout for the remote commands

    @type testrun_id: C{int}  
    @param testrun_id: The Testrun id 

    @type config_file: C{str}  
    @param config_file: The fqname of the config file

    @rtype: L{TaskRunner}  
    @return: The TaskRunner
    """
    if not config_file:
        config_file = server_config_filename()

    config = configobj.ConfigObj(config_file).get("ots.server.distributor")

    taskrunner = TaskRunner(username = config["username"],
                            password = config["password"],
                            host = config["host"],
                            vhost = config["vhost"],
                            services_exchange = routing_key,
                            port = config.as_int("port"), 
                            routing_key = routing_key,
                            testrun_id = testrun_id,
                            execution_timeout = execution_timeout,
                            queue_timeout = config.as_int("timeout_task_start"),
                            controller_timeout = \
                                config.as_int("timeout_for_preparation"))
    return taskrunner
コード例 #11
0
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
# 02110-1301 USA
# ***** END LICENCE BLOCK *****


"""
Provides Class based access to Schema definition
"""

import configobj
from ots.server.server_config_filename import server_config_filename

SCHEMA_FILENAME = configobj.ConfigObj(server_config_filename())\
                  ["ots.results"]["results_xsd"]

TRUE = "true"
FALSE = "false"

class Names(object):
    """
    Names of the Schema Tags as Defined in the XSD
    """

    INSIGNIFICANT = "insignificant"
    RESULT = "result"
コード例 #12
0
    def test_one_task_one_worker(self):
        """
        The simplest configuration...
        Check that the results come back OK from the Worker 
        """

        self.test_definition_file_received = False
        self.results_file_received = False

        if not DEBUG:
            self.worker_processes.start()
        self.testrun_id = 111
        taskrunner = taskrunner_factory(routing_key=ROUTING_KEY,
                                        execution_timeout=10,
                                        testrun_id=self.testrun_id,
                                        config_file=server_config_filename())

        #Create a zip file with a test definition
        zipfile_name = os.path.join(TESTS_MODULE_DIRNAME, "data",
                                    "test_definition_1.xml")
        steps = ["mkdir foo", "mkdir bar", "mkdir baz"]
        self._create_zip_test_definition_file(zipfile_name, steps)

        #Add a Task
        command = ["ots_mock", '"%s"' % (zipfile_name), "%s" % self.testrun_id]
        taskrunner.add_task(command)
        #
        command_quit = ["quit"]
        taskrunner.add_task(command_quit)

        #Callback to handler results
        def cb_handler(signal, dto, **kwargs):
            self.cb_called = True
            if isinstance(dto, Results):
                filename = dto.data.name
                if filename == "test_definition.xml":
                    self.test_definition_file_received = True
                    self.assertEquals(
                        EXPECTED.replace(' ', '').replace('\n', ''),
                        dto.data.read().replace(' ', '').replace('\n', ''))
                elif filename == "dummy_results_file.xml":
                    self.results_file_received = True
                    expected = self._dummy_results_xml(filename)
                    self.assertEquals(expected, dto.data.read())

        DTO_SIGNAL.connect(cb_handler)

        #Run...
        time_before_run = time.time()
        time.sleep(1)
        taskrunner.run()
        time.sleep(1)
        time_after_run = time.time()

        #Check the results
        if not DEBUG:
            foo = os.path.join(EXECUTION_DIRNAME, "foo")
            foo_time = os.path.getctime(foo)
            bar = os.path.join(EXECUTION_DIRNAME, "bar")
            bar_time = os.path.getctime(bar)
            baz = os.path.join(EXECUTION_DIRNAME, "baz")
            baz_time = os.path.getctime(baz)
            self.assertTrue(time_before_run < foo_time <= bar_time <= baz_time
                            <= time_after_run)
            self.assertTrue(self.results_file_received)
            self.assertTrue(self.test_definition_file_received)
            #
            self.assertFalse(all(self.worker_processes.exitcodes))
コード例 #13
0
    def test_one_task_one_worker(self):
        """
        The simplest configuration...
        Check that the results come back OK from the Worker 
        """

        self.test_definition_file_received = False
        self.results_file_received = False

        if not DEBUG:
            self.worker_processes.start()
        self.testrun_id = 111
        taskrunner = taskrunner_factory(
            routing_key=ROUTING_KEY,
            execution_timeout=10,
            testrun_id=self.testrun_id,
            config_file=server_config_filename(),
        )

        # Create a zip file with a test definition
        zipfile_name = os.path.join(TESTS_MODULE_DIRNAME, "data", "test_definition_1.xml")
        steps = ["mkdir foo", "mkdir bar", "mkdir baz"]
        self._create_zip_test_definition_file(zipfile_name, steps)

        # Add a Task
        command = ["ots_mock", '"%s"' % (zipfile_name), "%s" % self.testrun_id]
        taskrunner.add_task(command)
        #
        command_quit = ["quit"]
        taskrunner.add_task(command_quit)

        # Callback to handler results
        def cb_handler(signal, dto, **kwargs):
            self.cb_called = True
            if isinstance(dto, Results):
                filename = dto.data.name
                if filename == "test_definition.xml":
                    self.test_definition_file_received = True
                    self.assertEquals(
                        EXPECTED.replace(" ", "").replace("\n", ""), dto.data.read().replace(" ", "").replace("\n", "")
                    )
                elif filename == "dummy_results_file.xml":
                    self.results_file_received = True
                    expected = self._dummy_results_xml(filename)
                    self.assertEquals(expected, dto.data.read())

        DTO_SIGNAL.connect(cb_handler)

        # Run...
        time_before_run = time.time()
        time.sleep(1)
        taskrunner.run()
        time.sleep(1)
        time_after_run = time.time()

        # Check the results
        if not DEBUG:
            foo = os.path.join(EXECUTION_DIRNAME, "foo")
            foo_time = os.path.getctime(foo)
            bar = os.path.join(EXECUTION_DIRNAME, "bar")
            bar_time = os.path.getctime(bar)
            baz = os.path.join(EXECUTION_DIRNAME, "baz")
            baz_time = os.path.getctime(baz)
            self.assertTrue(time_before_run < foo_time <= bar_time <= baz_time <= time_after_run)
            self.assertTrue(self.results_file_received)
            self.assertTrue(self.test_definition_file_received)
            #
            self.assertFalse(all(self.worker_processes.exitcodes))