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