aboutsummaryrefslogtreecommitdiffstats
path: root/tests/unit/benchmark
diff options
context:
space:
mode:
authorwym_libra <yimin.wang@huawei.com>2015-12-07 16:02:18 +0800
committerwym_libra <yimin.wang@huawei.com>2015-12-18 10:09:08 +0800
commit53a96f499680587dc2f6172a964af35f9ce1c74b (patch)
tree0e6326ee1bd7d8e99c0c8ddc3cd0a9b50bb1dc6b /tests/unit/benchmark
parent05c1840c9c4dda154c9c5d00ff3cd23ba202330b (diff)
Rewrite the HA test case (1)
refactor the attacker implement. 1) BaseAttacker is added 2) a simple attacker named "kill-process" inherit the BaseAttacker 3) serviceha.py selects an attacker through the BaseAttacker by attacker name JIRA: YARDSTICK-149 Change-Id: Ib718d5edc6b5e14bc3ea0592e0146468ff70b43e Signed-off-by: wym_libra <yimin.wang@huawei.com>
Diffstat (limited to 'tests/unit/benchmark')
-rw-r--r--tests/unit/benchmark/scenarios/availability/test_attacker_process.py51
-rw-r--r--tests/unit/benchmark/scenarios/availability/test_serviceha.py155
2 files changed, 90 insertions, 116 deletions
diff --git a/tests/unit/benchmark/scenarios/availability/test_attacker_process.py b/tests/unit/benchmark/scenarios/availability/test_attacker_process.py
new file mode 100644
index 000000000..eb0cce70d
--- /dev/null
+++ b/tests/unit/benchmark/scenarios/availability/test_attacker_process.py
@@ -0,0 +1,51 @@
+#!/usr/bin/env python
+
+##############################################################################
+# Copyright (c) 2015 Huawei Technologies Co.,Ltd and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+# Unittest for yardstick.benchmark.scenarios.availability.attacker.attacker_process
+
+import mock
+import unittest
+
+from yardstick.benchmark.scenarios.availability.attacker import baseattacker
+
+@mock.patch('yardstick.benchmark.scenarios.availability.attacker.attacker_process.ssh')
+class AttackerServiceTestCase(unittest.TestCase):
+
+ def setUp(self):
+ host = {
+ "ip": "10.20.0.5",
+ "user": "root",
+ "key_filename": "/root/.ssh/id_rsa"
+ }
+ self.context = {"node1": host}
+ self.attacker_cfg = {
+ 'fault_type': 'kill-process',
+ 'process_name': 'nova-api',
+ 'host': 'node1',
+ }
+
+ def test__attacker_service_all_successful(self, mock_ssh):
+
+ cls = baseattacker.BaseAttacker.get_attacker_cls(self.attacker_cfg)
+ ins = cls(self.attacker_cfg, self.context)
+
+ mock_ssh.SSH().execute.return_value = (0, "running", '')
+ ins.setup()
+ ins.inject_fault()
+ ins.recover()
+
+ def test__attacker_service_check_failuer(self, mock_ssh):
+
+ cls = baseattacker.BaseAttacker.get_attacker_cls(self.attacker_cfg)
+ ins = cls(self.attacker_cfg, self.context)
+
+ mock_ssh.SSH().execute.return_value = (0, "error check", '')
+ ins.setup()
diff --git a/tests/unit/benchmark/scenarios/availability/test_serviceha.py b/tests/unit/benchmark/scenarios/availability/test_serviceha.py
index 861bacdc9..32adf3208 100644
--- a/tests/unit/benchmark/scenarios/availability/test_serviceha.py
+++ b/tests/unit/benchmark/scenarios/availability/test_serviceha.py
@@ -16,138 +16,61 @@ import unittest
from yardstick.benchmark.scenarios.availability import serviceha
-@mock.patch('yardstick.benchmark.scenarios.availability.serviceha.ssh')
+@mock.patch('yardstick.benchmark.scenarios.availability.serviceha.monitor')
+@mock.patch('yardstick.benchmark.scenarios.availability.serviceha.baseattacker')
class ServicehaTestCase(unittest.TestCase):
def setUp(self):
- self.args = {
- 'options':{
- 'component':'nova-api',
- 'fault_type':'stop-service',
- 'fault_time':0
- },
- 'sla':{
- 'outage_time':'2'
- }
+ host = {
+ "ip": "10.20.0.5",
+ "user": "root",
+ "key_filename": "/root/.ssh/id_rsa"
}
- self.ctx = {
- 'host': {
- 'ip': '10.20.0.3',
- 'user': 'cirros',
- 'key_filename': 'mykey.key'
- }
+ self.ctx = {"nodes": {"node1": host}}
+ attacker_cfg = {
+ "fault_type": "kill-process",
+ "process_name": "nova-api",
+ "host": "node1"
}
+ attacker_cfgs = []
+ attacker_cfgs.append(attacker_cfg)
+ monitor_cfg = {
+ "monitor_cmd": "nova image-list",
+ "monitor_time": 0.1
+ }
+ monitor_cfgs = []
+ monitor_cfgs.append(monitor_cfg)
- def test__serviceha_setup_successful(self, mock_ssh):
- p = serviceha.ServiceHA(self.args, self.ctx)
- mock_ssh.SSH().execute.return_value = (0, 'running', '')
- p.setup()
-
- self.assertEqual(p.setup_done, True)
-
- def test__serviceha_setup_fail_service(self, mock_ssh):
-
- self.args['options']['component'] = 'error'
- p = serviceha.ServiceHA(self.args, self.ctx)
- mock_ssh.SSH().execute.return_value = (0, 'running', '')
- p.setup()
-
- self.assertEqual(p.setup_done, False)
-
- def test__serviceha_setup_fail_fault_type(self, mock_ssh):
-
- self.args['options']['fault_type'] = 'error'
- p = serviceha.ServiceHA(self.args, self.ctx)
- mock_ssh.SSH().execute.return_value = (0, 'running', '')
- p.setup()
-
- self.assertEqual(p.setup_done, False)
-
- def test__serviceha_setup_fail_check(self, mock_ssh):
-
- p = serviceha.ServiceHA(self.args, self.ctx)
- mock_ssh.SSH().execute.return_value = (0, 'error', '')
- p.setup()
-
- self.assertEqual(p.setup_done, False)
-
- def test__serviceha_setup_fail_script(self, mock_ssh):
+ options = {
+ "attackers": attacker_cfgs,
+ "monitors": monitor_cfgs
+ }
+ sla = {"outage_time": 5}
+ self.args = {"options": options, "sla": sla}
+ def test__serviceha_setup_run_successful(self, mock_attacker, mock_monitor):
p = serviceha.ServiceHA(self.args, self.ctx)
- mock_ssh.SSH().execute.return_value = (-1, 'false', '')
-
- self.assertRaises(RuntimeError, p.setup)
- self.assertEqual(p.setup_done, False)
-
- @mock.patch('yardstick.benchmark.scenarios.availability.serviceha.monitor')
- def test__serviceha_run_successful(self, mock_monitor, mock_ssh):
- p = serviceha.ServiceHA(self.args, self.ctx)
- mock_ssh.SSH().execute.return_value = (0, 'running', '')
p.setup()
-
- monitor_result = {'total_time': 5, 'outage_time': 0, 'total_count': 16, 'outage_count': 0}
- mock_monitor.Monitor().get_result.return_value = monitor_result
-
- p.connection = mock_ssh.SSH()
- mock_ssh.SSH().execute.return_value = (0, 'success', '')
+ self.assertEqual(p.setup_done, True)
result = {}
- p.run(result)
- self.assertEqual(result,{ 'outage_time': 0})
+ result["outage_time"] = 0
+ mock_monitor.Monitor().get_result.return_value = result
+ ret = {}
+ p.run(ret)
+ self.assertEqual(ret, result)
+ p.teardown()
- def test__serviceha_run_fail_nosetup(self, mock_ssh):
+ def test__serviceha_run_sla_error(self, mock_attacker, mock_monitor):
p = serviceha.ServiceHA(self.args, self.ctx)
- p.run(None)
- @mock.patch('yardstick.benchmark.scenarios.availability.serviceha.monitor')
- def test__serviceha_run_fail_script(self, mock_monitor, mock_ssh):
- p = serviceha.ServiceHA(self.args, self.ctx)
- mock_ssh.SSH().execute.return_value = (0, 'running', '')
p.setup()
-
- monitor_result = {'total_time': 5, 'outage_time': 0, 'total_count': 16, 'outage_count': 0}
- mock_monitor.Monitor().get_result.return_value = monitor_result
-
- p.connection = mock_ssh.SSH()
- mock_ssh.SSH().execute.return_value = (-1, 'error', '')
-
- result = {}
- self.assertRaises(RuntimeError, p.run, result)
-
- @mock.patch('yardstick.benchmark.scenarios.availability.serviceha.monitor')
- def test__serviceha_run_fail_sla(self, mock_monitor, mock_ssh):
- p = serviceha.ServiceHA(self.args, self.ctx)
- mock_ssh.SSH().execute.return_value = (0, 'running', '')
- p.setup()
-
- monitor_result = {'total_time': 10, 'outage_time': 5, 'total_count': 16, 'outage_count': 0}
- mock_monitor.Monitor().get_result.return_value = monitor_result
-
- p.connection = mock_ssh.SSH()
- mock_ssh.SSH().execute.return_value = (0, 'success', '')
+ self.assertEqual(p.setup_done, True)
result = {}
- self.assertRaises(AssertionError, p.run, result)
-
- def test__serviceha_teardown_successful(self, mock_ssh):
- p = serviceha.ServiceHA(self.args, self.ctx)
- mock_ssh.SSH().execute.return_value = (0, 'running', '')
- p.setup()
- p.need_teardown = True
-
- mock_ssh.SSH().execute.return_value = (0, 'success', '')
- p.teardown()
-
- self.assertEqual(p.need_teardown, False)
-
- def test__serviceha_teardown_fail_script(self, mock_ssh):
- p = serviceha.ServiceHA(self.args, self.ctx)
- mock_ssh.SSH().execute.return_value = (0, 'running', '')
- p.setup()
- p.need_teardown = True
-
- mock_ssh.SSH().execute.return_value = (-1, 'false', '')
-
- self.assertRaises(RuntimeError, p.teardown)
+ result["outage_time"] = 10
+ mock_monitor.Monitor().get_result.return_value = result
+ ret = {}
+ self.assertRaises(AssertionError, p.run, ret)