def test_log_config_with_warning_level(): log_config = {'level': 'WARNING'} logger.configure(config=log_config) root_logger = logging.getLogger() effective_level = root_logger.getEffectiveLevel() lname = logging.getLevelName(effective_level) assert lname == log_config['level']
def test_log_config_with_warning_console_level(): log_config = {'console_level': 'WARNING'} logger.configure(config=log_config) root_logger = logging.getLogger() handlers = root_logger.handlers for h in handlers: if isinstance(h, logging.StreamHandler): console_log_level = logging.getLevelName(h.level) assert console_log_level == log_config['console_level']
def test_log_config_bad_console_level2(): log_config = {'console_level': 2.56} logger.configure(config=log_config) root_logger = logging.getLogger() handlers = root_logger.handlers for h in handlers: if isinstance(h, logging.StreamHandler): console_log_level = h.level assert console_log_level == logger.DEFAULT_CONSOLE_LOG_LEVEL
def start(self): """Programmatic start of the main service.""" assert os.path.exists(self._env_work_dir) # reload configuration load_config(get_config_file()) logger.configure(config.get("logging")) timeline_event.configure_timeline(config.get("timeline")) # watch configuration changes self.start_watch_config() log.info("Starting Ambianic server...") # Register the signal handlers servers = {} # Start the job threads try: for s_name, s_class in ROOT_SERVERS.items(): srv = s_class(config=config) srv.start() servers[s_name] = srv self._latest_heartbeat = time.monotonic() self._servers = servers # Keep the main thread running, otherwise signals are ignored. while True: time.sleep(0.5) self._healthcheck(servers) self._heartbeat() except ServiceExit: log.info("Service exit requested.") # stop servers and cleanup references self._stop_servers(servers) self._servers = {} self._service_exit_requested = False # stop watching config files self.stop_watch_config() if self._service_restart_requested: self._service_restart_requested = False log.info("Restarting Ambianic server.") return self.start() log.info("Exiting Ambianic server.") return True
def test_log_config_with_file(): log_path = os.path.join(_dir, '.__test-log.txt') log_config = { 'file': log_path, } logger.configure(config=log_config) handlers = logging.getLogger().handlers log_fn = None for h in handlers: if isinstance(h, logging.handlers.RotatingFileHandler): log_fn = h.baseFilename assert log_fn == log_config['file'] # at least one log file name should be configured assert log_fn
def _helper_test_debug_image_save(context: PipelineContext = None): log_config = {"level": "DEBUG"} logger.configure(config=log_config) # Expect to receive thumnail in result if image is provided and # poses are detected. config = _fall_detect_config() result = None def sample_callback(image=None, thumbnail=None, inference_result=None, **kwargs): nonlocal result result = (image is not None and thumbnail is not None and inference_result is not None) fall_detector = FallDetector(context=context, **config) output = _OutPipeElement(sample_callback=sample_callback) fall_detector.connect_to_next_element(output) img_1 = _get_image(file_name="fall_img_1.png") fall_detector.receive_next_sample(image=img_1) assert result is True # now that we know there was a positive detection # lets check if the the interim debug images were saved as expected pose_img_files = list(_data_dir.glob("tmp-pose-detect-image*.jpg")) assert len(pose_img_files) > 0 fall_img_files = list(_data_dir.glob("tmp-fall-detect-thumbnail*.jpg")) assert len(fall_img_files) > 0 # cleanup after test all_tmp_files = pose_img_files + fall_img_files for f in all_tmp_files: f.unlink() # return logger level to INFO to prevent side effects in other tests log_config = {"level": "INFO"} logger.configure(config=log_config)
def logging_config_handler(event: ConfigChangedEvent): # configure logging log.info("Reconfiguring logging") logger.configure(config.get("logging"))
def test_log_config_bad_level2(): log_config = {'level': 2.56} logger.configure(config=log_config) root_logger = logging.getLogger() effective_level = root_logger.getEffectiveLevel() assert effective_level == logger.DEFAULT_FILE_LOG_LEVEL
def test_log_config_without_file(): log_config = {} logger.configure(config=log_config) handlers = logging.getLogger().handlers for h in handlers: assert not isinstance(h, logging.handlers.RotatingFileHandler)