try harder to hide observer output
diff --git a/xos/tosca/tests/observertest.py b/xos/tosca/tests/observertest.py
index e86cdb1..687a9db 100644
--- a/xos/tosca/tests/observertest.py
+++ b/xos/tosca/tests/observertest.py
@@ -27,41 +27,60 @@
sys.exit(-1)
def log_to_memory(self):
+ logStream = StringIO.StringIO()
+ handler = logging.StreamHandler(stream=logStream)
+ handler.setLevel(logging.DEBUG)
+ handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(message)s"))
+
+ loggername = Logger().loggername
+ log = logging.getLogger(loggername)
+ for hdlr in log.handlers[:]:
+ log.removeHandler(hdlr)
+ log.addHandler(handler)
+ log.propagate = False
+
+ log = observer_logger.logger
+ for hdlr in log.handlers[:]:
+ log.removeHandler(hdlr)
+ log.addHandler(handler)
+ log.propagate = False
+
+ self.logStream = logStream
+
+ def hide_output(self):
set_override("observer_console_print", False)
+ self.log_to_memory()
+ sys.stdout = self.logStream
+ sys.stderr = self.logStream
- if self.hide_observer_output:
- logStream = StringIO.StringIO()
- handler = logging.StreamHandler(stream=logStream)
- handler.setLevel(logging.DEBUG)
- handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(message)s"))
+ def restore_output(self):
+ sys.stdout = sys.__stdout__
+ sys.stderr = sys.__stderr__
- loggername = Logger().loggername
- log = logging.getLogger(loggername)
- for hdlr in log.handlers[:]:
- log.removeHandler(hdlr)
- log.addHandler(handler)
- log.propagate = False
-
- log = observer_logger.logger
- for hdlr in log.handlers[:]:
- log.removeHandler(hdlr)
- log.addHandler(handler)
- log.propagate = False
+ #if not self.hide_observer_output:
+ print self.logStream.getvalue()
def run_model_policy(self):
self.ensure_observer_not_running()
- self.log_to_memory()
- #print ">>>>> run model_policies"
- run_policy_once()
- #print ">>>>> done model_policies"
+ self.hide_output()
+ try:
+ print ">>>>> run model_policies"
+ run_policy_once()
+ print ">>>>> done model_policies"
+ finally:
+ self.restore_output()
def run_observer(self):
self.ensure_observer_not_running()
self.log_to_memory()
- observer = XOSObserver()
- #print ">>>>> run observer"
- observer.run_once()
- #print ">>>>> done observer"
+ self.hide_output()
+ try:
+ print ">>>>> run observer"
+ observer = XOSObserver()
+ observer.run_once()
+ print ">>>>> done observer"
+ finally:
+ self.restore_output()