mirror of
https://git.yoctoproject.org/poky
synced 2026-01-29 21:08:42 +01:00
oeqa/core/threaded: Add OEStreamLoggerThreaded class
The OEStreamLoggerThreaded overrides OEStreamLogger to redirect the PyUnit output to a logger. Instead of log every line when comes the OEStreamLoggerThreaded will buffer the PyUnit output and write everything at end of every suite execution to don't have mixed suite outputs. [YOCTO #11450] (From OE-Core rev: 87d3e5b70c52e5c7439afe4af5aa002522043e81) Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
c118f80f17
commit
ce422c7008
@@ -1,10 +1,13 @@
|
||||
# Copyright (C) 2017 Intel Corporation
|
||||
# Released under the MIT license (see COPYING.MIT)
|
||||
|
||||
import threading
|
||||
import multiprocessing
|
||||
|
||||
from unittest.suite import TestSuite
|
||||
|
||||
from oeqa.core.loader import OETestLoader
|
||||
from oeqa.core.runner import OEStreamLogger
|
||||
|
||||
class OETestLoaderThreaded(OETestLoader):
|
||||
def __init__(self, tc, module_paths, modules, tests, modules_required,
|
||||
@@ -89,3 +92,25 @@ class OETestLoaderThreaded(OETestLoader):
|
||||
|
||||
return suites
|
||||
|
||||
class OEStreamLoggerThreaded(OEStreamLogger):
|
||||
_lock = threading.Lock()
|
||||
buffers = {}
|
||||
|
||||
def write(self, msg):
|
||||
tid = threading.get_ident()
|
||||
|
||||
if not tid in self.buffers:
|
||||
self.buffers[tid] = ""
|
||||
|
||||
if msg:
|
||||
self.buffers[tid] += msg
|
||||
|
||||
def finish(self):
|
||||
tid = threading.get_ident()
|
||||
|
||||
self._lock.acquire()
|
||||
self.logger.info('THREAD: %d' % tid)
|
||||
self.logger.info('-' * 70)
|
||||
for line in self.buffers[tid].split('\n'):
|
||||
self.logger.info(line)
|
||||
self._lock.release()
|
||||
|
||||
Reference in New Issue
Block a user