Exemplo n.º 1
0
    def publish(self) -> None:
        # pylint: disable=import-outside-toplevel; to avoid cyclic imports
        from sdcm.sct_events.events_device import get_events_main_device

        if not self._ready_to_publish:
            LOGGER.warning("[SCT internal warning] %s is not ready to be published", self)
            return
        get_events_main_device(_registry=self._events_processes_registry).publish_event(self)
        self._ready_to_publish = False
 def test_start_get_events_main_device(self):
     self.assertIsNone(
         get_events_main_device(_registry=self.events_processes_registry))
     start_events_main_device(_registry=self.events_processes_registry)
     events_device = get_events_main_device(
         _registry=self.events_processes_registry)
     try:
         self.assertIsInstance(events_device, EventsDevice)
         self.assertEqual(events_device.events_counter, 0)
         self.assertTrue(events_device.is_alive())
         self.assertTrue(events_device.subscribe_address)
     finally:
         events_device.stop(timeout=1)
Exemplo n.º 3
0
    def publish_or_dump(self, default_logger: Optional[logging.Logger] = None) -> None:
        # pylint: disable=import-outside-toplevel; to avoid cyclic imports
        from sdcm.sct_events.events_device import get_events_main_device

        if not self._ready_to_publish:
            LOGGER.warning("[SCT internal warning] %s is not ready to be published", self)
            return
        if proc := get_events_main_device(_registry=self._events_processes_registry):
            if proc.is_alive():
                self.publish()
            else:
                from sdcm.sct_events.file_logger import get_events_logger
                get_events_logger(_registry=self._events_processes_registry).write_event(self)
Exemplo n.º 4
0
    def publish_or_dump(self,
                        default_logger: Optional[logging.Logger] = None,
                        warn_not_ready: bool = True) -> None:
        # pylint: disable=import-outside-toplevel; to avoid cyclic imports
        from sdcm.sct_events.events_device import get_events_main_device

        if not self._ready_to_publish:
            if warn_not_ready:
                LOGGER.warning(
                    "[SCT internal warning] %s is not ready to be published",
                    self)
            return
        try:
            proc = get_events_main_device(
                _registry=self._events_processes_registry)
        except RuntimeError:
            LOGGER.exception("Unable to get events main device")
            proc = None
        if proc:
            if proc.is_alive():
                self.publish()
            else:
                from sdcm.sct_events.file_logger import get_events_logger
                get_events_logger(_registry=self._events_processes_registry
                                  ).write_event(self)
        elif default_logger:
            default_logger.error(str(self))
        self._ready_to_publish = False
    def __init__(self, _registry: EventsProcessesRegistry):
        base_dir: Path = get_events_main_device(_registry=_registry).events_log_base_dir

        self.events_log = base_dir / EVENTS_LOG
        self.events_logs_by_severity = {
            Severity.CRITICAL: base_dir / CRITICAL_LOG,
            Severity.ERROR:    base_dir / ERROR_LOG,
            Severity.WARNING:  base_dir / WARNING_LOG,
            Severity.NORMAL:   base_dir / NORMAL_LOG,
            Severity.DEBUG:  base_dir / DEBUG_LOG,
        }

        self.events_summary = collections.defaultdict(int)
        self.events_summary_log = base_dir / SUMMARY_LOG

        super().__init__(_registry=_registry)
Exemplo n.º 6
0
    def setup_events_processes(cls, events_device: bool,
                               events_main_device: bool,
                               registry_patcher: bool):
        """Setup own copy of Events Device machinery."""

        cls.temp_dir = tempfile.mkdtemp()
        cls.events_processes_registry = EventsProcessesRegistry(
            log_dir=cls.temp_dir)
        if registry_patcher:
            cls.events_processes_registry_patcher = \
                unittest.mock.patch("sdcm.sct_events.base.SctEvent._events_processes_registry",
                                    cls.events_processes_registry)
            cls.events_processes_registry_patcher.start()
        if events_device:
            start_events_device(_registry=cls.events_processes_registry)
        elif events_main_device:
            start_events_main_device(_registry=cls.events_processes_registry)
            time.sleep(EVENTS_DEVICE_START_DELAY)
        cls.events_main_device = get_events_main_device(
            _registry=cls.events_processes_registry)
Exemplo n.º 7
0
 def get_raw_events_log(cls):
     return get_events_main_device(
         _registry=cls.events_processes_registry).raw_events_log