예제 #1
0
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']
예제 #2
0
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']
예제 #3
0
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
예제 #4
0
    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
예제 #5
0
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
예제 #6
0
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)
예제 #7
0
 def logging_config_handler(event: ConfigChangedEvent):
     # configure logging
     log.info("Reconfiguring logging")
     logger.configure(config.get("logging"))
예제 #8
0
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
예제 #9
0
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)