def test_logger_thread(): """ Test the logger thread. """ logger = logging.getLogger('test') queue = Queue() handler = QueueHandler(queue) logger.addHandler(handler) logger.info('test') logger.removeHandler(handler) queue.put(None) model = PanelModel() handler = GuiHandler(model) logger.addHandler(handler) thread = QueueLoggerThread(queue) thread.start() thread.join(2) if thread.is_alive(): raise qapp = QtApplication.instance()._qapp qapp.flush() qapp.processEvents() assert_equal(model.text, 'test\n')
def prepare_to_run(self, name, root, monitored_entries, build_deps): runtime_deps = root.run_time # Get ConfigObj describing measure. root.update_preferences_from_members() config = root.task_preferences # Make infos tuple to send to the subprocess. self._temp = (name, config, build_deps, runtime_deps, monitored_entries) # Clear all the flags. self._meas_pause.clear() self._meas_paused.clear() self._meas_stop.clear() self._stop.clear() self._force_stop.clear() self._stop_requested = False # If the process does not exist or is dead create a new one. if not self._process or not self._process.is_alive(): self._pipe, process_pipe = Pipe() self._process = TaskProcess(process_pipe, self._log_queue, self._monitor_queue, self._meas_pause, self._meas_paused, self._meas_stop, self._stop) self._process.daemon = True self._log_thread = QueueLoggerThread(self._log_queue) self._log_thread.daemon = True self._monitor_thread = ThreadMeasureMonitor(self, self._monitor_queue) self._monitor_thread.daemon = True self._pause_thread = None self.measure_status = ('PREPARED', 'Engine ready to process.')