def test_add_handler(self):
     LoggerSetup.setup()
     name = subprocess.getoutput('tty')
     result = LoggerSetup.add_handler(name)
     self.assertEqual(True, result)
     logging.info('Info on all cli')
     result = LoggerSetup.add_handler(name)
     self.assertEqual(False, result)
     LoggerSetup.shutdown()
예제 #2
0
 def test_add_handler(self):
     LoggerSetup.setup()
     name = subprocess.getoutput('tty')
     result = LoggerSetup.add_handler(name)
     self.assertEqual(True, result)
     logging.info('Info on all cli')
     result = LoggerSetup.add_handler(name)
     self.assertEqual(False, result)
     LoggerSetup.shutdown()
예제 #3
0
    def test_close(self):
        """
        Tests close
        :return: Tests results
        """
        LoggerSetup.setup()
        LoggerSetup.shutdown()

        self.assertEqual(False, LoggerSetup.is_setup_loaded())
    def test_close(self):
        """
        Tests close
        :return: Tests results
        """
        LoggerSetup.setup()
        LoggerSetup.shutdown()

        self.assertEqual(False, LoggerSetup.is_setup_loaded())
    def test_is_loaded(self):
        """
        Tests is loaded
        :return: Tests results
        """
        LoggerSetup.setup()
        result = LoggerSetup.is_setup_loaded()
        LoggerSetup.shutdown()

        self.assertEqual(True, result)
예제 #6
0
    def test_debug_level(self):
        """
        Test debug level
        :return: Test results
        """
        LoggerSetup.setup(10, "logger.log", "", 5, None)
        deep = LoggerSetup._max_log_deep
        LoggerSetup.shutdown()

        self.assertEqual(True, deep == 5)
예제 #7
0
    def test_is_loaded(self):
        """
        Tests is loaded
        :return: Tests results
        """
        LoggerSetup.setup()
        result = LoggerSetup.is_setup_loaded()
        LoggerSetup.shutdown()

        self.assertEqual(True, result)
    def test_debug_level(self):
        """
        Test debug level
        :return: Test results
        """
        LoggerSetup.setup(10, "logger.log", "", 5, None)
        deep = LoggerSetup._max_log_deep
        LoggerSetup.shutdown()

        self.assertEqual(True, deep == 5)
    def test_setup(self):
        """
        Tests setup
        :return: Tests results
        """

        LoggerSetup.setup(10)

        self.assertEqual(True, LoggerSetup.is_setup_loaded())

        LoggerSetup.shutdown()
예제 #10
0
    def test_setup(self):
        """
        Tests setup
        :return: Tests results
        """

        LoggerSetup.setup(10)

        self.assertEqual(True, LoggerSetup.is_setup_loaded())

        LoggerSetup.shutdown()
    def test_debug(self):
        """
        Tests debug
        :return: Tests results
        """
        LoggerSetup.setup(10)

        logging.debug("Debug")

        self.assertEqual(True, LoggerSetup.is_setup_loaded())

        LoggerSetup.shutdown()
    def test_error(self):
        """
        Tests error
        :return: Tests results
        """
        LoggerSetup.setup(10)

        logging.error("Error")

        self.assertEqual(True, LoggerSetup.is_setup_loaded())

        LoggerSetup.shutdown()
    def test_critical(self):
        """
        Tests critical
        :return: Tests results
        """
        LoggerSetup.setup(10)

        logging.critical("Critical")

        self.assertEqual(True, LoggerSetup.is_setup_loaded())

        LoggerSetup.shutdown()
    def test_warning(self):
        """
        Tests warning
        :return: Tests results
        """
        LoggerSetup.setup(10)

        logging.warning("Warning")

        self.assertEqual(True, LoggerSetup.is_setup_loaded())

        LoggerSetup.shutdown()
예제 #15
0
    def test_warning(self):
        """
        Tests warning
        :return: Tests results
        """
        LoggerSetup.setup(10)

        logging.warning("Warning")

        self.assertEqual(True, LoggerSetup.is_setup_loaded())

        LoggerSetup.shutdown()
예제 #16
0
    def test_error(self):
        """
        Tests error
        :return: Tests results
        """
        LoggerSetup.setup(10)

        logging.error("Error")

        self.assertEqual(True, LoggerSetup.is_setup_loaded())

        LoggerSetup.shutdown()
예제 #17
0
    def test_info(self):
        """
        Tests info
        :return: Tests results
        """
        LoggerSetup.setup(10)

        logging.info("Info")

        self.assertEqual(True, LoggerSetup.is_setup_loaded())

        LoggerSetup.shutdown()
예제 #18
0
    def test_critical(self):
        """
        Tests critical
        :return: Tests results
        """
        LoggerSetup.setup(10)

        logging.critical("Critical")

        self.assertEqual(True, LoggerSetup.is_setup_loaded())

        LoggerSetup.shutdown()
예제 #19
0
    def test_debug(self):
        """
        Tests debug
        :return: Tests results
        """
        LoggerSetup.setup(10)

        logging.debug("Debug")

        self.assertEqual(True, LoggerSetup.is_setup_loaded())

        LoggerSetup.shutdown()
    def test_info(self):
        """
        Tests info
        :return: Tests results
        """
        LoggerSetup.setup(10)

        logging.info("Info")

        self.assertEqual(True, LoggerSetup.is_setup_loaded())

        LoggerSetup.shutdown()
    def test_log_level_tab(self):
        """
        Test log level tab
        :return: Test results
        """
        LoggerSetup.setup(10)

        logging.info("%sInfo deep 2", LoggerSetup.get_log_deep(2))
        logging.info("%sInfo deep 3 with - as char", LoggerSetup.get_log_deep(3, '-'))

        self.assertEqual(True, LoggerSetup.is_setup_loaded())

        LoggerSetup.shutdown()
예제 #22
0
    def test_log_level_tab(self):
        """
        Test log level tab
        :return: Test results
        """
        LoggerSetup.setup(10)

        logging.info("%sInfo deep 2", LoggerSetup.get_log_deep(2))
        logging.info("%sInfo deep 3 with - as char",
                     LoggerSetup.get_log_deep(3, '-'))

        self.assertEqual(True, LoggerSetup.is_setup_loaded())

        LoggerSetup.shutdown()
예제 #23
0
    def test_multiprocessing(self):
        """
        Tests the logging from different Processes
        :return: Test result
        """

        LoggerSetup.setup()

        p1 = Process(target=worker1)
        p2 = Process(target=worker2)
        p1.start()
        p2.start()
        x = 10
        while x > 0:
            logging.info('Info from main {0}'.format(x))
            time.sleep(0.25)
            x -= 1

        p1.join()
        p2.join()

        LoggerSetup.shutdown()

        self.assertEqual(True, True)
    def test_multiprocessing(self):
        """
        Tests the logging from different Processes
        :return: Test result
        """

        LoggerSetup.setup()

        p1 = Process(target=worker1)
        p2 = Process(target=worker2)
        p1.start()
        p2.start()
        x = 10
        while x > 0:
            logging.info('Info from main {0}'.format(x))
            time.sleep(0.25)
            x -= 1

        p1.join()
        p2.join()

        LoggerSetup.shutdown()

        self.assertEqual(True, True)
예제 #25
0
    def start(cls, config_path: str = CONFIG_PATH) -> None:
        """
        Starts the runtime server with all components

        :param config_path: Path to an alternative config directory
        """

        # server has to be run with root rights - except on travis CI
        if not os.geteuid() == 0 and not os.environ.get('TRAVIS'):
            sys.exit('Script must be run as root')

        cls.CONFIG_PATH = config_path
        # set the config_path at the manager
        ConfigManager.set_config_path(config_path)

        # read from config the Vlan mode
        vlan_activate = ConfigManager.get_server_property("Vlan_On")
        cls.VLAN = vlan_activate

        # read from config if debug mode is on
        log_level = int(ConfigManager.get_server_property("Log_Level"))
        debug_mode = False
        if log_level is 10:
            debug_mode = True
        cls.DEBUG = debug_mode

        cls._server_stop_event = Event()

        cls._pid = os.getpid()

        # create instance and give params to the logger object
        LoggerSetup.setup(log_level)

        # load Router configs
        cls.__load_configuration()

        for router in cls.get_routers():
            cls._running_task.append(None)
            cls._waiting_tasks.append(deque())

        # start thread for multiprocess stop wait
        t = threading.Thread(target=cls._close_wait)
        t.start()

        # start process/thread pool for job and test handling
        cls._max_subprocesses = (len(cls._routers) + 2)
        cls._task_pool = Pool(processes=cls._max_subprocesses,
                              initializer=init_process,
                              initargs=(cls._server_stop_event, ),
                              maxtasksperchild=1)
        cls._job_wait_executor = ThreadPoolExecutor(
            max_workers=(cls._max_subprocesses + 5))

        # add Namespace and Vlan for each Router
        if cls.VLAN:
            cls._nv_assistent = NVAssistent("eth0")

            for router in cls.get_routers():
                logging.debug("Add Namespace and Vlan for Router(" +
                              str(router.id) + ")")
                cls._nv_assistent.create_namespace_vlan(router)

            # add Namespace and Vlan for 1 Powerstrip (expand to more if necessary)
            logging.debug("Add Namespace and Vlan for Powerstrip")
            cls._nv_assistent.create_namespace_vlan(cls.get_power_strip())

            # update Router
            cls.router_online(None, update_all=True, blocked=True)
            cls.update_router_info(None, update_all=True)

        logging.info("Runtime Server started")

        try:
            cls._ipc_server.start_ipc_server(
                cls, True)  # serves forever - works like a while(true)
        except (KeyboardInterrupt, SystemExit):
            logging.info("Received an interrupt signal")
            cls.stop()
예제 #26
0
    def start(cls, config_path: str = CONFIG_PATH) -> None:
        """
        Starts the runtime server with all components.

        :param config_path: Path to an alternative config directory
        """

        # server has to be run with root rights - except on travis CI
        if not os.geteuid() == 0 and not os.environ.get('TRAVIS'):
            sys.exit('Script must be run as root')

        cls._stopped = Lock()
        signal.signal(signal.SIGTERM, cls._signal_term_handler)

        cls.CONFIG_PATH = config_path
        # set the config_path at the manager
        ConfigManager.set_config_path(config_path)

        # read from config the Vlan mode
        vlan_activate = ConfigManager.get_server_property("Vlan_On")
        cls.VLAN = vlan_activate

        # read from config if debug mode is on
        log_level = int(ConfigManager.get_server_property("Log_Level"))
        debug_mode = False
        if log_level is 10:
            debug_mode = True
        cls.DEBUG = debug_mode

        setproctitle("fftserver")

        cls._server_stop_event = Event()

        cls._pid = os.getpid()

        # create instance and give params to the logger object
        LoggerSetup.setup(log_level)

        # load Router configs
        cls.__load_configuration()

        for router in cls.get_routers():
            cls._running_task.append(None)
            cls._waiting_tasks.append(deque())

        # start process/thread pool for job and test handling
        cls._max_subprocesses = (len(cls._routers) + 1)  # plus one for the power strip
        cls._task_pool = Pool(processes=cls._max_subprocesses, initializer=init_process,
                              initargs=(cls._server_stop_event,), maxtasksperchild=1)
        cls._task_wait_executor = ThreadPoolExecutor(max_workers=(cls._max_subprocesses * 2))

        # start thread for multiprocess stop wait
        t = threading.Thread(target=cls._close_wait)
        t.start()

        # add Namespace and Vlan for each Router
        if cls.VLAN:
            cls._nv_assistent = NVAssistent("eth0")

            for router in cls.get_routers():
                logging.debug("Add Namespace and Vlan for Router(" + str(router.id) + ")")
                cls._nv_assistent.create_namespace_vlan(router)

            # add Namespace and Vlan for 1 Powerstrip (expand to more if necessary)
            logging.debug("Add Namespace and Vlan for Powerstrip")
            cls._nv_assistent.create_namespace_vlan(cls.get_power_strip())

            # update Router
            cls.router_online(None, update_all=True, blocked=True)
            cls.update_router_info(None, update_all=True)

        # open database and read old test results
        try:
            with shelve.open('test_results', 'c') as db:
                # read test values
                key_list = db.keys()
                for k in key_list:
                    t = TestResult()
                    dbt = db[str(k)]
                    t.failures = dbt.failures
                    t.errors = dbt.errors
                    t.testsRun = dbt.testsRun
                    t._original_stdout = None
                    t._original_stderr = None
                    cls._test_results.append((dbt.router_id, dbt.test_name, t))
        except Exception as e:
            logging.error("Error at read test results from DB: {0}".format(e))

        logging.info("Runtime Server started")

        try:
            cls._ipc_server.start_ipc_server(cls, True)  # serves forever - works like a while(true)
        except (KeyboardInterrupt, SystemExit):
            logging.info("Received an interrupt signal")
            cls.stop()