Merge "bugfix: tc063 fails to get the correct result in ubuntu node"
[yardstick.git] / tests / unit / benchmark / contexts / test_standalone.py
1 #!/usr/bin/env python
2
3 # Copyright (c) 2016-2017 Intel Corporation
4 #
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
8 #
9 #      http://www.apache.org/licenses/LICENSE-2.0
10 #
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.
16 #
17
18 # Unittest for yardstick.benchmark.contexts.standalone
19
20 from __future__ import absolute_import
21
22 import os
23 import unittest
24
25 import mock
26
27 from yardstick.benchmark.contexts import standalone
28 from yardstick.benchmark.contexts.standalone import ovsdpdk, sriov
29
30 MOCKS = {
31     'yardstick.benchmark.contexts': mock.MagicMock(),
32     'yardstick.benchmark.contexts.standalone.sriov': mock.MagicMock(),
33     'yardstick.benchmark.contexts.standalone.ovsdpdk': mock.MagicMock(),
34     'yardstick.benchmark.contexts.standalone': mock.MagicMock(),
35 }
36
37
38 @mock.patch('yardstick.benchmark.contexts.standalone.ovsdpdk.time')
39 @mock.patch('yardstick.benchmark.contexts.standalone.time')
40 @mock.patch('yardstick.benchmark.contexts.standalone.sriov.time')
41 class StandaloneContextTestCase(unittest.TestCase):
42     NODES_SAMPLE = "nodes_sample_new.yaml"
43     NODES_SAMPLE_SRIOV = "nodes_sample_new_sriov.yaml"
44     NODES_DUPLICATE_SAMPLE = "nodes_duplicate_sample_new.yaml"
45
46     NODES_SAMPLE_OVSDPDK = "nodes_sample_ovs.yaml"
47     NODES_SAMPLE_OVSDPDK_ROLE = "nodes_sample_ovsdpdk.yaml"
48     NODES_DUPLICATE_OVSDPDK = "nodes_duplicate_sample_ovs.yaml"
49
50     def setUp(self):
51         self.test_context = standalone.StandaloneContext()
52
53     def test_construct(self, mock_sriov_time, mock_standlalone_time, mock_ovsdpdk_time):
54         self.assertIsNone(self.test_context.name)
55         self.assertIsNone(self.test_context.file_path)
56         self.assertEqual(self.test_context.nodes, [])
57         self.assertEqual(self.test_context.nfvi_node, [])
58
59     def test_unsuccessful_init(self, mock_sriov_time, mock_standlalone_time, mock_ovsdpdk_time):
60         attrs = {
61             'name': 'foo',
62             'file': self._get_file_abspath("error_file")
63         }
64         self.assertRaises(IOError, self.test_context.init, attrs)
65
66     def test_successful_init_sriov(self, mock_sriov_time, mock_standlalone_time,
67                                    mock_ovsdpdk_time):
68         attrs_sriov = {
69             'name': 'sriov',
70             'file': self._get_file_abspath(self.NODES_SAMPLE)
71         }
72         self.test_context.nfvi_node = [{
73             'name': 'sriov',
74             'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'],
75             'ip': '10.223.197.140',
76             'role': 'Sriov',
77             'user': 'root',
78             'images': '/var/lib/libvirt/images/ubuntu1.img',
79             'phy_driver': 'i40e',
80             'password': 'intel123',
81             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
82         self.test_context.get_nfvi_obj = mock.Mock()
83         self.test_context.init(attrs_sriov)
84         self.assertEqual(self.test_context.name, "sriov")
85         self.assertEqual(len(self.test_context.nodes), 2)
86         self.assertEqual(len(self.test_context.nfvi_node), 2)
87         self.assertEqual(self.test_context.nfvi_node[0]["name"], "sriov")
88
89     def test_successful_init_ovs(self, mock_sriov_time, mock_standlalone_time, mock_ovsdpdk_time):
90         attrs_ovs = {
91             'name': 'ovs',
92             'file': self._get_file_abspath(self.NODES_SAMPLE_OVSDPDK)
93         }
94         self.test_context.nfvi_node = [{
95             'name': 'ovs',
96             'vports_mac': ['00:00:00:00:00:03', '00:00:00:00:00:04'],
97             'ip': '10.223.197.140',
98             'role': 'Ovsdpdk',
99             'user': 'root',
100             'vpath': '/usr/local/',
101             'images': '/var/lib/libvirt/images/ubuntu1.img',
102             'phy_driver': 'i40e',
103             'password': 'password',
104             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
105         self.test_context.get_nfvi_obj = mock.Mock()
106         self.test_context.init(attrs_ovs)
107         self.assertEqual(self.test_context.name, "ovs")
108         self.assertEqual(len(self.test_context.nodes), 2)
109         self.assertEqual(len(self.test_context.nfvi_node), 2)
110         self.assertEqual(self.test_context.nfvi_node[0]["name"], "ovs")
111
112     def test__get_server_with_dic_attr_name_sriov(self, mock_sriov_time, mock_standlalone_time,
113                                                   mock_ovsdpdk_time):
114         attrs_sriov = {
115             'name': 'foo',
116             'file': self._get_file_abspath(self.NODES_SAMPLE)
117         }
118         self.test_context.nfvi_node = [{
119             'name': 'sriov',
120             'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'],
121             'ip': '10.223.197.140',
122             'role': 'Sriov',
123             'user': 'root',
124             'images': '/var/lib/libvirt/images/ubuntu1.img',
125             'phy_driver': 'i40e',
126             'password': 'intel123',
127             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
128         self.test_context.init(attrs_sriov)
129         attr_name = {'name': 'foo.bar'}
130         result = self.test_context._get_server(attr_name)
131         self.assertEqual(result, None)
132
133     def test__get_server_with_dic_attr_name_ovs(self, mock_sriov_time, mock_standlalone_time,
134                                                 mock_ovsdpdk_time):
135         attrs_ovs = {
136             'name': 'foo',
137             'file': self._get_file_abspath(self.NODES_SAMPLE_OVSDPDK)
138         }
139         self.test_context.nfvi_node = [{
140             'name': 'ovs',
141             'vports_mac': ['00:00:00:00:00:03', '00:00:00:00:00:04'],
142             'ip': '10.223.197.140',
143             'role': 'Ovsdpdk',
144             'user': 'root',
145             'vpath': '/usr/local/',
146             'images': '/var/lib/libvirt/images/ubuntu1.img',
147             'phy_driver': 'i40e',
148             'password': 'intel123',
149             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
150         self.test_context.init(attrs_ovs)
151         attr_name = {'name': 'foo.bar'}
152         result = self.test_context._get_server(attr_name)
153         self.assertEqual(result, None)
154
155     def test__get_server_not_found_sriov(self, mock_sriov_time, mock_standlalone_time,
156                                          mock_ovsdpdk_time):
157         attrs = {
158             'name': 'foo',
159             'file': self._get_file_abspath(self.NODES_SAMPLE)
160         }
161         self.test_context.nfvi_node = [{
162             'name': 'sriov',
163             'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'],
164             'ip': '10.223.197.140',
165             'role': 'Sriov',
166             'user': 'root',
167             'images': '/var/lib/libvirt/images/ubuntu1.img',
168             'phy_driver': 'i40e',
169             'password': 'password',
170             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
171         self.test_context.init(attrs)
172         attr_name = 'bar.foo'
173         result = self.test_context._get_server(attr_name)
174         self.assertEqual(result, None)
175
176     def test__get_server_not_found_ovs(self, mock_sriov_time, mock_standlalone_time,
177                                        mock_ovsdpdk_time):
178         attrs = {
179             'name': 'foo',
180             'file': self._get_file_abspath(self.NODES_SAMPLE_OVSDPDK)
181         }
182         self.test_context.nfvi_node = [{
183             'name': 'ovs',
184             'vports_mac': ['00:00:00:00:00:03', '00:00:00:00:00:04'],
185             'ip': '10.223.197.140',
186             'role': 'Ovsdpdk',
187             'user': 'root',
188             'vpath': '/usr/local/',
189             'images': '/var/lib/libvirt/images/ubuntu1.img',
190             'phy_driver': 'i40e',
191             'password': 'password',
192             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
193         self.test_context.init(attrs)
194         attr_name = 'bar.foo'
195         result = self.test_context._get_server(attr_name)
196         self.assertEqual(result, None)
197
198     def test__get_server_duplicate_sriov(self, mock_sriov_time, mock_standlalone_time,
199                                          mock_ovsdpdk_time):
200         attrs = {
201             'name': 'foo',
202             'file': self._get_file_abspath(self.NODES_DUPLICATE_SAMPLE)
203         }
204         self.test_context.nfvi_node = [{
205             'name': 'sriov',
206             'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'],
207             'ip': '10.223.197.140',
208             'role': 'Sriov',
209             'user': 'root',
210             'images': '/var/lib/libvirt/images/ubuntu1.img',
211             'phy_driver': 'i40e',
212             'password': 'password',
213             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
214         self.test_context.get_nfvi_obj = mock.Mock(return_value="sriov")
215         self.test_context.init(attrs)
216         attr_name = 'sriov.foo'
217         # self.test_context.name = "sriov"
218         self.assertRaises(ValueError, self.test_context._get_server, attr_name)
219
220     def test__get_server_duplicate_ovs(self, mock_sriov_time, mock_standlalone_time,
221                                        mock_ovsdpdk_time):
222         attrs = {
223             'name': 'foo',
224             'file': self._get_file_abspath(self.NODES_DUPLICATE_OVSDPDK)
225         }
226         self.test_context.nfvi_node = [{
227             'name': 'ovs',
228             'vports_mac': ['00:00:00:00:00:03', '00:00:00:00:00:04'],
229             'ip': '10.223.197.140',
230             'role': 'Ovsdpdk',
231             'user': 'root',
232             'vpath': '/usr/local/',
233             'images': '/var/lib/libvirt/images/ubuntu1.img',
234             'phy_driver': 'i40e',
235             'password': 'intel123',
236             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
237
238         self.test_context.get_nfvi_obj = mock.Mock(return_value="OvsDpdk")
239         self.test_context.init(attrs)
240
241         attr_name = 'ovs.foo'
242         self.assertRaises(
243             ValueError,
244             self.test_context._get_server,
245             attr_name)
246
247     def test__get_server_found_sriov(self, mock_sriov_time, mock_standlalone_time,
248                                      mock_ovsdpdk_time):
249         attrs = {
250             'name': 'foo',
251             'file': self._get_file_abspath(self.NODES_SAMPLE_SRIOV)
252         }
253         self.test_context.nfvi_node = [{
254             'name': 'sriov',
255             'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'],
256             'ip': '10.223.197.140',
257             'role': 'Sriov',
258             'user': 'root',
259             'images': '/var/lib/libvirt/images/ubuntu1.img',
260             'phy_driver': 'i40e',
261             'password': 'intel123',
262             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
263
264         self.test_context.get_nfvi_obj = mock.Mock(return_value="OvsDpdk")
265         self.test_context.init(attrs)
266         attr_name = 'sriov.foo'
267         result = self.test_context._get_server(attr_name)
268         self.assertEqual(result['ip'], '10.123.123.122')
269         self.assertEqual(result['name'], 'sriov.foo')
270         self.assertEqual(result['user'], 'root')
271
272     def test__get_server_found_ovs(self, mock_sriov_time, mock_standlalone_time,
273                                    mock_ovsdpdk_time):
274         attrs = {
275             'name': 'foo',
276             'file': self._get_file_abspath(self.NODES_SAMPLE_OVSDPDK_ROLE)
277         }
278         self.test_context.nfvi_node = [{
279             'name': 'ovs',
280             'vports_mac': ['00:00:00:00:00:03', '00:00:00:00:00:04'],
281             'ip': '10.223.197.140',
282             'role': 'Ovsdpdk',
283             'user': 'root',
284             'vpath': '/usr/local/',
285             'images': '/var/lib/libvirt/images/ubuntu1.img',
286             'phy_driver': 'i40e',
287             'password': 'password',
288             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
289         self.test_context.get_nfvi_obj = mock.Mock(return_value="OvsDpdk")
290         self.test_context.init(attrs)
291         attr_name = 'ovs.foo'
292         result = self.test_context._get_server(attr_name)
293         self.assertEqual(result['ip'], '10.223.197.222')
294         self.assertEqual(result['name'], 'ovs.foo')
295         self.assertEqual(result['user'], 'root')
296
297     def test__deploy_unsuccessful(self, mock_sriov_time, mock_standlalone_time, mock_ovsdpdk_time):
298         self.test_context.vm_deploy = False
299
300     def test__deploy_sriov_firsttime(self, mock_sriov_time, mock_standlalone_time,
301                                      mock_ovsdpdk_time):
302         attrs = {
303             'name': 'foo',
304             'file': self._get_file_abspath(self.NODES_SAMPLE)
305         }
306         self.test_context.nfvi_node = [{
307             'name': 'sriov',
308             'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'],
309             'ip': '10.223.197.140',
310             'role': 'Sriov',
311             'user': 'root',
312             'images': '/var/lib/libvirt/images/ubuntu1.img',
313             'phy_driver': 'i40e',
314             'password': 'intel123',
315             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
316
317         MYSRIOV = [{
318             'name': 'sriov',
319             'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'],
320             'ip': '10.223.197.140',
321             'role': 'Sriov',
322             'user': 'root',
323             'images': '/var/lib/libvirt/images/ubuntu1.img',
324             'phy_driver': 'i40e',
325             'password': 'intel123',
326             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
327
328         self.test_context.vm_deploy = True
329
330         self.test_context.get_nfvi_obj = mock.MagicMock()
331         self.test_context.init(attrs)
332         self.test_context.nfvi_obj.sriov = MYSRIOV
333         self.test_context.nfvi_obj.ssh_remote_machine = mock.Mock()
334         self.test_context.nfvi_obj.first_run = True
335         self.test_context.nfvi_obj.install_req_libs()
336         self.test_context.nfvi_obj.get_nic_details = mock.Mock()
337         PORTS = ['0000:06:00.0', '0000:06:00.1']
338         NIC_DETAILS = {
339             'interface': {0: 'enp6s0f0', 1: 'enp6s0f1'},
340             'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'],
341             'pci': ['0000:06:00.0', '0000:06:00.1'],
342             'phy_driver': 'i40e'}
343         DRIVER = 'i40e'
344         result = self.test_context.nfvi_obj.setup_sriov_context(
345             PORTS,
346             NIC_DETAILS,
347             DRIVER)
348         print("{0}".format(result))
349         self.assertIsNone(self.test_context.deploy())
350
351     def test__deploy_sriov_notfirsttime(self, mock_sriov_time, mock_standlalone_time,
352                                         mock_ovsdpdk_time):
353         attrs = {
354             'name': 'foo',
355             'file': self._get_file_abspath(self.NODES_SAMPLE)
356         }
357
358         self.test_context.nfvi_node = [{
359             'name': 'sriov',
360             'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'],
361             'ip': '10.223.197.140',
362             'role': 'Sriov',
363             'user': 'root',
364             'images': '/var/lib/libvirt/images/ubuntu1.img',
365             'phy_driver': 'i40e',
366             'password': 'intel123',
367             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
368         MYSRIOV = [{
369             'name': 'sriov',
370             'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'],
371             'ip': '10.223.197.140',
372             'role': 'Sriov',
373             'user': 'root',
374             'images': '/var/lib/libvirt/images/ubuntu1.img',
375             'phy_driver': 'i40e',
376             'password': 'intel123',
377             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
378
379         self.test_context.vm_deploy = True
380         self.test_context.get_nfvi_obj = mock.MagicMock()
381         self.test_context.init(attrs)
382         self.test_context.nfvi_obj.sriov = MYSRIOV
383         self.test_context.nfvi_obj.ssh_remote_machine = mock.Mock()
384         self.test_context.nfvi_obj.first_run = False
385         self.test_context.nfvi_obj.get_nic_details = mock.Mock()
386         PORTS = ['0000:06:00.0', '0000:06:00.1']
387         NIC_DETAILS = {
388             'interface': {0: 'enp6s0f0', 1: 'enp6s0f1'},
389             'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'],
390             'pci': ['0000:06:00.0', '0000:06:00.1'],
391             'phy_driver': 'i40e'}
392         DRIVER = 'i40e'
393         result = self.test_context.nfvi_obj.setup_sriov_context(
394             PORTS,
395             NIC_DETAILS,
396             DRIVER)
397         print("{0}".format(result))
398         self.assertIsNone(self.test_context.deploy())
399
400     def test__deploy_ovs_firsttime(self, mock_sriov_time, mock_standlalone_time,
401                                    mock_ovsdpdk_time):
402         attrs = {
403             'name': 'foo',
404             'file': self._get_file_abspath(self.NODES_SAMPLE_OVSDPDK)
405         }
406
407         self.test_context.nfvi_node = [{
408             'name': 'ovs',
409             'vports_mac': ['00:00:00:00:00:03', '00:00:00:00:00:04'],
410             'ip': '10.223.197.140',
411             'role': 'Ovsdpdk',
412             'user': 'root',
413             'vpath': '/usr/local/',
414             'images': '/var/lib/libvirt/images/ubuntu1.img',
415             'phy_driver': 'i40e',
416             'password': 'password',
417             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
418
419         MYOVS = [{
420             'name': 'ovs',
421             'vports_mac': ['00:00:00:00:00:03', '00:00:00:00:00:04'],
422             'ip': '10.223.197.140',
423             'role': 'Ovsdpdk',
424             'user': 'root',
425             'vpath': '/usr/local/',
426             'images': '/var/lib/libvirt/images/ubuntu1.img',
427             'phy_driver': 'i40e',
428             'password': 'password',
429             'flow': ['ovs-ofctl add-flow br0 in_port=1,action=output:3',
430                      'ovs-ofctl add-flow br0 in_port=3,action=output:1'
431                      'ovs-ofctl add-flow br0 in_port=4,action=output:2'
432                      'ovs-ofctl add-flow br0 in_port=2,action=output:4'],
433             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
434
435         self.test_context.vm_deploy = True
436         self.test_context.get_nfvi_obj = mock.MagicMock()
437         self.test_context.init(attrs)
438         self.test_context.ovs = MYOVS
439         self.test_context.nfvi_obj.ssh_remote_machine = mock.Mock()
440         self.test_context.nfvi_obj.first_run = True
441         self.test_context.nfvi_obj.install_req_libs()
442         self.test_context.nfvi_obj.get_nic_details = mock.Mock()
443         PORTS = ['0000:06:00.0', '0000:06:00.1']
444         NIC_DETAILS = {
445             'interface': {0: 'enp6s0f0', 1: 'enp6s0f1'},
446             'vports_mac': ['00:00:00:00:00:05', '00:00:00:00:00:06'],
447             'pci': ['0000:06:00.0', '0000:06:00.1'],
448             'phy_driver': 'i40e'}
449         DRIVER = 'i40e'
450
451         self.test_context.nfvi_obj.setup_ovs = mock.Mock()
452         self.test_context.nfvi_obj.start_ovs_serverswitch = mock.Mock()
453         self.test_context.nfvi_obj.setup_ovs_bridge = mock.Mock()
454         self.test_context.nfvi_obj.add_oflows = mock.Mock()
455
456         result = self.test_context.nfvi_obj.setup_ovs_context(
457             PORTS,
458             NIC_DETAILS,
459             DRIVER)
460         print("{0}".format(result))
461         self.assertIsNone(self.test_context.deploy())
462
463     def test__deploy_ovs_notfirsttime(self, mock_sriov_time, mock_standlalone_time,
464                                       mock_ovsdpdk_time):
465         attrs = {
466             'name': 'foo',
467             'file': self._get_file_abspath(self.NODES_SAMPLE_OVSDPDK)
468         }
469         self.test_context.nfvi_node = [{
470             'name': 'ovs',
471             'vports_mac': ['00:00:00:00:00:03', '00:00:00:00:00:04'],
472             'ip': '10.223.197.140',
473             'role': 'Ovsdpdk',
474             'user': 'root',
475             'vpath': '/usr/local/',
476             'images': '/var/lib/libvirt/images/ubuntu1.img',
477             'phy_driver': 'i40e',
478             'password': 'password',
479             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
480
481         MYOVS = [{
482             'name': 'ovs',
483             'vports_mac': ['00:00:00:00:00:03', '00:00:00:00:00:04'],
484             'ip': '10.223.197.140',
485             'role': 'Ovsdpdk',
486             'user': 'root',
487             'vpath': '/usr/local/',
488             'images': '/var/lib/libvirt/images/ubuntu1.img',
489             'phy_driver': 'i40e',
490             'password': 'password',
491             'flow': ['ovs-ofctl add-flow br0 in_port=1,action=output:3',
492                      'ovs-ofctl add-flow br0 in_port=3,action=output:1'
493                      'ovs-ofctl add-flow br0 in_port=4,action=output:2'
494                      'ovs-ofctl add-flow br0 in_port=2,action=output:4'],
495             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
496
497         self.test_context.vm_deploy = True
498         self.test_context.get_nfvi_obj = mock.MagicMock()
499         self.test_context.init(attrs)
500         self.test_context.ovs = MYOVS
501         self.test_context.nfvi_obj.ssh_remote_machine = mock.Mock()
502         self.test_context.nfvi_obj.first_run = False
503         self.test_context.nfvi_obj.get_nic_details = mock.Mock()
504         PORTS = ['0000:06:00.0', '0000:06:00.1']
505         NIC_DETAILS = {
506             'interface': {0: 'enp6s0f0', 1: 'enp6s0f1'},
507             'vports_mac': ['00:00:00:00:00:05', '00:00:00:00:00:06'],
508             'pci': ['0000:06:00.0', '0000:06:00.1'],
509             'phy_driver': 'i40e'}
510         DRIVER = 'i40e'
511
512         self.test_context.nfvi_obj.setup_ovs(PORTS)
513         self.test_context.nfvi_obj.start_ovs_serverswitch()
514         self.test_context.nfvi_obj.setup_ovs_bridge()
515         self.test_context.nfvi_obj.add_oflows()
516
517         result = self.test_context.nfvi_obj.setup_ovs_context(
518             PORTS,
519             NIC_DETAILS,
520             DRIVER)
521         print("{0}".format(result))
522         self.assertIsNone(self.test_context.deploy())
523
524     def test_undeploy_sriov(self, mock_sriov_time, mock_standlalone_time, mock_ovsdpdk_time):
525         attrs = {
526             'name': 'foo',
527             'file': self._get_file_abspath(self.NODES_SAMPLE)
528         }
529         self.test_context.nfvi_node = [{
530             'name': 'sriov',
531             'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'],
532             'ip': '10.223.197.140',
533             'role': 'Sriov',
534             'user': 'root',
535             'images': '/var/lib/libvirt/images/ubuntu1.img',
536             'phy_driver': 'i40e',
537             'password': 'intel123',
538             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
539         self.test_context.get_nfvi_obj = mock.MagicMock()
540         self.test_context.init(attrs)
541         self.test_context.nfvi_obj.destroy_vm = mock.Mock()
542         self.assertIsNone(self.test_context.undeploy())
543
544     def test_undeploy_ovs(self, mock_sriov_time, mock_standlalone_time, mock_ovsdpdk_time):
545         attrs = {
546             'name': 'foo',
547             'file': self._get_file_abspath(self.NODES_SAMPLE_OVSDPDK)
548         }
549
550         self.test_context.nfvi_node = [{
551             'name': 'ovs',
552             'vports_mac': ['00:00:00:00:00:03', '00:00:00:00:00:04'],
553             'ip': '10.223.197.140',
554             'role': 'Ovsdpdk',
555             'user': 'root',
556             'vpath': '/usr/local/',
557             'images': '/var/lib/libvirt/images/ubuntu1.img',
558             'phy_driver': 'i40e',
559             'password': 'password',
560             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
561
562         self.test_context.get_nfvi_obj = mock.MagicMock()
563         self.test_context.init(attrs)
564         self.test_context.nfvi_obj.destroy_vm = mock.Mock()
565         self.assertIsNone(self.test_context.undeploy())
566
567     def test_get_nfvi_obj_sriov(self, mock_sriov_time, mock_standlalone_time, mock_ovsdpdk_time):
568         with mock.patch('yardstick.benchmark.contexts.standalone.sriov'):
569             attrs = {
570                 'name': 'sriov',
571                 'file': self._get_file_abspath(self.NODES_SAMPLE)
572             }
573             self.test_context.init(attrs)
574             self.test_context.nfvi_obj.file_path = self._get_file_abspath(
575                 self.NODES_SAMPLE)
576             self.test_context.nfvi_node = [{
577                 'name': 'sriov',
578                 'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'],
579                 'ip': '10.223.197.140',
580                 'role': 'Sriov',
581                 'user': 'root',
582                 'images': '/var/lib/libvirt/images/ubuntu1.img',
583                 'phy_driver': 'i40e',
584                 'password': 'intel123',
585                 'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
586             self.test_context.get_nfvi_obj = mock.MagicMock()
587             self.test_context.init(attrs)
588             self.test_context.get_context_impl = mock.Mock(
589                 return_value=sriov.Sriov)
590             self.assertIsNotNone(self.test_context.get_nfvi_obj())
591
592     def test_get_nfvi_obj_ovs(self, mock_sriov_time, mock_standlalone_time, mock_ovsdpdk_time):
593         with mock.patch('yardstick.benchmark.contexts.standalone.ovsdpdk'):
594             attrs = {
595                 'name': 'ovs',
596                 'file': self._get_file_abspath(self.NODES_SAMPLE_OVSDPDK)
597             }
598             self.test_context.init(attrs)
599             self.test_context.nfvi_obj.file_path = self._get_file_abspath(
600                 self.NODES_SAMPLE)
601             self.test_context.nfvi_node = [{
602                 'name': 'ovs',
603                 'vports_mac': ['00:00:00:00:00:03', '00:00:00:00:00:04'],
604                 'ip': '10.223.197.140',
605                 'role': 'Ovsdpdk',
606                 'user': 'root',
607                 'vpath': '/usr/local/',
608                 'images': '/var/lib/libvirt/images/ubuntu1.img',
609                 'phy_driver': 'i40e',
610                 'password': 'password',
611                 'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
612             self.test_context.get_nfvi_obj = mock.MagicMock()
613             self.test_context.init(attrs)
614             self.test_context.get_context_impl = mock.Mock(
615                 return_value=ovsdpdk.Ovsdpdk)
616             self.assertIsNotNone(self.test_context.get_nfvi_obj())
617
618     def test_get_context_impl_correct_obj(self, mock_sriov_time, mock_standlalone_time,
619                                           mock_ovsdpdk_time):
620         with mock.patch.dict("sys.modules", MOCKS):
621             self.assertIsNotNone(self.test_context.get_context_impl('Sriov'))
622
623     def test_get_context_impl_wrong_obj(self, mock_sriov_time, mock_standlalone_time,
624                                         mock_ovsdpdk_time):
625         with mock.patch.dict("sys.modules", MOCKS):
626             self.assertRaises(
627                 ValueError,
628                 lambda: self.test_context.get_context_impl('wrong_object'))
629
630     def _get_file_abspath(self, filename):
631         curr_path = os.path.dirname(os.path.abspath(__file__))
632         file_path = os.path.join(curr_path, filename)
633         return file_path
634
635     def test__get_network(self, mock_sriov_time, mock_standlalone_time, mock_ovsdpdk_time):
636         network1 = {
637             'name': 'net_1',
638             'vld_id': 'vld111',
639             'segmentation_id': 'seg54',
640             'network_type': 'type_a',
641             'physical_network': 'phys',
642         }
643         network2 = {
644             'name': 'net_2',
645             'vld_id': 'vld999',
646         }
647         self.test_context.networks = {
648             'a': network1,
649             'b': network2,
650         }
651
652         attr_name = None
653         self.assertIsNone(self.test_context._get_network(attr_name))
654
655         attr_name = {}
656         self.assertIsNone(self.test_context._get_network(attr_name))
657
658         attr_name = {'vld_id': 'vld777'}
659         self.assertIsNone(self.test_context._get_network(attr_name))
660
661         attr_name = 'vld777'
662         self.assertIsNone(self.test_context._get_network(attr_name))
663
664         attr_name = {'vld_id': 'vld999'}
665         expected = {
666             "name": 'net_2',
667             "vld_id": 'vld999',
668             "segmentation_id": None,
669             "network_type": None,
670             "physical_network": None,
671         }
672         result = self.test_context._get_network(attr_name)
673         self.assertDictEqual(result, expected)
674
675         attr_name = 'a'
676         expected = network1
677         result = self.test_context._get_network(attr_name)
678         self.assertDictEqual(result, expected)
679
680 if __name__ == '__main__':
681     unittest.main()
682