1 ##############################################################################
2 # Copyright (c) 2016 Huawei Technologies Co.,Ltd and other.
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 ##############################################################################
11 # yardstick.benchmark.scenarios.networking.netutilization.NetUtilization
13 from __future__ import absolute_import
18 from yardstick.benchmark.scenarios.networking import netutilization
21 @mock.patch('yardstick.benchmark.scenarios.networking.netutilization.ssh')
22 class NetUtilizationTestCase(unittest.TestCase):
29 'key_filename': "mykey.key"
35 def test_setup_success(self, mock_ssh):
40 args = {'options': options}
42 n = netutilization.NetUtilization(args, self.ctx)
43 mock_ssh.SSH.from_node().execute.return_value = (0, '', '')
46 self.assertIsNotNone(n.client)
47 self.assertTrue(n.setup_done)
49 def test_execute_command_success(self, mock_ssh):
54 args = {'options': options}
56 n = netutilization.NetUtilization(args, self.ctx)
57 mock_ssh.SSH.from_node().execute.return_value = (0, '', '')
60 expected_result = 'abcdefg'
61 mock_ssh.SSH.from_node().execute.return_value = (0, expected_result, '')
62 result = n._execute_command("foo")
63 self.assertEqual(result, expected_result)
65 def test_execute_command_failed(self, mock_ssh):
70 args = {'options': options}
72 n = netutilization.NetUtilization(args, self.ctx)
73 mock_ssh.SSH.from_node().execute.return_value = (0, '', '')
76 mock_ssh.SSH.from_node().execute.return_value = (127, '', 'abcdefg')
77 self.assertRaises(RuntimeError, n._execute_command,
80 def test_get_network_utilization_success(self, mock_ssh):
85 args = {'options': options}
87 n = netutilization.NetUtilization(args, self.ctx)
88 mock_ssh.SSH.from_node().execute.return_value = (0, '', '')
91 mpstat_output = self._read_file("netutilization_sample_output1.txt")
92 mock_ssh.SSH.from_node().execute.return_value = (0, mpstat_output, '')
93 result = n._get_network_utilization()
96 {"network_utilization_maximun": {
97 "lo": {"rxcmp/s": "0.00",
105 "eth0": {"rxcmp/s": "0.00",
112 "rxmcst/s": "0.00"}},
113 "network_utilization_average": {
114 "lo": {"rxcmp/s": "0.00",
122 "eth0": {"rxcmp/s": "0.00",
129 "rxmcst/s": "0.00"}},
130 "network_utilization_minimum": {
131 "lo": {"rxcmp/s": "0.00",
139 "eth0": {"rxcmp/s": "0.00",
146 "rxmcst/s": "0.00"}}}
148 self.assertDictEqual(result, expected_result)
150 def test_get_network_utilization_2_success(self, mock_ssh):
155 args = {'options': options}
157 n = netutilization.NetUtilization(args, self.ctx)
158 mock_ssh.SSH.from_node().execute.return_value = (0, '', '')
161 mpstat_output = self._read_file("netutilization_sample_output2.txt")
162 mock_ssh.SSH.from_node().execute.return_value = (0, mpstat_output, '')
163 result = n._get_network_utilization()
166 {"network_utilization_maximun": {
167 "lo": {"rxcmp/s": "0.00",
175 "eth0": {"rxcmp/s": "0.00",
182 "rxmcst/s": "0.00"}},
183 "network_utilization_average": {
184 "lo": {"rxcmp/s": "0.00",
192 "eth0": {"rxcmp/s": "0.00",
199 "rxmcst/s": "0.00"}},
200 "network_utilization_minimum": {
201 "lo": {"rxcmp/s": "0.00",
209 "eth0": {"rxcmp/s": "0.00",
216 "rxmcst/s": "0.00"}}}
218 self.assertDictEqual(result, expected_result)
220 def _read_file(self, filename):
221 curr_path = os.path.dirname(os.path.abspath(__file__))
222 output = os.path.join(curr_path, filename)
223 with open(output) as f:
224 sample_output = f.read()