Merge "Yardstick GUI & GUI deployment"
[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
198
199     def test__get_server_duplicate_sriov(self, mock_sriov_time, mock_standlalone_time,
200                                          mock_ovsdpdk_time):
201         attrs = {
202             'name': 'foo',
203             'file': self._get_file_abspath(self.NODES_DUPLICATE_SAMPLE)
204         }
205         self.test_context.nfvi_node = [{
206             'name': 'sriov',
207             'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'],
208             'ip': '10.223.197.140',
209             'role': 'Sriov',
210             'user': 'root',
211             'images': '/var/lib/libvirt/images/ubuntu1.img',
212             'phy_driver': 'i40e',
213             'password': 'password',
214             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
215         self.test_context.get_nfvi_obj = mock.Mock(return_value="sriov")
216         self.test_context.init(attrs)
217         attr_name = 'sriov.foo'
218         # self.test_context.name = "sriov"
219         self.assertRaises(ValueError, self.test_context._get_server, attr_name)
220
221     def test__get_server_duplicate_ovs(self, mock_sriov_time, mock_standlalone_time,
222                                        mock_ovsdpdk_time):
223         attrs = {
224             'name': 'foo',
225             'file': self._get_file_abspath(self.NODES_DUPLICATE_OVSDPDK)
226         }
227         self.test_context.nfvi_node = [{
228             'name': 'ovs',
229             'vports_mac': ['00:00:00:00:00:03', '00:00:00:00:00:04'],
230             'ip': '10.223.197.140',
231             'role': 'Ovsdpdk',
232             'user': 'root',
233             'vpath': '/usr/local/',
234             'images': '/var/lib/libvirt/images/ubuntu1.img',
235             'phy_driver': 'i40e',
236             'password': 'intel123',
237             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
238
239         self.test_context.get_nfvi_obj = mock.Mock(return_value="OvsDpdk")
240         self.test_context.init(attrs)
241
242         attr_name = 'ovs.foo'
243         self.assertRaises(
244             ValueError,
245             self.test_context._get_server,
246             attr_name)
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         # self.test_context.nfvi_obj.setup_ovs(PORTS)
457         # self.test_context.nfvi_obj.start_ovs_serverswitch()
458         # self.test_context.nfvi_obj.setup_ovs_bridge()
459         # self.test_context.nfvi_obj.add_oflows()
460
461         result = self.test_context.nfvi_obj.setup_ovs_context(
462             PORTS,
463             NIC_DETAILS,
464             DRIVER)
465         print("{0}".format(result))
466         self.assertIsNone(self.test_context.deploy())
467
468     def test__deploy_ovs_notfirsttime(self, mock_sriov_time, mock_standlalone_time,
469                                       mock_ovsdpdk_time):
470         attrs = {
471             'name': 'foo',
472             'file': self._get_file_abspath(self.NODES_SAMPLE_OVSDPDK)
473         }
474         self.test_context.nfvi_node = [{
475             'name': 'ovs',
476             'vports_mac': ['00:00:00:00:00:03', '00:00:00:00:00:04'],
477             'ip': '10.223.197.140',
478             'role': 'Ovsdpdk',
479             'user': 'root',
480             'vpath': '/usr/local/',
481             'images': '/var/lib/libvirt/images/ubuntu1.img',
482             'phy_driver': 'i40e',
483             'password': 'password',
484             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
485
486         MYOVS = [{
487             'name': 'ovs',
488             'vports_mac': ['00:00:00:00:00:03', '00:00:00:00:00:04'],
489             'ip': '10.223.197.140',
490             'role': 'Ovsdpdk',
491             'user': 'root',
492             'vpath': '/usr/local/',
493             'images': '/var/lib/libvirt/images/ubuntu1.img',
494             'phy_driver': 'i40e',
495             'password': 'password',
496             'flow': ['ovs-ofctl add-flow br0 in_port=1,action=output:3',
497                      'ovs-ofctl add-flow br0 in_port=3,action=output:1'
498                      'ovs-ofctl add-flow br0 in_port=4,action=output:2'
499                      'ovs-ofctl add-flow br0 in_port=2,action=output:4'],
500             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
501
502         self.test_context.vm_deploy = True
503         self.test_context.get_nfvi_obj = mock.MagicMock()
504         self.test_context.init(attrs)
505         self.test_context.ovs = MYOVS
506         self.test_context.nfvi_obj.ssh_remote_machine = mock.Mock()
507         self.test_context.nfvi_obj.first_run = False
508         self.test_context.nfvi_obj.get_nic_details = mock.Mock()
509         PORTS = ['0000:06:00.0', '0000:06:00.1']
510         NIC_DETAILS = {
511             'interface': {0: 'enp6s0f0', 1: 'enp6s0f1'},
512             'vports_mac': ['00:00:00:00:00:05', '00:00:00:00:00:06'],
513             'pci': ['0000:06:00.0', '0000:06:00.1'],
514             'phy_driver': 'i40e'}
515         DRIVER = 'i40e'
516
517         self.test_context.nfvi_obj.setup_ovs(PORTS)
518         self.test_context.nfvi_obj.start_ovs_serverswitch()
519         self.test_context.nfvi_obj.setup_ovs_bridge()
520         self.test_context.nfvi_obj.add_oflows()
521
522         result = self.test_context.nfvi_obj.setup_ovs_context(
523             PORTS,
524             NIC_DETAILS,
525             DRIVER)
526         print("{0}".format(result))
527         self.assertIsNone(self.test_context.deploy())
528
529     def test_undeploy_sriov(self, mock_sriov_time, mock_standlalone_time, mock_ovsdpdk_time):
530         attrs = {
531             'name': 'foo',
532             'file': self._get_file_abspath(self.NODES_SAMPLE)
533         }
534         self.test_context.nfvi_node = [{
535             'name': 'sriov',
536             'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'],
537             'ip': '10.223.197.140',
538             'role': 'Sriov',
539             'user': 'root',
540             'images': '/var/lib/libvirt/images/ubuntu1.img',
541             'phy_driver': 'i40e',
542             'password': 'intel123',
543             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
544         self.test_context.get_nfvi_obj = mock.MagicMock()
545         self.test_context.init(attrs)
546         self.test_context.nfvi_obj.destroy_vm = mock.Mock()
547         self.assertIsNone(self.test_context.undeploy())
548
549     def test_undeploy_ovs(self, mock_sriov_time, mock_standlalone_time, mock_ovsdpdk_time):
550         attrs = {
551             'name': 'foo',
552             'file': self._get_file_abspath(self.NODES_SAMPLE_OVSDPDK)
553         }
554
555         self.test_context.nfvi_node = [{
556             'name': 'ovs',
557             'vports_mac': ['00:00:00:00:00:03', '00:00:00:00:00:04'],
558             'ip': '10.223.197.140',
559             'role': 'Ovsdpdk',
560             'user': 'root',
561             'vpath': '/usr/local/',
562             'images': '/var/lib/libvirt/images/ubuntu1.img',
563             'phy_driver': 'i40e',
564             'password': 'password',
565             'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
566
567         self.test_context.get_nfvi_obj = mock.MagicMock()
568         self.test_context.init(attrs)
569         self.test_context.nfvi_obj.destroy_vm = mock.Mock()
570         self.assertIsNone(self.test_context.undeploy())
571
572     def test_get_nfvi_obj_sriov(self, mock_sriov_time, mock_standlalone_time, mock_ovsdpdk_time):
573         with mock.patch('yardstick.benchmark.contexts.sriov'):
574             attrs = {
575                 'name': 'sriov',
576                 'file': self._get_file_abspath(self.NODES_SAMPLE)
577             }
578             self.test_context.init(attrs)
579             self.test_context.nfvi_obj.file_path = self._get_file_abspath(
580                 self.NODES_SAMPLE)
581             self.test_context.nfvi_node = [{
582                 'name': 'sriov',
583                 'vf_macs': ['00:00:00:71:7d:25', '00:00:00:71:7d:26'],
584                 'ip': '10.223.197.140',
585                 'role': 'Sriov',
586                 'user': 'root',
587                 'images': '/var/lib/libvirt/images/ubuntu1.img',
588                 'phy_driver': 'i40e',
589                 'password': 'intel123',
590                 'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
591             self.test_context.get_nfvi_obj = mock.MagicMock()
592             self.test_context.init(attrs)
593             self.test_context.get_context_impl = mock.Mock(
594                 return_value=sriov.Sriov)
595             self.assertIsNotNone(self.test_context.get_nfvi_obj())
596
597     def test_get_nfvi_obj_ovs(self, mock_sriov_time, mock_standlalone_time, mock_ovsdpdk_time):
598         with mock.patch('yardstick.benchmark.contexts.ovsdpdk'):
599             attrs = {
600                 'name': 'ovs',
601                 'file': self._get_file_abspath(self.NODES_SAMPLE_OVSDPDK)
602             }
603             self.test_context.init(attrs)
604             self.test_context.nfvi_obj.file_path = self._get_file_abspath(
605                 self.NODES_SAMPLE)
606             self.test_context.nfvi_node = [{
607                 'name': 'ovs',
608                 'vports_mac': ['00:00:00:00:00:03', '00:00:00:00:00:04'],
609                 'ip': '10.223.197.140',
610                 'role': 'Ovsdpdk',
611                 'user': 'root',
612                 'vpath': '/usr/local/',
613                 'images': '/var/lib/libvirt/images/ubuntu1.img',
614                 'phy_driver': 'i40e',
615                 'password': 'password',
616                 'phy_ports': ['0000:06:00.0', '0000:06:00.1']}]
617             self.test_context.get_nfvi_obj = mock.MagicMock()
618             self.test_context.init(attrs)
619             self.test_context.get_context_impl = mock.Mock(
620                 return_value=ovsdpdk.Ovsdpdk)
621             self.assertIsNotNone(self.test_context.get_nfvi_obj())
622
623     def test_get_context_impl_correct_obj(self, mock_sriov_time, mock_standlalone_time,
624                                           mock_ovsdpdk_time):
625         with mock.patch.dict("sys.modules", MOCKS):
626             self.assertIsNotNone(self.test_context.get_context_impl('Sriov'))
627
628     def test_get_context_impl_wrong_obj(self, mock_sriov_time, mock_standlalone_time,
629                                         mock_ovsdpdk_time):
630         with mock.patch.dict("sys.modules", MOCKS):
631             self.assertRaises(
632                 ValueError,
633                 lambda: self.test_context.get_context_impl('wrong_object'))
634
635     def _get_file_abspath(self, filename):
636         curr_path = os.path.dirname(os.path.abspath(__file__))
637         file_path = os.path.join(curr_path, filename)
638         return file_path
639
640     def test__get_network(self, mock_sriov_time, mock_standlalone_time, mock_ovsdpdk_time):
641         network1 = {
642             'name': 'net_1',
643             'vld_id': 'vld111',
644             'segmentation_id': 'seg54',
645             'network_type': 'type_a',
646             'physical_network': 'phys',
647         }
648         network2 = {
649             'name': 'net_2',
650             'vld_id': 'vld999',
651         }
652         self.test_context.networks = {
653             'a': network1,
654             'b': network2,
655         }
656
657         attr_name = None
658         self.assertIsNone(self.test_context._get_network(attr_name))
659
660         attr_name = {}
661         self.assertIsNone(self.test_context._get_network(attr_name))
662
663         attr_name = {'vld_id': 'vld777'}
664         self.assertIsNone(self.test_context._get_network(attr_name))
665
666         attr_name = 'vld777'
667         self.assertIsNone(self.test_context._get_network(attr_name))
668
669         attr_name = {'vld_id': 'vld999'}
670         expected = {
671             "name": 'net_2',
672             "vld_id": 'vld999',
673             "segmentation_id": None,
674             "network_type": None,
675             "physical_network": None,
676         }
677         result = self.test_context._get_network(attr_name)
678         self.assertDictEqual(result, expected)
679
680         attr_name = 'a'
681         expected = network1
682         result = self.test_context._get_network(attr_name)
683         self.assertDictEqual(result, expected)
684 if __name__ == '__main__':
685     unittest.main()
686