Add a new monitor type: MultiMonitor that can run any number of other monitors at...
[yardstick.git] / yardstick / benchmark / scenarios / availability / monitor / basemonitor.py
index 38d1c4e..a0fc596 100644 (file)
@@ -6,6 +6,7 @@
 # which accompanies this distribution, and is available at
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
+from __future__ import absolute_import
 import pkg_resources
 import logging
 import multiprocessing
@@ -23,6 +24,7 @@ monitor_conf_path = pkg_resources.resource_filename(
 
 class MonitorMgr(object):
     """docstring for MonitorMgr"""
+
     def __init__(self):
         self._monitor_list = []
 
@@ -32,6 +34,11 @@ class MonitorMgr(object):
         for monitor_cfg in monitor_cfgs:
             monitor_type = monitor_cfg["monitor_type"]
             monitor_cls = BaseMonitor.get_monitor_cls(monitor_type)
+
+            monitor_number = monitor_cfg.get("monitor_number", 1)
+            if monitor_number > 1:
+                monitor_cls = BaseMonitor.get_monitor_cls("multi-monitor")
+
             monitor_ins = monitor_cls(monitor_cfg, context)
             if "key" in monitor_cfg:
                 monitor_ins.key = monitor_cfg["key"]
@@ -75,7 +82,7 @@ class BaseMonitor(multiprocessing.Process):
 
     @staticmethod
     def get_monitor_cls(monitor_type):
-        '''return monitor class of specified type'''
+        """return monitor class of specified type"""
 
         for monitor in utils.itersubclasses(BaseMonitor):
             if monitor_type == monitor.__monitor_type__:
@@ -130,7 +137,9 @@ class BaseMonitor(multiprocessing.Process):
         total_time = end_time - begin_time
 
         self._queue.put({"total_time": total_time,
-                         "outage_time": last_outage-first_outage,
+                         "outage_time": last_outage - first_outage,
+                         "last_outage": last_outage,
+                         "first_outage": first_outage,
                          "total_count": total_count,
                          "outage_count": outage_count})
 
@@ -150,3 +159,6 @@ class BaseMonitor(multiprocessing.Process):
 
     def verify_SLA(self):
         pass
+
+    def result(self):
+        return self._result