3 # Copyright (c) 2016-2017 Intel Corporation
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
18 # Unittest for yardstick.benchmark.contexts.standalone
20 from __future__ import absolute_import
24 from yardstick.benchmark.contexts import standalone
25 from yardstick.benchmark.contexts import sriov
28 'yardstick.benchmark.contexts': mock.MagicMock(),
29 'yardstick.benchmark.contexts.sriov': mock.MagicMock(),
30 'yardstick.benchmark.contexts.standalone': mock.MagicMock(),
34 class StandaloneContextTestCase(unittest.TestCase):
36 NODES_SAMPLE = "nodes_sample_new.yaml"
37 NODES_DUPLICATE_SAMPLE = "nodes_duplicate_sample_new.yaml"
40 self.test_context = standalone.StandaloneContext()
42 def test_construct(self):
43 self.assertIsNone(self.test_context.name)
44 self.assertIsNone(self.test_context.file_path)
45 self.assertEqual(self.test_context.nodes, [])
46 self.assertEqual(self.test_context.nfvi_node, [])
48 def test_unsuccessful_init(self):
51 'file': self._get_file_abspath("error_file")
53 self.assertRaises(IOError, self.test_context.init, attrs)
55 def test_successful_init(self):
58 'file': self._get_file_abspath(self.NODES_SAMPLE)
61 self.test_context.nfvi_node = [{
63 'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'],
64 'ip': '10.123.123.122',
67 'images': '/var/lib/libvirt/images/ubuntu1.img',
69 'password': 'password',
70 'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
71 self.test_context.get_nfvi_obj = mock.Mock()
72 self.test_context.init(attrs)
73 self.assertEqual(self.test_context.name, "sriov")
74 self.assertEqual(len(self.test_context.nodes), 3)
75 self.assertEqual(len(self.test_context.nfvi_node), 2)
76 self.assertEqual(self.test_context.nfvi_node[0]["name"], "sriov")
78 def test__get_server_with_dic_attr_name(self):
81 'file': self._get_file_abspath(self.NODES_SAMPLE)
83 self.test_context.nfvi_node = [{
85 'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'],
86 'ip': '10.123.123.122',
89 'images': '/var/lib/libvirt/images/ubuntu1.img',
91 'password': 'password',
92 'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
93 self.test_context.init(attrs)
94 attr_name = {'name': 'foo.bar'}
95 result = self.test_context._get_server(attr_name)
96 self.assertEqual(result, None)
98 def test__get_server_not_found(self):
101 'file': self._get_file_abspath(self.NODES_SAMPLE)
103 self.test_context.nfvi_node = [{
105 'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'],
106 'ip': '10.123.123.122',
109 'images': '/var/lib/libvirt/images/ubuntu1.img',
110 'phy_driver': 'i40e',
111 'password': 'password',
112 'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
113 self.test_context.init(attrs)
114 attr_name = 'bar.foo'
115 result = self.test_context._get_server(attr_name)
116 self.assertEqual(result, None)
118 def test__get_server_duplicate(self):
121 'file': self._get_file_abspath(self.NODES_DUPLICATE_SAMPLE)
123 self.test_context.nfvi_node = [{
125 'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'],
126 'ip': '10.123.123.122',
129 'images': '/var/lib/libvirt/images/ubuntu1.img',
130 'phy_driver': 'i40e',
131 'password': 'password',
132 'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
133 self.test_context.init(attrs)
134 attr_name = 'sriov.foo'
137 self.test_context._get_server,
140 def test__get_server_found(self):
143 'file': self._get_file_abspath(self.NODES_SAMPLE)
145 self.test_context.nfvi_node = [{
147 'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'],
148 'ip': '10.123.123.122',
151 'images': '/var/lib/libvirt/images/ubuntu1.img',
152 'phy_driver': 'i40e',
153 'password': 'password',
154 'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
155 self.test_context.init(attrs)
156 attr_name = 'sriov.sriov'
157 result = self.test_context._get_server(attr_name)
158 self.assertEqual(result['ip'], '10.123.123.122')
159 self.assertEqual(result['name'], 'sriov.sriov')
160 self.assertEqual(result['user'], 'root')
162 def test_deploy(self):
165 'file': self._get_file_abspath(self.NODES_SAMPLE)
168 self.test_context.nfvi_node = [{
170 'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'],
171 'ip': '10.123.123.122',
174 'images': '/var/lib/libvirt/images/ubuntu1.img',
175 'phy_driver': 'i40e',
176 'password': 'password',
177 'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
178 self.test_context.get_nfvi_obj = mock.MagicMock()
179 self.test_context.init(attrs)
180 self.test_context.nfvi_obj.ssh_remote_machine = mock.Mock()
181 self.test_context.nfvi_obj.first_run = True
182 self.test_context.nfvi_obj.get_nic_details = mock.Mock()
183 PORTS = ['0000:06:00.0', '0000:06:00.1']
185 'interface': {0: 'enp6s0f0', 1: 'enp6s0f1'},
186 'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'],
187 'pci': ['0000:06:00.0', '0000:06:00.1'],
188 'phy_driver': 'i40e'}
190 result = self.test_context.nfvi_obj.setup_sriov_context(
194 print("{0}".format(result))
195 self.assertIsNone(self.test_context.deploy())
197 def test_undeploy(self):
200 'file': self._get_file_abspath(self.NODES_SAMPLE)
202 self.test_context.nfvi_node = [{
204 'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'],
205 'ip': '10.123.123.122',
208 'images': '/var/lib/libvirt/images/ubuntu1.img',
209 'phy_driver': 'i40e',
210 'password': 'password',
211 'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
212 self.test_context.get_nfvi_obj = mock.MagicMock()
213 self.test_context.init(attrs)
214 self.test_context.nfvi_obj.destroy_vm = mock.Mock()
215 self.assertIsNone(self.test_context.undeploy())
217 def test_get_nfvi_obj(self):
218 with mock.patch('yardstick.benchmark.contexts.sriov'):
221 'file': self._get_file_abspath(self.NODES_SAMPLE)
223 self.test_context.init(attrs)
224 self.test_context.nfvi_obj.file_path = self._get_file_abspath(
226 self.test_context.nfvi_node = [{
228 'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'],
229 'ip': '10.123.123.122',
232 'images': '/var/lib/libvirt/images/ubuntu1.img',
233 'phy_driver': 'i40e',
234 'password': 'password',
235 'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
236 self.test_context.get_nfvi_obj = mock.MagicMock()
237 self.test_context.init(attrs)
238 self.test_context.get_context_impl = mock.Mock(
239 return_value=sriov.Sriov)
240 self.assertIsNotNone(self.test_context.get_nfvi_obj())
242 def test_get_context_impl_correct_obj(self):
243 with mock.patch.dict("sys.modules", MOCKS):
244 self.assertIsNotNone(self.test_context.get_context_impl('Sriov'))
246 def test_get_context_impl_wrong_obj(self):
247 with mock.patch.dict("sys.modules", MOCKS):
250 lambda: self.test_context.get_context_impl('wrong_object'))
252 def _get_file_abspath(self, filename):
253 curr_path = os.path.dirname(os.path.abspath(__file__))
254 file_path = os.path.join(curr_path, filename)
257 def test__get_network(self):
261 'segmentation_id': 'seg54',
262 'network_type': 'type_a',
263 'physical_network': 'phys',
269 self.test_context.networks = {
275 self.assertIsNone(self.test_context._get_network(attr_name))
278 self.assertIsNone(self.test_context._get_network(attr_name))
280 attr_name = {'vld_id': 'vld777'}
281 self.assertIsNone(self.test_context._get_network(attr_name))
284 self.assertIsNone(self.test_context._get_network(attr_name))
286 attr_name = {'vld_id': 'vld999'}
290 "segmentation_id": None,
291 "network_type": None,
292 "physical_network": None,
294 result = self.test_context._get_network(attr_name)
295 self.assertDictEqual(result, expected)
299 result = self.test_context._get_network(attr_name)
300 self.assertDictEqual(result, expected)
301 if __name__ == '__main__':