Title: [124090] trunk/Tools
Revision
124090
Author
dpra...@chromium.org
Date
2012-07-30 14:07:46 -0700 (Mon, 30 Jul 2012)

Log Message

nrwt: --verbose logging does not work right on windows
https://bugs.webkit.org/show_bug.cgi?id=92673

Unreviewed, build fix.

The --verbose log level is not being propagated to the worker
processes on windows properly; this has been broken ever since I
refactored logging into the message pool directly :(.

Also, fixing this revealed that outputcapture wasn't saving and
restoring log levels correctly, so I had to fix that as well.

* Scripts/webkitpy/common/message_pool.py:
(_MessagePool._start_workers):
(_MessagePool._worker_log_level):
(_Worker.__init__):
(_Worker._set_up_logging):
(_WorkerLogHandler.__init__):
* Scripts/webkitpy/common/system/outputcapture.py:
(OutputCapture.capture_output):
(OutputCapture.restore_output):

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (124089 => 124090)


--- trunk/Tools/ChangeLog	2012-07-30 21:06:26 UTC (rev 124089)
+++ trunk/Tools/ChangeLog	2012-07-30 21:07:46 UTC (rev 124090)
@@ -1,5 +1,29 @@
 2012-07-30  Dirk Pranke  <dpra...@chromium.org>
 
+        nrwt: --verbose logging does not work right on windows
+        https://bugs.webkit.org/show_bug.cgi?id=92673
+
+        Unreviewed, build fix.
+
+        The --verbose log level is not being propagated to the worker
+        processes on windows properly; this has been broken ever since I
+        refactored logging into the message pool directly :(.
+
+        Also, fixing this revealed that outputcapture wasn't saving and
+        restoring log levels correctly, so I had to fix that as well.
+
+        * Scripts/webkitpy/common/message_pool.py:
+        (_MessagePool._start_workers):
+        (_MessagePool._worker_log_level):
+        (_Worker.__init__):
+        (_Worker._set_up_logging):
+        (_WorkerLogHandler.__init__):
+        * Scripts/webkitpy/common/system/outputcapture.py:
+        (OutputCapture.capture_output):
+        (OutputCapture.restore_output):
+
+2012-07-30  Dirk Pranke  <dpra...@chromium.org>
+
         After r123895, new-run-webkit-tests can fail with TypeError when a test crashes
         https://bugs.webkit.org/show_bug.cgi?id=92664
 

Modified: trunk/Tools/Scripts/webkitpy/common/message_pool.py (124089 => 124090)


--- trunk/Tools/Scripts/webkitpy/common/message_pool.py	2012-07-30 21:06:26 UTC (rev 124089)
+++ trunk/Tools/Scripts/webkitpy/common/message_pool.py	2012-07-30 21:07:46 UTC (rev 124090)
@@ -104,12 +104,22 @@
             host = self._host
 
         for worker_number in xrange(self._num_workers):
-            worker = _Worker(host, self._messages_to_manager, self._messages_to_worker, self._worker_factory, worker_number, self._running_inline, self if self._running_inline else None)
+            worker = _Worker(host, self._messages_to_manager, self._messages_to_worker, self._worker_factory, worker_number, self._running_inline, self if self._running_inline else None, self._worker_log_level())
             self._workers.append(worker)
             worker.start()
             if self._worker_startup_delay_secs:
                 time.sleep(self._worker_startup_delay_secs)
 
+    def _worker_log_level(self):
+        log_level = logging.NOTSET
+        for handler in logging.root.handlers:
+            if handler.level != logging.NOTSET:
+                if log_level == logging.NOTSET:
+                    log_level = handler.level
+                else:
+                    log_level = min(log_level, handler.level)
+        return log_level
+
     def wait(self):
         try:
             self._start_workers()
@@ -192,12 +202,13 @@
 
 
 class _Worker(multiprocessing.Process):
-    def __init__(self, host, messages_to_manager, messages_to_worker, worker_factory, worker_number, running_inline, manager):
+    def __init__(self, host, messages_to_manager, messages_to_worker, worker_factory, worker_number, running_inline, manager, log_level):
         super(_Worker, self).__init__()
         self.host = host
         self.worker_number = worker_number
         self.name = 'worker/%d' % worker_number
         self.log_messages = []
+        self.log_level = log_level
         self._running_inline = running_inline
         self._manager = manager
 
@@ -300,12 +311,14 @@
 
         self._log_handler = _WorkerLogHandler(self)
         self._logger.addHandler(self._log_handler)
+        self._logger.setLevel(self.log_level)
 
 
 class _WorkerLogHandler(logging.Handler):
     def __init__(self, worker):
         logging.Handler.__init__(self)
         self._worker = worker
+        self.setLevel(worker.log_level)
 
     def emit(self, record):
         self._worker.log_messages.append(record)

Modified: trunk/Tools/Scripts/webkitpy/common/system/outputcapture.py (124089 => 124090)


--- trunk/Tools/Scripts/webkitpy/common/system/outputcapture.py	2012-07-30 21:06:26 UTC (rev 124089)
+++ trunk/Tools/Scripts/webkitpy/common/system/outputcapture.py	2012-07-30 21:07:46 UTC (rev 124090)
@@ -68,11 +68,15 @@
         self._logs = StringIO()
         self._logs_handler = logging.StreamHandler(self._logs)
         self._logs_handler.setLevel(self._log_level)
-        logging.getLogger().addHandler(self._logs_handler)
+        self._logger = logging.getLogger()
+        self._orig_log_level = self._logger.level
+        self._logger.addHandler(self._logs_handler)
+        self._logger.setLevel(min(self._log_level, self._orig_log_level))
         return (self._capture_output_with_name("stdout"), self._capture_output_with_name("stderr"))
 
     def restore_output(self):
-        logging.getLogger().removeHandler(self._logs_handler)
+        self._logger.removeHandler(self._logs_handler)
+        self._logger.setLevel(self._orig_log_level)
         self._logs_handler.flush()
         self._logs.flush()
         logs_string = self._logs.getvalue()
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to