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