1 ##############################################################################
2 # Copyright (c) 2019 Lenovo Group Limited Co.,Ltd and others.
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 ##############################################################################
10 # Unittest for yardstick.benchmark.scenarios.energy.energy.Energy
12 from __future__ import absolute_import
16 from yardstick.benchmark.scenarios.energy import energy
19 class EnergyTestCase(unittest.TestCase):
26 'password': 'passw0rd',
27 'redfish_ip': '10.229.17.105',
28 'redfish_user': 'USERID',
29 'redfish_pwd': "PASSW0RD",
34 @mock.patch('yardstick.benchmark.scenarios.'
35 'energy.energy.Energy._send_request')
36 def test_setup_response_success(self, mock_send_request):
38 p = energy.Energy(args, self.ctx)
39 mock_send_request.return_value.status_code = 200
41 self.assertTrue(p.get_response)
42 self.assertTrue(p.setup_done)
44 @mock.patch('yardstick.benchmark.scenarios.'
45 'energy.energy.Energy._send_request')
46 def test_setup_response_failed(self, mock_send_request):
48 p = energy.Energy(args, self.ctx)
49 mock_send_request.return_value.status_code = 404
51 self.assertFalse(p.get_response)
52 self.assertTrue(p.setup_done)
54 @mock.patch('yardstick.benchmark.scenarios.'
55 'energy.energy.Energy._send_request')
56 def test_load_chassis_list_success(self, mock_send_request):
58 p = energy.Energy(args, self.ctx)
59 expect_result = self._read_file("energy_sample_chassis_output.txt")
60 expect_result = str(expect_result)
61 expect_result = expect_result.replace("'", '"')
62 mock_send_request.return_value.status_code = 200
63 mock_send_request.return_value.text = expect_result
64 self.result = p.load_chassis_list()
65 self.assertEqual(self.result, ["/redfish/v1/Chassis/1"])
67 @mock.patch('yardstick.benchmark.scenarios.'
68 'energy.energy.Energy._send_request')
69 def test_load_chassis_response_fail(self, mock_send_request):
71 p = energy.Energy(args, self.ctx)
72 mock_send_request.return_value.status_code = 404
73 self.result = p.load_chassis_list()
74 self.assertEqual(self.result, [])
76 @mock.patch('yardstick.benchmark.scenarios.'
77 'energy.energy.Energy._send_request')
78 def test_load_chassis_wrongtype_response(self, mock_send_request):
80 p = energy.Energy(args, self.ctx)
81 mock_send_request.return_value.status_code = 200
83 mock_send_request.return_value.text = expect_result
84 self.result = p.load_chassis_list()
85 self.assertEqual(self.result, [])
87 @mock.patch('yardstick.benchmark.scenarios.'
88 'energy.energy.Energy._send_request')
89 def test_load_chassis_inproper_key(self, mock_send_request):
91 p = energy.Energy(args, self.ctx)
92 mock_send_request.return_value.status_code = 200
93 expect_result = '{"some_key": "some_value"}'
94 mock_send_request.return_value.text = expect_result
95 self.result = p.load_chassis_list()
96 self.assertEqual(self.result, [])
98 @mock.patch('yardstick.benchmark.scenarios.'
99 'energy.energy.Energy._send_request')
100 def test_energy_getpower_success(self, mock_send_request):
102 p = energy.Energy(args, self.ctx)
103 expect_result = self._read_file("energy_sample_power_metrics.txt")
104 expect_result = str(expect_result)
105 expect_result = expect_result.replace("'", '"')
106 mock_send_request.return_value.status_code = 200
107 mock_send_request.return_value.text = expect_result
108 self.result = p.get_power("/redfish/v1/Chassis/1")
109 self.assertEqual(self.result, 344)
111 @mock.patch('yardstick.benchmark.scenarios.'
112 'energy.energy.Energy._send_request')
113 def test_energy_getpower_response_fail(self, mock_send_request):
115 p = energy.Energy(args, self.ctx)
116 mock_send_request.return_value.status_code = 404
117 self.result = p.get_power("/redfish/v1/Chassis/1")
118 self.assertEqual(self.result, -1)
120 @mock.patch('yardstick.benchmark.scenarios.'
121 'energy.energy.Energy._send_request')
122 def test_energy_getpower_wrongtype_response(self, mock_send_request):
124 p = energy.Energy(args, self.ctx)
125 mock_send_request.return_value.status_code = 200
127 mock_send_request.return_value.text = expect_result
128 self.result = p.get_power("/redfish/v1/Chassis/1")
129 self.assertEqual(self.result, -1)
131 @mock.patch('yardstick.benchmark.scenarios.'
132 'energy.energy.Energy._send_request')
133 def test_energy_getpower_inproper_key(self, mock_send_request):
135 p = energy.Energy(args, self.ctx)
136 mock_send_request.return_value.status_code = 200
137 expect_result = '{"some_key": "some_value"}'
138 mock_send_request.return_value.text = expect_result
139 self.result = p.get_power("/redfish/v1/Chassis/1")
140 self.assertEqual(self.result, -1)
142 @mock.patch('yardstick.benchmark.scenarios.'
143 'energy.energy.Energy._send_request')
144 def test_run_success(self, mock_send_request):
146 p = energy.Energy(args, self.ctx)
147 mock_send_request.return_value.status_code = 200
148 chassis_list = mock.Mock(return_value=["/redfish/v1/Chassis/1"])
149 p.load_chassis_list = chassis_list
150 power = mock.Mock(return_value=344)
153 self.assertEqual(self.result, {"power": 344})
155 @mock.patch('yardstick.benchmark.scenarios.'
156 'energy.energy.Energy._send_request')
157 def test_run_no_response(self, mock_send_request):
159 p = energy.Energy(args, self.ctx)
160 mock_send_request.return_value.status_code = 404
161 chassis_list = mock.Mock(return_value=["/redfish/v1/Chassis/1"])
162 p.load_chassis_list = chassis_list
164 self.assertEqual(self.result, {"power": -1})
166 @mock.patch('yardstick.benchmark.scenarios.'
167 'energy.energy.Energy._send_request')
168 def test_run_wrong_chassis(self, mock_send_request):
170 p = energy.Energy(args, self.ctx)
171 mock_send_request.return_value.status_code = 200
172 chassis_list = mock.Mock(return_value=[])
173 p.load_chassis_list = chassis_list
175 self.assertEqual(self.result, {"power": -1})
177 def _read_file(self, filename):
178 curr_path = os.path.dirname(os.path.abspath(__file__))
179 output = os.path.join(curr_path, filename)
180 with open(output) as f:
181 sample_output = f.read()