[gnome-continuous-yocto/gnomeostree-3.28-rocko: 6043/8267] oeqa/core/threaded: Add OEStreamLoggerThreaded class



commit ce422c7008aa394755c45a466c1a165dbbc1d356
Author: Aníbal Limón <anibal limon linux intel com>
Date:   Fri May 26 15:37:34 2017 -0500

    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>

 meta/lib/oeqa/core/threaded.py |   25 +++++++++++++++++++++++++
 1 files changed, 25 insertions(+), 0 deletions(-)
---
diff --git a/meta/lib/oeqa/core/threaded.py b/meta/lib/oeqa/core/threaded.py
index e6f2140..73b7f2f 100644
--- a/meta/lib/oeqa/core/threaded.py
+++ b/meta/lib/oeqa/core/threaded.py
@@ -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()


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]