Merge "Update: assign static IP to VM for standalone"
[yardstick.git] / yardstick / tests / unit / benchmark / scenarios / availability / test_serviceha.py
index dd656fb..d61fa67 100644 (file)
@@ -11,6 +11,7 @@ import mock
 import unittest
 
 from yardstick.benchmark.scenarios.availability import serviceha
+from yardstick.common import exceptions as y_exc
 
 
 class ServicehaTestCase(unittest.TestCase):
@@ -42,6 +43,13 @@ class ServicehaTestCase(unittest.TestCase):
         }
         sla = {"outage_time": 5}
         self.args = {"options": options, "sla": sla}
+        self.test__serviceha = serviceha.ServiceHA(self.args, self.ctx)
+
+    def test___init__(self):
+
+        self.assertEqual(self.test__serviceha.data, {})
+        self.assertFalse(self.test__serviceha.setup_done)
+        self.assertFalse(self.test__serviceha.sla_pass)
 
     # NOTE(elfoley): This should be split into test_setup and test_run
     # NOTE(elfoley): This should explicitly test outcomes and states
@@ -71,5 +79,53 @@ class ServicehaTestCase(unittest.TestCase):
         mock_monitor.MonitorMgr().verify_SLA.return_value = False
 
         ret = {}
-        self.assertRaises(AssertionError, p.run, ret)
+        self.assertRaises(y_exc.SLAValidationError, p.run, ret)
         self.assertEqual(ret['sla_pass'], 0)
+
+    @mock.patch.object(serviceha, 'baseattacker')
+    @mock.patch.object(serviceha, 'basemonitor')
+    def test__serviceha_run_service_not_found_sla_error(self, mock_monitor,
+                                                        *args):
+        p = serviceha.ServiceHA(self.args, self.ctx)
+
+        p.setup()
+        self.assertTrue(p.setup_done)
+        p.data["kill-process"] = 0
+
+        mock_monitor.MonitorMgr().verify_SLA.return_value = True
+
+        ret = {}
+        self.assertRaises(y_exc.SLAValidationError, p.run, ret)
+        self.assertEqual(ret['sla_pass'], 0)
+
+    @mock.patch.object(serviceha, 'baseattacker')
+    @mock.patch.object(serviceha, 'basemonitor')
+    def test__serviceha_no_teardown_when_sla_pass(self, mock_monitor,
+                                                  *args):
+        p = serviceha.ServiceHA(self.args, self.ctx)
+        p.setup()
+        self.assertTrue(p.setup_done)
+        mock_monitor.MonitorMgr().verify_SLA.return_value = True
+        ret = {}
+        p.run(ret)
+        attacker = mock.Mock()
+        attacker.mandatory = False
+        p.attackers = [attacker]
+        p.teardown()
+        attacker.recover.assert_not_called()
+
+    @mock.patch.object(serviceha, 'baseattacker')
+    @mock.patch.object(serviceha, 'basemonitor')
+    def test__serviceha_teardown_when_mandatory(self, mock_monitor,
+                                                *args):
+        p = serviceha.ServiceHA(self.args, self.ctx)
+        p.setup()
+        self.assertTrue(p.setup_done)
+        mock_monitor.MonitorMgr().verify_SLA.return_value = True
+        ret = {}
+        p.run(ret)
+        attacker = mock.Mock()
+        attacker.mandatory = True
+        p.attackers = [attacker]
+        p.teardown()
+        attacker.recover.assert_called_once()