How to use _spawn_logging_subprocess method in autotest

Best Python code snippet using autotest_python

logging_manager.py

Source:logging_manager.py Github

copy

Full Screen

...391 self._point_stream_handlers_to_copy()392 def stop_logging(self):393 super(_FdRedirectionStreamManager, self).stop_logging()394 self._restore_stream_handlers()395 def _spawn_logging_subprocess(self):396 """397 Spawn a subprocess to log all input to the logging module with the398 current settings, and direct output to it.399 """400 read_end, write_end = os.pipe()401 pid = os.fork()402 if pid: # parent403 os.close(read_end)404 os.dup2(write_end, self._fd) # point FD to the subprocess405 os.close(write_end)406 return pid407 else: # child408 try:409 os.close(write_end)410 # ensure this subprocess doesn't hold any pipes to others411 os.close(1)412 os.close(2)413 self._run_logging_subprocess(read_end) # never returns414 except:415 # don't let exceptions in the child escape416 try:417 logging.exception('Logging subprocess died:')418 finally:419 os._exit(1)420 def _run_logging_subprocess(self, read_fd):421 """422 Always run from a subprocess. Read from read_fd and write to the423 logging module until EOF.424 """425 signal.signal(signal.SIGTERM, signal.SIG_DFL) # clear handler426 input_file = os.fdopen(read_fd, 'r')427 for line in iter(input_file.readline, ''):428 logging.log(self._level, line.rstrip('\n'))429 logging.debug('Logging subprocess finished')430 os._exit(0)431 def _context_id(self):432 return '%s_context' % id(self)433 def on_push_context(self, context):434 # adds a context dict for this stream, $id_context, with the following:435 # * old_fd: FD holding a copy of the managed FD before launching a new436 # subprocess.437 # * child_pid: PID of the logging subprocess launched438 fd_copy = os.dup(self._fd)439 child_pid = self._spawn_logging_subprocess()440 my_context = {'old_fd': fd_copy, 'child_pid': child_pid}441 context[self._context_id()] = my_context442 def on_restore_context(self, context):443 my_context = context[self._context_id()]444 # shut down subprocess445 child_pid = my_context['child_pid']446 try:447 os.close(self._fd)448 os.waitpid(child_pid, 0)449 except OSError:450 logging.exception('Failed to cleanly shutdown logging subprocess:')451 # restore previous FD452 old_fd = my_context['old_fd']453 os.dup2(old_fd, self._fd)...

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run autotest automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful