Merge "Remove TRex installer from ansible directory"
[yardstick.git] / yardstick / benchmark / scenarios / availability / serviceha.py
index 2e82971..7f976fd 100755 (executable)
@@ -29,12 +29,13 @@ class ServiceHA(base.Scenario):
         self.context_cfg = context_cfg
         self.setup_done = False
         self.data = {}
+        self.sla_pass = False
 
     def setup(self):
         """scenario setup"""
         nodes = self.context_cfg.get("nodes", None)
         if nodes is None:
-            LOG.error("the nodes info is none")
+            LOG.error("The nodes info is none")
             return
 
         self.attackers = []
@@ -57,38 +58,40 @@ class ServiceHA(base.Scenario):
     def run(self, result):
         """execute the benchmark"""
         if not self.setup_done:
-            LOG.error("The setup not finished!")
+            LOG.error("The setup is not finished!")
             return
 
         self.monitorMgr.start_monitors()
-        LOG.info("HA monitor start!")
+        LOG.info("Monitor '%s' start!", self.__scenario_type__)
 
         for attacker in self.attackers:
             attacker.inject_fault()
 
         self.monitorMgr.wait_monitors()
-        LOG.info("HA monitor stop!")
+        LOG.info("Monitor '%s' stop!", self.__scenario_type__)
 
-        sla_pass = self.monitorMgr.verify_SLA()
+        self.sla_pass = self.monitorMgr.verify_SLA()
+        service_not_found = False
         for k, v in self.data.items():
-            if self.data[k] == 0:
-                result['sla_pass'] = 0
-                LOG.info("The service process not found in the host envrioment, \
-the HA test case NOT pass")
-                return
-        if sla_pass:
-            result['sla_pass'] = 1
-            LOG.info("The HA test case PASS the SLA")
-        else:
-            result['sla_pass'] = 0
-        assert sla_pass is True, "The HA test case NOT pass the SLA"
-
-        return
+            if v == 0:
+                self.sla_pass = False
+                service_not_found = True
+                LOG.info("The service process (%s) not found in the host envrioment", k)
+
+        result['sla_pass'] = 1 if self.sla_pass else 0
+        self.monitorMgr.store_result(result)
+
+        self.verify_SLA(
+            self.sla_pass, ("a service process was not found in the host "
+                            "environment" if service_not_found
+                            else "MonitorMgr.verify_SLA() failed"))
 
     def teardown(self):
         """scenario teardown"""
-        for attacker in self.attackers:
-            attacker.recover()
+        # only recover when sla not pass
+        if not self.sla_pass:
+            for attacker in self.attackers:
+                attacker.recover()
 
 
 def _test():    # pragma: no cover