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()
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)
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()
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()
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()
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 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()
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()