Merge "Add scale out TCs with availability zone support"
[yardstick.git] / yardstick / tests / unit / benchmark / scenarios / availability / test_scenario_general.py
1 ##############################################################################
2 # Copyright (c) 2016 Huan Li and others
3 # lihuansse@tongji.edu.cn
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8 ##############################################################################
9
10 import mock
11 import unittest
12
13 from yardstick.benchmark.scenarios.availability import scenario_general
14 from yardstick.common import exceptions as y_exc
15
16 class ScenarioGeneralTestCase(unittest.TestCase):
17
18     @mock.patch.object(scenario_general, 'Director')
19     def setUp(self, *args):
20         self.scenario_cfg = {
21             'type': "general_scenario",
22             'options': {
23                 'attackers': [{
24                     'fault_type': "general-attacker",
25                     'key': "kill-process"}],
26                 'monitors': [{
27                     'monitor_type': "general-monitor",
28                     'key': "service-status"}],
29                 'steps': [
30                     {
31                         'actionKey': "kill-process",
32                         'actionType': "attacker",
33                         'index': 1},
34                     {
35                         'actionKey': "service-status",
36                         'actionType': "monitor",
37                         'index': 2}]
38             }
39         }
40         self.instance = scenario_general.ScenarioGeneral(self.scenario_cfg, None)
41         self.instance.setup()
42         self.instance.director.verify.return_value = True
43
44     def test_scenario_general_all_successful(self):
45
46         ret = {}
47         self.instance.run(ret)
48         self.instance.teardown()
49         self.assertEqual(ret['sla_pass'], 1)
50
51     def test_scenario_general_exception(self):
52         self.instance.director.createActionPlayer.side_effect = KeyError('Wrong')
53         self.instance.director.data = {}
54         ret = {}
55         self.instance.run(ret)
56         self.instance.teardown()
57         self.assertEqual(ret['sla_pass'], 1)
58
59     def test_scenario_general_case_fail(self):
60         self.instance.director.verify.return_value = False
61         self.instance.director.data = {}
62         ret = {}
63         self.assertRaises(y_exc.SLAValidationError, self.instance.run, ret)
64         self.instance.teardown()
65         self.assertEqual(ret['sla_pass'], 0)
66
67     def test_scenario_general_case_service_not_found_fail(self):
68         self.instance.director.verify.return_value = True
69         self.instance.director.data = {"general-attacker": 0}
70         ret = {}
71         self.assertRaises(y_exc.SLAValidationError, self.instance.run, ret)
72         self.instance.teardown()
73         self.assertEqual(ret['sla_pass'], 0)