Giacomo Travaglini has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/30234 )

Change subject: ext: Simplify the log module
......................................................................

ext: Simplify the log module

This patch is removing:

* LogWrapper (wrapping Log)
* TestLogWrapper (wrapping LogWrapper)

There is now a single Log class to be used for logging

JIRA: https://gem5.atlassian.net/projects/GEM5/issues/GEM5-533

Change-Id: I038298565e2ccbe448664a538f888c96fdce8f4a
Signed-off-by: Giacomo Travaglini <[email protected]>
---
M ext/testlib/log.py
M ext/testlib/main.py
M ext/testlib/runner.py
3 files changed, 35 insertions(+), 78 deletions(-)



diff --git a/ext/testlib/log.py b/ext/testlib/log.py
index 451ee1d..1bdb373 100644
--- a/ext/testlib/log.py
+++ b/ext/testlib/log.py
@@ -110,7 +110,19 @@


 class Log(object):
-    def __init__(self):
+    _result_typemap = {
+        wrappers.LoadedLibrary.__name__: LibraryResult,
+        wrappers.LoadedSuite.__name__: SuiteResult,
+        wrappers.LoadedTest.__name__: TestResult,
+    }
+    _status_typemap = {
+        wrappers.LoadedLibrary.__name__: LibraryStatus,
+        wrappers.LoadedSuite.__name__: SuiteStatus,
+        wrappers.LoadedTest.__name__: TestStatus,
+    }
+
+    def __init__(self, test=None):
+        self.test = test
         self.handlers = []
         self._opened = False # TODO Guards to methods
         self._closed = False # TODO Guards to methods
@@ -133,39 +145,15 @@
         for handler in self.handlers:
             handler.handle(record)

-    def add_handler(self, handler):
-        if self._opened:
- raise Exception('Unable to add a handler once the log is open.')
-        self.handlers.append(handler)
-
-    def close_handler(self, handler):
-        handler.close()
-        self.handlers.remove(handler)
-
-class LogWrapper(object):
-    _result_typemap = {
-        wrappers.LoadedLibrary.__name__: LibraryResult,
-        wrappers.LoadedSuite.__name__: SuiteResult,
-        wrappers.LoadedTest.__name__: TestResult,
-    }
-    _status_typemap = {
-        wrappers.LoadedLibrary.__name__: LibraryStatus,
-        wrappers.LoadedSuite.__name__: SuiteStatus,
-        wrappers.LoadedTest.__name__: TestStatus,
-    }
-    def __init__(self, log):
-        self.log_obj = log
-
-    def log(self, *args, **kwargs):
-        self.log_obj.log(*args, **kwargs)
-
-    # Library Logging Methods
-    # TODO Replace these methods in a test/create a wrapper?
-    # That way they still can log like this it's just hidden that they
-    # capture the current test.
def message(self, message, level=LogLevel.Info, bold=False, **metadata):
-        self.log_obj.log(LibraryMessage(message=message, level=level,
-                bold=bold, **metadata))
+        if self.test:
+            record = TestMessage(message=message, level=level,
+ test_uid=self.test.uid, suite_uid=self.test.parent_suite.uid)
+        else:
+            record = LibraryMessage(message=message, level=level,
+                bold=bold, **metadata)
+
+        self.log(record)

     def error(self, message):
         self.message(message, LogLevel.Error)
@@ -182,52 +170,21 @@
     def trace(self, message):
         self.message(message, LogLevel.Trace)

-    # Ongoing Test Logging Methods
     def status_update(self, obj, status):
-        self.log_obj.log(
-                self._status_typemap[obj.__class__.__name__](obj, status))
+        self.log(
+            self._status_typemap[obj.__class__.__name__](obj, status))

     def result_update(self, obj, result):
-        self.log_obj.log(
-                self._result_typemap[obj.__class__.__name__](obj, result))
+        self.log(
+            self._result_typemap[obj.__class__.__name__](obj, result))

-    def test_message(self, test, message, level):
-        self.log_obj.log(TestMessage(message=message, level=level,
-                test_uid=test.uid, suite_uid=test.parent_suite.uid))
+    def add_handler(self, handler):
+        if self._opened:
+ raise Exception('Unable to add a handler once the log is open.')
+        self.handlers.append(handler)

-    # NOTE If performance starts to drag on logging stdout/err
-    # replace metadata with just test and suite uid tags.
-    def test_stdout(self, test, suite, buf):
-        self.log_obj.log(TestStdout(buffer=buf, metadata=test.metadata))
+    def close_handler(self, handler):
+        handler.close()
+        self.handlers.remove(handler)

-    def test_stderr(self, test, suite, buf):
-        self.log_obj.log(TestStderr(buffer=buf, metadata=test.metadata))
-
-    def close(self):
-        self.log_obj.close()
-
-class TestLogWrapper(object):
-    def __init__(self, log, test, suite):
-        self.log_obj = log
-        self.test = test
-
-    def test_message(self, message, level):
-        self.log_obj.test_message(test=self.test,
-                message=message, level=level)
-
-    def error(self, message):
-        self.test_message(message, LogLevel.Error)
-
-    def warn(self, message):
-        self.test_message(message, LogLevel.Warn)
-
-    def info(self, message):
-        self.test_message(message, LogLevel.Info)
-
-    def debug(self, message):
-        self.test_message(message, LogLevel.Debug)
-
-    def trace(self, message):
-        self.test_message(message, LogLevel.Trace)
-
-test_log = LogWrapper(Log())
+test_log = Log()
diff --git a/ext/testlib/main.py b/ext/testlib/main.py
index 9c9ed03..0e6baa5 100644
--- a/ext/testlib/main.py
+++ b/ext/testlib/main.py
@@ -56,7 +56,7 @@
         self.mp_handler = handlers.MultiprocessingHandlerWrapper(
                 summary_handler, term_handler)
         self.mp_handler.async_process()
-        log.test_log.log_obj.add_handler(self.mp_handler)
+        log.test_log.add_handler(self.mp_handler)
         entry_message()

     def schedule_finalized(self, test_schedule):
diff --git a/ext/testlib/runner.py b/ext/testlib/runner.py
index bd50b81..9b09637 100644
--- a/ext/testlib/runner.py
+++ b/ext/testlib/runner.py
@@ -79,7 +79,7 @@
     def __init__(self, test, suite):
         self.test = test
         self.suite = suite
-        self.log = log.TestLogWrapper(log.test_log, test, suite)
+        self.log = log.Log(test)

     @helper.cacheresult
     def _fixtures(self):

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/30234
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I038298565e2ccbe448664a538f888c96fdce8f4a
Gerrit-Change-Number: 30234
Gerrit-PatchSet: 1
Gerrit-Owner: Giacomo Travaglini <[email protected]>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to