Merge "Adding latency test for vfw"
[yardstick.git] / yardstick / benchmark / scenarios / availability / serviceha.py
index 69727de..6d0d812 100755 (executable)
@@ -28,6 +28,8 @@ class ServiceHA(base.Scenario):
         self.scenario_cfg = scenario_cfg
         self.context_cfg = context_cfg
         self.setup_done = False
+        self.data = {}
+        self.pass_flag = True
 
     def setup(self):
         """scenario setup"""
@@ -44,10 +46,11 @@ class ServiceHA(base.Scenario):
             attacker_ins = attacker_cls(attacker_cfg, nodes)
             attacker_ins.setup()
             self.attackers.append(attacker_ins)
+            self.data = dict(self.data.items() + attacker_ins.data.items())
 
         monitor_cfgs = self.scenario_cfg["options"]["monitors"]
 
-        self.monitorMgr = basemonitor.MonitorMgr()
+        self.monitorMgr = basemonitor.MonitorMgr(self.data)
         self.monitorMgr.init_monitors(monitor_cfgs, nodes)
 
         self.setup_done = True
@@ -68,11 +71,20 @@ class ServiceHA(base.Scenario):
         LOG.info("HA monitor stop!")
 
         sla_pass = self.monitorMgr.verify_SLA()
+        for k, v in self.data.items():
+            if v == 0:
+                result['sla_pass'] = 0
+                self.pass_flag = False
+                LOG.info("The service process not found in the host envrioment, \
+the HA test case NOT pass")
+                return
+        self.monitorMgr.store_result(result)
         if sla_pass:
             result['sla_pass'] = 1
             LOG.info("The HA test case PASS the SLA")
         else:
             result['sla_pass'] = 0
+            self.pass_flag = False
         assert sla_pass is True, "The HA test case NOT pass the SLA"
 
         return
@@ -82,6 +94,8 @@ class ServiceHA(base.Scenario):
         for attacker in self.attackers:
             attacker.recover()
 
+        assert self.pass_flag, "The HA test case NOT passed"
+
 
 def _test():    # pragma: no cover
     """internal test function"""