Make files pep8 compliant before replacing assertEqual(None, xx)
[yardstick.git] / tests / unit / network_services / helpers / test_samplevnf_helper.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 import mock
19 import os
20 import six
21 import unittest
22
23 from yardstick.network_services.helpers import samplevnf_helper
24 from yardstick.network_services.vnf_generic.vnf.base import VnfdHelper
25
26
27 class TestPortPairs(unittest.TestCase):
28     def test_port_pairs_list(self):
29         vnfd = TestMultiPortConfig.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
30         interfaces = vnfd['vdu'][0]['external-interface']
31         port_pairs = samplevnf_helper.PortPairs(interfaces)
32         self.assertEqual(port_pairs.port_pair_list, [("xe0", "xe1")])
33
34     def test_valid_networks(self):
35         vnfd = TestMultiPortConfig.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
36         interfaces = vnfd['vdu'][0]['external-interface']
37         port_pairs = samplevnf_helper.PortPairs(interfaces)
38         self.assertEqual(port_pairs.valid_networks, [
39                          ("uplink_0", "downlink_0")])
40
41     def test_all_ports(self):
42         vnfd = TestMultiPortConfig.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
43         interfaces = vnfd['vdu'][0]['external-interface']
44         port_pairs = samplevnf_helper.PortPairs(interfaces)
45         self.assertEqual(set(port_pairs.all_ports), {"xe0", "xe1"})
46
47     def test_uplink_ports(self):
48         vnfd = TestMultiPortConfig.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
49         interfaces = vnfd['vdu'][0]['external-interface']
50         port_pairs = samplevnf_helper.PortPairs(interfaces)
51         self.assertEqual(port_pairs.uplink_ports, ["xe0"])
52
53     def test_downlink_ports(self):
54         vnfd = TestMultiPortConfig.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
55         interfaces = vnfd['vdu'][0]['external-interface']
56         port_pairs = samplevnf_helper.PortPairs(interfaces)
57         self.assertEqual(port_pairs.downlink_ports, ["xe1"])
58
59
60 class TestMultiPortConfig(unittest.TestCase):
61
62     VNFD_0 = {'short-name': 'VpeVnf',
63               'vdu':
64                   [{'routing_table':
65                     [{'network': '152.16.100.20',
66                       'netmask': '255.255.255.0',
67                       'gateway': '152.16.100.20',
68                       'if': 'xe0'},
69                      {'network': '152.16.40.20',
70                       'netmask': '255.255.255.0',
71                       'gateway': '152.16.40.20',
72                       'if': 'xe1'}],
73                     'description': 'VPE approximation using DPDK',
74                     'name': 'vpevnf-baremetal',
75                     'nd_route_tbl':
76                         [{'network': '0064:ff9b:0:0:0:0:9810:6414',
77                           'netmask': '112',
78                           'gateway': '0064:ff9b:0:0:0:0:9810:6414',
79                           'if': 'xe0'},
80                          {'network': '0064:ff9b:0:0:0:0:9810:2814',
81                           'netmask': '112',
82                           'gateway': '0064:ff9b:0:0:0:0:9810:2814',
83                           'if': 'xe1'}],
84                     'id': 'vpevnf-baremetal',
85                     'external-interface':
86                         [
87                             {'virtual-interface':
88                                 {
89                                     'dst_mac': '00:00:00:00:00:04',
90                                     'vpci': '0000:05:00.0',
91                                     'local_ip': '152.16.100.19',
92                                     'type': 'PCI-PASSTHROUGH',
93                                     'netmask': '255.255.255.0',
94                                     'dpdk_port_num': 0,
95                                     'bandwidth': '10 Gbps',
96                                     'driver': "i40e",
97                                     'dst_ip': '152.16.100.20',
98                                     'ifname': 'xe0',
99                                     'local_iface_name': 'eth0',
100                                     'local_mac': '00:00:00:00:00:02',
101                                     'vld_id': 'uplink_0',
102                                 },
103                                 'vnfd-connection-point-ref': 'xe0',
104                                 'name': 'xe0'},
105                             {'virtual-interface':
106                                 {
107                                     'dst_mac': '00:00:00:00:00:03',
108                                     'vpci': '0000:05:00.1',
109                                     'local_ip': '152.16.40.19',
110                                     'type': 'PCI-PASSTHROUGH',
111                                     'driver': "i40e",
112                                     'netmask': '255.255.255.0',
113                                     'dpdk_port_num': 1,
114                                     'bandwidth': '10 Gbps',
115                                     'dst_ip': '152.16.40.20',
116                                     'ifname': 'xe1',
117                                     'local_iface_name': 'eth1',
118                                     'local_mac': '00:00:00:00:00:01',
119                                     'vld_id': 'downlink_0',
120                                 },
121                                 'vnfd-connection-point-ref': 'xe1',
122                                 'name': 'xe1'}
123                     ]}],
124               'description': 'Vpe approximation using DPDK',
125               'mgmt-interface':
126                   {'vdu-id': 'vpevnf-baremetal',
127                    'host': '1.2.1.1',
128                    'password': 'r00t',
129                    'user': 'root',
130                    'ip': '1.2.1.1'},
131               'benchmark':
132                   {'kpi': ['packets_in', 'packets_fwd', 'packets_dropped']},
133               'connection-point': [{'type': 'VPORT', 'name': 'xe0'},
134                                    {'type': 'VPORT', 'name': 'xe1'}],
135               'id': 'AclApproxVnf', 'name': 'VPEVnfSsh'}
136
137     VNFD = {
138         'vnfd:vnfd-catalog': {
139             'vnfd': [
140                 VNFD_0,
141             ]
142         }
143     }
144
145     def setUp(self):
146         self._mock_open = mock.patch.object(six.moves.builtins, 'open')
147         self.mock_open = self._mock_open.start()
148         self._mock_os = mock.patch.object(os, 'path')
149         self.mock_os = self._mock_os.start()
150         self._mock_config_parser = mock.patch.object(
151             samplevnf_helper, 'ConfigParser')
152         self.mock_config_parser = self._mock_config_parser.start()
153
154         self.addCleanup(self._cleanup)
155
156     def _cleanup(self):
157         self._mock_open.stop()
158         self._mock_os.stop()
159         self._mock_config_parser.stop()
160
161     def test_validate_ip_and_prefixlen(self):
162         ip_addr, prefix_len = (
163             samplevnf_helper.MultiPortConfig.validate_ip_and_prefixlen(
164                 '10.20.30.40', '16'))
165         self.assertEqual(ip_addr, '10.20.30.40')
166         self.assertEqual(prefix_len, 16)
167
168         ip_addr, prefix_len = (
169             samplevnf_helper.MultiPortConfig.validate_ip_and_prefixlen(
170             '::1', '40'))
171         self.assertEqual(ip_addr, '0000:0000:0000:0000:0000:0000:0000:0001')
172         self.assertEqual(prefix_len, 40)
173
174     def test_validate_ip_and_prefixlen_negative(self):
175         with self.assertRaises(AttributeError):
176             samplevnf_helper.MultiPortConfig.validate_ip_and_prefixlen('', '')
177
178         with self.assertRaises(AttributeError):
179             samplevnf_helper.MultiPortConfig.validate_ip_and_prefixlen(
180                 '10.20.30.400', '16')
181
182         with self.assertRaises(AttributeError):
183             samplevnf_helper.MultiPortConfig.validate_ip_and_prefixlen(
184                 '10.20.30.40', '33')
185
186         with self.assertRaises(AttributeError):
187             samplevnf_helper.MultiPortConfig.validate_ip_and_prefixlen(
188                 '::1', '129')
189
190     def test___init__(self):
191         topology_file = mock.Mock()
192         config_tpl = mock.Mock()
193         tmp_file = mock.Mock()
194         vnfd_mock = mock.MagicMock()
195         opnfv_vnf = samplevnf_helper.MultiPortConfig(
196             topology_file, config_tpl, tmp_file, vnfd_mock)
197         self.assertEqual(0, opnfv_vnf.swq)
198         self.mock_os.path = mock.MagicMock()
199         self.mock_os.path.isfile = mock.Mock(return_value=False)
200         opnfv_vnf = samplevnf_helper.MultiPortConfig(
201             topology_file, config_tpl, tmp_file, vnfd_mock)
202         self.assertEqual(0, opnfv_vnf.swq)
203
204     def test_update_timer(self):
205         topology_file = mock.Mock()
206         config_tpl = mock.Mock()
207         tmp_file = mock.Mock()
208         vnfd_mock = mock.MagicMock()
209         opnfv_vnf = samplevnf_helper.MultiPortConfig(
210             topology_file, config_tpl, tmp_file, vnfd_mock)
211         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
212         opnfv_vnf.socket = 0
213         opnfv_vnf.start_core = 0
214         opnfv_vnf.update_write_parser = mock.MagicMock()
215         self.assertEqual(None, opnfv_vnf.update_timer())
216
217     def test_generate_script(self):
218         topology_file = mock.Mock()
219         config_tpl = mock.Mock()
220         tmp_file = mock.Mock()
221         vnfd_mock = VnfdHelper(self.VNFD_0)
222         opnfv_vnf = samplevnf_helper.MultiPortConfig(
223             topology_file, config_tpl, tmp_file, vnfd_mock)
224         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
225         opnfv_vnf.socket = 0
226         opnfv_vnf.start_core = 0
227         opnfv_vnf.update_write_parser = mock.MagicMock()
228         opnfv_vnf.generate_script_data = \
229             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
230                                     'arp_config6': '', 'actions': '',
231                                     'arp_route_tbl': '', 'arp_route_tbl6': '',
232                                     'rules': ''})
233         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
234         self.assertIsNotNone(opnfv_vnf.generate_script(self.VNFD))
235         opnfv_vnf.lb_config = 'HW'
236         self.assertIsNotNone(opnfv_vnf.generate_script(self.VNFD))
237
238     def test_generate_script_data(self):
239         topology_file = mock.Mock()
240         config_tpl = mock.Mock()
241         tmp_file = mock.Mock()
242         vnfd_mock = mock.MagicMock()
243         opnfv_vnf = samplevnf_helper.MultiPortConfig(
244             topology_file, config_tpl, tmp_file, vnfd_mock)
245         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
246         opnfv_vnf.socket = 0
247         opnfv_vnf.start_core = 0
248         opnfv_vnf.update_write_parser = mock.MagicMock()
249         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
250         opnfv_vnf.vnf_type = 'ACL'
251         opnfv_vnf.generate_link_config = mock.Mock()
252         opnfv_vnf.generate_arp_config = mock.Mock()
253         opnfv_vnf.generate_arp_config6 = mock.Mock()
254         opnfv_vnf.generate_action_config = mock.Mock()
255         opnfv_vnf.generate_rule_config = mock.Mock()
256         self.assertIsNotNone(opnfv_vnf.generate_script_data())
257
258     def test_generate_rule_config(self):
259         topology_file = mock.Mock()
260         config_tpl = mock.Mock()
261         tmp_file = mock.Mock()
262         vnfd_mock = mock.MagicMock()
263         opnfv_vnf = samplevnf_helper.MultiPortConfig(
264             topology_file, config_tpl, tmp_file, vnfd_mock)
265         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
266         opnfv_vnf.socket = 0
267         opnfv_vnf.start_core = 0
268         opnfv_vnf.update_write_parser = mock.MagicMock()
269         opnfv_vnf.generate_script_data = \
270             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
271                                     'arp_config6': '', 'actions': '',
272                                     'rules': ''})
273         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
274         opnfv_vnf.get_port_pairs = mock.Mock()
275         opnfv_vnf.vnf_type = 'ACL'
276         opnfv_vnf.get_ports_gateway = mock.Mock(return_value=u'1.1.1.1')
277         opnfv_vnf.get_netmask_gateway = mock.Mock(
278             return_value=u'255.255.255.0')
279         opnfv_vnf.get_ports_gateway6 = mock.Mock(return_value=u'1.1.1.1')
280         opnfv_vnf.get_netmask_gateway6 = mock.Mock(
281             return_value=u'255.255.255.0')
282         opnfv_vnf.txrx_pipeline = ''
283         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
284         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
285         opnfv_vnf.rules = ''
286         self.assertIsNotNone(opnfv_vnf.generate_rule_config())
287         opnfv_vnf.rules = 'new'
288         self.assertIsNotNone(opnfv_vnf.generate_rule_config())
289
290     def test_generate_action_config(self):
291         topology_file = mock.Mock()
292         config_tpl = mock.Mock()
293         tmp_file = mock.Mock()
294         vnfd_mock = mock.MagicMock()
295         opnfv_vnf = samplevnf_helper.MultiPortConfig(
296             topology_file, config_tpl, tmp_file, vnfd_mock)
297         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
298         opnfv_vnf.socket = 0
299         opnfv_vnf.start_core = 0
300         opnfv_vnf.update_write_parser = mock.MagicMock()
301         opnfv_vnf.generate_script_data = \
302             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
303                                     'arp_config6': '', 'actions': '',
304                                     'rules': ''})
305         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
306         opnfv_vnf.get_port_pairs = mock.Mock()
307         opnfv_vnf.vnf_type = 'VFW'
308         opnfv_vnf.get_ports_gateway = mock.Mock(return_value=u'1.1.1.1')
309         opnfv_vnf.get_netmask_gateway = mock.Mock(
310             return_value=u'255.255.255.0')
311         opnfv_vnf.get_ports_gateway6 = mock.Mock(return_value=u'1.1.1.1')
312         opnfv_vnf.get_netmask_gateway6 = mock.Mock(
313             return_value=u'255.255.255.0')
314         opnfv_vnf.txrx_pipeline = ''
315         opnfv_vnf.rules = ''
316         self.assertIsNotNone(opnfv_vnf.generate_action_config())
317
318     def test_generate_arp_config6(self):
319         topology_file = mock.Mock()
320         config_tpl = mock.Mock()
321         tmp_file = mock.Mock()
322         vnfd_mock = mock.MagicMock()
323         opnfv_vnf = samplevnf_helper.MultiPortConfig(
324             topology_file, config_tpl, tmp_file, vnfd_mock)
325         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
326         opnfv_vnf.socket = 0
327         opnfv_vnf.start_core = 0
328         opnfv_vnf.update_write_parser = mock.MagicMock()
329         opnfv_vnf.generate_script_data = \
330             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
331                                     'arp_config6': '', 'actions': '',
332                                     'rules': ''})
333         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
334         opnfv_vnf.get_port_pairs = mock.Mock()
335         opnfv_vnf.vnf_type = 'VFW'
336         opnfv_vnf.get_ports_gateway = mock.Mock(return_value=u'1.1.1.1')
337         opnfv_vnf.get_netmask_gateway = mock.Mock(
338             return_value=u'255.255.255.0')
339         opnfv_vnf.get_ports_gateway6 = mock.Mock(return_value=u'1.1.1.1')
340         opnfv_vnf.get_netmask_gateway6 = mock.Mock(
341             return_value=u'255.255.255.0')
342         opnfv_vnf.txrx_pipeline = ''
343         opnfv_vnf.rules = ''
344         opnfv_vnf.interfaces = mock.MagicMock()
345         opnfv_vnf.get_ports_gateway6 = mock.Mock()
346         self.assertIsNotNone(opnfv_vnf.generate_arp_config6())
347
348     def test_generate_arp_config(self):
349         topology_file = mock.Mock()
350         config_tpl = mock.Mock()
351         tmp_file = mock.Mock()
352         vnfd_mock = mock.MagicMock()
353         opnfv_vnf = samplevnf_helper.MultiPortConfig(
354             topology_file, config_tpl, tmp_file, vnfd_mock)
355         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
356         opnfv_vnf.socket = 0
357         opnfv_vnf.start_core = 0
358         opnfv_vnf.update_write_parser = mock.MagicMock()
359         opnfv_vnf.generate_script_data = \
360             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
361                                     'arp_config6': '', 'actions': '',
362                                     'rules': ''})
363         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
364         opnfv_vnf.get_port_pairs = mock.Mock()
365         opnfv_vnf.vnf_type = 'VFW'
366         opnfv_vnf.get_ports_gateway = mock.Mock(return_value=u'1.1.1.1')
367         opnfv_vnf.get_netmask_gateway = mock.Mock(
368             return_value=u'255.255.255.0')
369         opnfv_vnf.get_ports_gateway6 = mock.Mock(return_value=u'1.1.1.1')
370         opnfv_vnf.get_netmask_gateway6 = mock.Mock(
371             return_value=u'255.255.255.0')
372         opnfv_vnf.txrx_pipeline = ''
373         opnfv_vnf.rules = ''
374         opnfv_vnf.interfaces = mock.MagicMock()
375         opnfv_vnf.get_ports_gateway6 = mock.Mock()
376         self.assertIsNotNone(opnfv_vnf.generate_arp_config())
377
378     def test_get_ports_gateway(self):
379         topology_file = mock.Mock()
380         config_tpl = mock.Mock()
381         tmp_file = mock.Mock()
382         vnfd_mock = mock.MagicMock()
383         opnfv_vnf = samplevnf_helper.MultiPortConfig(
384             topology_file, config_tpl, tmp_file, vnfd_mock)
385         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
386         opnfv_vnf.socket = 0
387         opnfv_vnf.start_core = 0
388         opnfv_vnf.update_write_parser = mock.MagicMock()
389         opnfv_vnf.generate_script_data = \
390             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
391                                     'arp_config6': '', 'actions': '',
392                                     'rules': ''})
393         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
394         opnfv_vnf.get_port_pairs = mock.Mock()
395         opnfv_vnf.vnf_type = 'VFW'
396         opnfv_vnf.txrx_pipeline = ''
397         opnfv_vnf.rules = ''
398         opnfv_vnf.interfaces = mock.MagicMock()
399         opnfv_vnf.get_ports_gateway6 = mock.Mock()
400         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
401         self.assertIsNotNone(opnfv_vnf.get_ports_gateway('xe0'))
402
403     def test_get_ports_gateway6(self):
404         topology_file = mock.Mock()
405         config_tpl = mock.Mock()
406         tmp_file = mock.Mock()
407         vnfd_mock = mock.MagicMock()
408         opnfv_vnf = samplevnf_helper.MultiPortConfig(
409             topology_file, config_tpl, tmp_file, vnfd_mock)
410         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
411         opnfv_vnf.socket = 0
412         opnfv_vnf.start_core = 0
413         opnfv_vnf.update_write_parser = mock.MagicMock()
414         opnfv_vnf.generate_script_data = \
415             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
416                                     'arp_config6': '', 'actions': '',
417                                     'rules': ''})
418         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
419         opnfv_vnf.get_port_pairs = mock.Mock()
420         opnfv_vnf.vnf_type = 'VFW'
421         opnfv_vnf.txrx_pipeline = ''
422         opnfv_vnf.rules = ''
423         opnfv_vnf.interfaces = mock.MagicMock()
424         opnfv_vnf.get_ports_gateway6 = mock.Mock()
425         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
426         self.assertIsNotNone(opnfv_vnf.get_ports_gateway6('xe0'))
427
428     def test_get_netmask_gateway(self):
429         topology_file = mock.Mock()
430         config_tpl = mock.Mock()
431         tmp_file = mock.Mock()
432         vnfd_mock = mock.MagicMock()
433         opnfv_vnf = samplevnf_helper.MultiPortConfig(
434             topology_file, config_tpl, tmp_file, vnfd_mock)
435         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
436         opnfv_vnf.socket = 0
437         opnfv_vnf.start_core = 0
438         opnfv_vnf.update_write_parser = mock.MagicMock()
439         opnfv_vnf.generate_script_data = \
440             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
441                                     'arp_config6': '', 'actions': '',
442                                     'rules': ''})
443         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
444         opnfv_vnf.get_port_pairs = mock.Mock()
445         opnfv_vnf.vnf_type = 'VFW'
446         opnfv_vnf.txrx_pipeline = ''
447         opnfv_vnf.rules = ''
448         opnfv_vnf.interfaces = mock.MagicMock()
449         opnfv_vnf.get_ports_gateway6 = mock.Mock()
450         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
451         self.assertIsNotNone(opnfv_vnf.get_netmask_gateway('xe0'))
452
453     def test_get_netmask_gateway6(self):
454         topology_file = mock.Mock()
455         config_tpl = mock.Mock()
456         tmp_file = mock.Mock()
457         vnfd_mock = mock.MagicMock()
458         opnfv_vnf = samplevnf_helper.MultiPortConfig(
459             topology_file, config_tpl, tmp_file, vnfd_mock)
460         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
461         opnfv_vnf.socket = 0
462         opnfv_vnf.start_core = 0
463         opnfv_vnf.update_write_parser = mock.MagicMock()
464         opnfv_vnf.generate_script_data = \
465             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
466                                     'arp_config6': '', 'actions': '',
467                                     'rules': ''})
468         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
469         opnfv_vnf.get_port_pairs = mock.Mock()
470         opnfv_vnf.vnf_type = 'VFW'
471         opnfv_vnf.txrx_pipeline = ''
472         opnfv_vnf.rules = ''
473         opnfv_vnf.interfaces = mock.MagicMock()
474         opnfv_vnf.get_ports_gateway6 = mock.Mock()
475         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
476         self.assertIsNotNone(opnfv_vnf.get_netmask_gateway6('xe0'))
477
478     def test_generate_link_config(self):
479         topology_file = mock.Mock()
480         config_tpl = mock.Mock()
481         tmp_file = mock.Mock()
482         vnfd_mock = mock.MagicMock()
483
484         opnfv_vnf = samplevnf_helper.MultiPortConfig(
485             topology_file, config_tpl, tmp_file, vnfd_mock)
486         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
487         opnfv_vnf.socket = 0
488         opnfv_vnf.start_core = 0
489         opnfv_vnf.update_write_parser = mock.MagicMock()
490         opnfv_vnf.generate_script_data = \
491             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
492                                     'arp_config6': '', 'actions': '',
493                                     'rules': ''})
494         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
495         opnfv_vnf.get_port_pairs = mock.Mock()
496         opnfv_vnf.vnf_type = 'VFW'
497         opnfv_vnf.txrx_pipeline = ''
498         opnfv_vnf.rules = ''
499         opnfv_vnf.get_ports_gateway6 = mock.Mock()
500         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
501         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
502         opnfv_vnf.all_ports = ['32', '1', '987']
503         opnfv_vnf.validate_ip_and_prefixlen = mock.Mock(
504             return_value=('10.20.30.40', 16))
505
506         result = opnfv_vnf.generate_link_config()
507         self.assertEqual(len(result.splitlines()), 9)
508
509     def test_generate_config(self):
510         topology_file = mock.Mock()
511         config_tpl = mock.Mock()
512         tmp_file = mock.Mock()
513         vnfd_mock = mock.MagicMock()
514         opnfv_vnf = samplevnf_helper.MultiPortConfig(
515             topology_file, config_tpl, tmp_file, vnfd_mock)
516         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
517         opnfv_vnf.socket = 0
518         opnfv_vnf.start_core = 0
519         opnfv_vnf.update_write_parser = mock.MagicMock()
520         opnfv_vnf.generate_script_data = \
521             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
522                                     'arp_config6': '', 'actions': '',
523                                     'rules': ''})
524         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
525         opnfv_vnf.txrx_pipeline = ''
526         opnfv_vnf.rules = ''
527         opnfv_vnf.get_ports_gateway6 = mock.Mock()
528         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
529         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
530         opnfv_vnf.generate_lb_to_port_pair_mapping = mock.Mock()
531         opnfv_vnf.generate_config_data = mock.Mock()
532         opnfv_vnf.write_parser = mock.MagicMock()
533         opnfv_vnf.is_openstack = True
534         self.assertIsNone(opnfv_vnf.generate_config())
535         opnfv_vnf.is_openstack = False
536         self.assertIsNone(opnfv_vnf.generate_config())
537
538     def test_get_config_tpl_data(self):
539         topology_file = mock.Mock()
540         config_tpl = mock.Mock()
541         tmp_file = mock.Mock()
542         vnfd_mock = mock.MagicMock()
543         opnfv_vnf = samplevnf_helper.MultiPortConfig(
544             topology_file, config_tpl, tmp_file, vnfd_mock)
545         opnfv_vnf.socket = 0
546         opnfv_vnf.start_core = 0
547         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
548         opnfv_vnf.txrx_pipeline = ''
549         opnfv_vnf.rules = ''
550         opnfv_vnf.write_parser = mock.MagicMock()
551         opnfv_vnf.read_parser = mock.MagicMock()
552         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
553         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=True)
554         opnfv_vnf.read_parser.get = mock.Mock(return_value='filename')
555
556         self.assertIsNotNone(opnfv_vnf.get_config_tpl_data('filename'))
557
558     def test_get_txrx_tpl_data(self):
559         topology_file = mock.Mock()
560         config_tpl = mock.Mock()
561         tmp_file = mock.Mock()
562         vnfd_mock = mock.MagicMock()
563         opnfv_vnf = samplevnf_helper.MultiPortConfig(
564             topology_file, config_tpl, tmp_file, vnfd_mock)
565         opnfv_vnf.socket = 0
566         opnfv_vnf.start_core = 0
567         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
568         opnfv_vnf.txrx_pipeline = ''
569         opnfv_vnf.rules = ''
570         opnfv_vnf.write_parser = mock.MagicMock()
571         opnfv_vnf.read_parser = mock.MagicMock()
572         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
573         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=True)
574         opnfv_vnf.read_parser.get = mock.Mock(return_value='filename')
575
576         self.assertIsNotNone(opnfv_vnf.get_txrx_tpl_data('filename'))
577
578     def test_init_write_parser_template(self):
579         topology_file = mock.Mock()
580         config_tpl = mock.Mock()
581         tmp_file = mock.Mock()
582         vnfd_mock = mock.MagicMock()
583         opnfv_vnf = samplevnf_helper.MultiPortConfig(
584             topology_file, config_tpl, tmp_file, vnfd_mock)
585         opnfv_vnf.socket = 0
586         opnfv_vnf.start_core = 0
587         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
588         opnfv_vnf.txrx_pipeline = ''
589         opnfv_vnf.rules = ''
590         opnfv_vnf.write_parser = mock.MagicMock()
591         opnfv_vnf.read_parser = mock.MagicMock()
592         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
593         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=True)
594         opnfv_vnf.read_parser.get = mock.Mock(return_value='filename')
595
596         self.assertIsNone(opnfv_vnf.init_write_parser_template('filename'))
597         opnfv_vnf.write_parser.add_section = mock.MagicMock()
598         opnfv_vnf.read_parser.item = mock.Mock(return_value=[1, 2, 3])
599         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=False)
600         opnfv_vnf.write_parser.set = mock.Mock()
601         self.assertIsNone(opnfv_vnf.init_write_parser_template('filename'))
602
603     def test_init_write_parser_template_2(self):
604         topology_file = mock.Mock()
605         config_tpl = mock.Mock()
606         tmp_file = mock.Mock()
607         vnfd_mock = mock.MagicMock()
608         opnfv_vnf = samplevnf_helper.MultiPortConfig(
609             topology_file, config_tpl, tmp_file, vnfd_mock)
610         opnfv_vnf.socket = 0
611         opnfv_vnf.start_core = 0
612         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
613         opnfv_vnf.txrx_pipeline = ''
614         opnfv_vnf.rules = ''
615         opnfv_vnf.write_parser = mock.MagicMock()
616         opnfv_vnf.read_parser = mock.MagicMock()
617         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
618         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
619         opnfv_vnf.write_parser.set = mock.Mock()
620         opnfv_vnf.read_parser.items = mock.MagicMock()
621         self.assertIsNone(opnfv_vnf.init_write_parser_template('filename'))
622
623     def test_update_write_parser(self):
624         topology_file = mock.Mock()
625         config_tpl = mock.Mock()
626         tmp_file = mock.Mock()
627         vnfd_mock = mock.MagicMock()
628         opnfv_vnf = samplevnf_helper.MultiPortConfig(
629             topology_file, config_tpl, tmp_file, vnfd_mock)
630         opnfv_vnf.socket = 0
631         opnfv_vnf.start_core = 0
632         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
633         opnfv_vnf.txrx_pipeline = ''
634         opnfv_vnf.rules = ''
635         opnfv_vnf.write_parser = mock.MagicMock()
636         opnfv_vnf.read_parser = mock.MagicMock()
637         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
638         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
639         opnfv_vnf.write_parser.set = mock.Mock()
640         opnfv_vnf.write_parser.add_section = mock.Mock()
641         opnfv_vnf.read_parser.items = mock.MagicMock()
642         opnfv_vnf.pipeline_counter = 0
643         self.assertIsNone(opnfv_vnf.update_write_parser({'filename': 1}))
644
645     def test_get_worker_threads(self):
646         topology_file = mock.Mock()
647         config_tpl = mock.Mock()
648         tmp_file = mock.Mock()
649         vnfd_mock = mock.MagicMock()
650         opnfv_vnf = samplevnf_helper.MultiPortConfig(
651             topology_file, config_tpl, tmp_file, vnfd_mock)
652         opnfv_vnf.socket = 0
653         opnfv_vnf.start_core = 0
654         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
655         opnfv_vnf.txrx_pipeline = ''
656         opnfv_vnf.rules = ''
657         opnfv_vnf.write_parser = mock.MagicMock()
658         opnfv_vnf.read_parser = mock.MagicMock()
659         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
660         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
661         opnfv_vnf.write_parser.set = mock.Mock()
662         opnfv_vnf.write_parser.add_section = mock.Mock()
663         opnfv_vnf.read_parser.items = mock.MagicMock()
664         opnfv_vnf.pipeline_counter = 0
665         opnfv_vnf.worker_config = '1t'
666         result = opnfv_vnf.get_worker_threads(1)
667         self.assertEqual(1, result)
668         opnfv_vnf.worker_config = '2t'
669         result = opnfv_vnf.get_worker_threads(2)
670         self.assertEqual(2, result)
671         opnfv_vnf.worker_config = '2t'
672         result = opnfv_vnf.get_worker_threads(3)
673         self.assertEqual(2, result)
674
675     # TODO(elfoley): Split this test into smaller tests
676     def test_generate_next_core_id(self):
677         topology_file = mock.Mock()
678         config_tpl = mock.Mock()
679         tmp_file = mock.Mock()
680         vnfd_mock = mock.MagicMock()
681         opnfv_vnf = samplevnf_helper.MultiPortConfig(
682             topology_file, config_tpl, tmp_file, vnfd_mock)
683         opnfv_vnf.socket = 0
684         opnfv_vnf.start_core = 0
685         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
686         opnfv_vnf.txrx_pipeline = ''
687         opnfv_vnf.rules = ''
688         opnfv_vnf.write_parser = mock.MagicMock()
689         opnfv_vnf.read_parser = mock.MagicMock()
690         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
691         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
692         opnfv_vnf.write_parser.set = mock.Mock()
693         opnfv_vnf.write_parser.add_section = mock.Mock()
694         opnfv_vnf.read_parser.items = mock.MagicMock()
695         opnfv_vnf.pipeline_counter = 0
696         opnfv_vnf.worker_config = '1t'
697         opnfv_vnf.start_core = 0
698         result = opnfv_vnf.generate_next_core_id()
699         self.assertEqual(None, result)
700         opnfv_vnf.worker_config = '2t'
701         opnfv_vnf.start_core = 'a'
702         self.assertRaises(ValueError, opnfv_vnf.generate_next_core_id)
703         opnfv_vnf.worker_config = '2t'
704         opnfv_vnf.start_core = 1
705         result = opnfv_vnf.generate_next_core_id()
706         self.assertEqual(None, result)
707
708     def test_generate_lb_to_port_pair_mapping(self):
709         topology_file = mock.Mock()
710         config_tpl = mock.Mock()
711         tmp_file = mock.Mock()
712         vnfd_mock = VnfdHelper(self.VNFD_0)
713         opnfv_vnf = samplevnf_helper.MultiPortConfig(
714             topology_file, config_tpl, tmp_file, vnfd_mock)
715         opnfv_vnf.socket = 0
716         opnfv_vnf.start_core = 0
717         opnfv_vnf.txrx_pipeline = ''
718         opnfv_vnf.rules = ''
719         opnfv_vnf.write_parser = mock.MagicMock()
720         opnfv_vnf.read_parser = mock.MagicMock()
721         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
722         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
723         opnfv_vnf.write_parser.set = mock.Mock()
724         opnfv_vnf.write_parser.add_section = mock.Mock()
725         opnfv_vnf.read_parser.items = mock.MagicMock()
726         opnfv_vnf.pipeline_counter = 0
727         opnfv_vnf.worker_config = '1t'
728         opnfv_vnf.start_core = 0
729         opnfv_vnf.lb_count = 1
730         opnfv_vnf._port_pairs = samplevnf_helper.PortPairs(vnfd_mock.interfaces)
731         opnfv_vnf.port_pair_list = opnfv_vnf._port_pairs.port_pair_list
732         result = opnfv_vnf.generate_lb_to_port_pair_mapping()
733         self.assertEqual(None, result)
734         result = opnfv_vnf.set_priv_to_pub_mapping()
735         self.assertEqual('(0,1)', result)
736
737     def test_set_priv_que_handler(self):
738         topology_file = mock.Mock()
739         config_tpl = mock.Mock()
740         tmp_file = mock.Mock()
741         vnfd_mock = VnfdHelper(self.VNFD_0)
742         opnfv_vnf = samplevnf_helper.MultiPortConfig(
743             topology_file, config_tpl, tmp_file, vnfd_mock)
744         opnfv_vnf.socket = 0
745         opnfv_vnf.start_core = 0
746         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
747         opnfv_vnf.port_pairs = [("xe0", "xe1")]
748         opnfv_vnf.txrx_pipeline = ''
749         opnfv_vnf.rules = ''
750         opnfv_vnf.write_parser = mock.MagicMock()
751         opnfv_vnf.read_parser = mock.MagicMock()
752         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
753         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
754         opnfv_vnf.write_parser.set = mock.Mock()
755         opnfv_vnf.write_parser.add_section = mock.Mock()
756         opnfv_vnf.read_parser.items = mock.MagicMock()
757         opnfv_vnf.pipeline_counter = 0
758         opnfv_vnf.worker_config = '1t'
759         opnfv_vnf.start_core = 0
760         opnfv_vnf.lb_count = 1
761         result = opnfv_vnf.set_priv_que_handler()
762         self.assertEqual(None, result)
763
764     def test_generate_arp_route_tbl(self):
765         # ELF: could n=do this in setup
766         topology_file = mock.Mock()
767         config_tpl = mock.Mock()
768         tmp_file = ""
769         vnfd_mock = mock.MagicMock()
770         vnfd_mock.port_num.side_effect = ['32', '1', '987']
771         vnfd_mock.find_interface.side_effect = [
772             {
773                 'virtual-interface': {
774                     'dst_ip': '10.20.30.40',
775                     'netmask': '20',
776                 },
777             },
778             {
779                 'virtual-interface': {
780                     'dst_ip': '10.200.30.40',
781                     'netmask': '24',
782                 },
783             },
784             {
785                 'virtual-interface': {
786                     'dst_ip': '10.20.3.40',
787                     'netmask': '8',
788                 },
789             },
790         ]
791
792         opnfv_vnf = samplevnf_helper.MultiPortConfig(
793             topology_file, config_tpl, tmp_file, vnfd_mock)
794         opnfv_vnf.all_ports = [3, 2, 5]
795
796         expected = 'routeadd net 32 10.20.30.40 0xfffff000\n' \
797                    'routeadd net 1 10.200.30.40 0xffffff00\n' \
798                    'routeadd net 987 10.20.3.40 0xff000000'
799         result = opnfv_vnf.generate_arp_route_tbl()
800         self.assertEqual(result, expected)
801
802     def test_generate_arpicmp_data(self):
803         topology_file = mock.Mock()
804         config_tpl = mock.Mock()
805         tmp_file = mock.Mock()
806         vnfd_mock = mock.MagicMock()
807         opnfv_vnf = samplevnf_helper.MultiPortConfig(
808             topology_file, config_tpl, tmp_file, vnfd_mock)
809         opnfv_vnf.socket = 0
810         opnfv_vnf.start_core = 0
811         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
812         opnfv_vnf.port_pairs = [("xe0", "xe1")]
813         opnfv_vnf.txrx_pipeline = ''
814         opnfv_vnf.rules = ''
815         opnfv_vnf.write_parser = mock.MagicMock()
816         opnfv_vnf.read_parser = mock.MagicMock()
817         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
818         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
819         opnfv_vnf.write_parser.set = mock.Mock()
820         opnfv_vnf.write_parser.add_section = mock.Mock()
821         opnfv_vnf.read_parser.items = mock.MagicMock()
822         opnfv_vnf.pipeline_counter = 0
823         opnfv_vnf.worker_config = '1t'
824         opnfv_vnf.start_core = 0
825         opnfv_vnf.lb_count = 1
826         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
827         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
828         result = opnfv_vnf.generate_arpicmp_data()
829         self.assertIsNotNone(result)
830         opnfv_vnf.nfv_type = 'ovs'
831         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
832         result = opnfv_vnf.generate_arpicmp_data()
833         self.assertIsNotNone(result)
834         opnfv_vnf.nfv_type = 'openstack'
835         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
836         result = opnfv_vnf.generate_arpicmp_data()
837         self.assertIsNotNone(result)
838         opnfv_vnf.lb_config = 'HW'
839         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
840         result = opnfv_vnf.generate_arpicmp_data()
841         self.assertIsNotNone(result)
842
843     def test_generate_final_txrx_data(self):
844         topology_file = mock.Mock()
845         config_tpl = mock.Mock()
846         tmp_file = mock.Mock()
847         vnfd_mock = mock.MagicMock()
848         opnfv_vnf = samplevnf_helper.MultiPortConfig(
849             topology_file, config_tpl, tmp_file, vnfd_mock)
850         opnfv_vnf.socket = 0
851         opnfv_vnf.start_core = 0
852         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
853         opnfv_vnf.port_pairs = [("xe0", "xe1")]
854         opnfv_vnf.txrx_pipeline = ''
855         opnfv_vnf.rules = ''
856         opnfv_vnf.write_parser = mock.MagicMock()
857         opnfv_vnf.read_parser = mock.MagicMock()
858         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
859         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
860         opnfv_vnf.write_parser.set = mock.Mock()
861         opnfv_vnf.write_parser.add_section = mock.Mock()
862         opnfv_vnf.read_parser.items = mock.MagicMock()
863         opnfv_vnf.pipeline_counter = 0
864         opnfv_vnf.worker_config = '1t'
865         opnfv_vnf.start_core = 0
866         opnfv_vnf.lb_count = 1
867         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
868         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
869         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
870         opnfv_vnf.ports_len = 2
871         opnfv_vnf.lb_index = 1
872         opnfv_vnf.pktq_out_os = [1, 2]
873         result = opnfv_vnf.generate_final_txrx_data()
874         self.assertIsNotNone(result)
875         opnfv_vnf.nfv_type = 'openstack'
876         opnfv_vnf.pktq_out_os = [1, 2]
877         opnfv_vnf.lb_index = 1
878         result = opnfv_vnf.generate_final_txrx_data()
879         self.assertIsNotNone(result)
880
881     def test_generate_initial_txrx_data(self):
882         topology_file = mock.Mock()
883         config_tpl = mock.Mock()
884         tmp_file = mock.Mock()
885         vnfd_mock = mock.MagicMock()
886         opnfv_vnf = samplevnf_helper.MultiPortConfig(
887             topology_file, config_tpl, tmp_file, vnfd_mock)
888         opnfv_vnf.socket = 0
889         opnfv_vnf.start_core = 0
890         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
891         opnfv_vnf.port_pairs = [("xe0", "xe1")]
892         opnfv_vnf.txrx_pipeline = ''
893         opnfv_vnf.rules = ''
894         opnfv_vnf.write_parser = mock.MagicMock()
895         opnfv_vnf.read_parser = mock.MagicMock()
896         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
897         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
898         opnfv_vnf.write_parser.set = mock.Mock()
899         opnfv_vnf.write_parser.add_section = mock.Mock()
900         opnfv_vnf.read_parser.items = mock.MagicMock()
901         opnfv_vnf.pipeline_counter = 0
902         opnfv_vnf.worker_config = '1t'
903         opnfv_vnf.start_core = 0
904         opnfv_vnf.lb_count = 1
905         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
906         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
907         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
908         opnfv_vnf.lb_index = 1
909         opnfv_vnf.ports_len = 2
910         result = opnfv_vnf.generate_initial_txrx_data()
911         self.assertIsNotNone(result)
912         opnfv_vnf.nfv_type = 'openstack'
913         opnfv_vnf.pktq_out_os = [1, 2]
914         result = opnfv_vnf.generate_initial_txrx_data()
915         self.assertIsNotNone(result)
916         opnfv_vnf.nfv_type = 'ovs'
917         opnfv_vnf.init_ovs = False
918         opnfv_vnf.ovs_pktq_out = ''
919         opnfv_vnf.pktq_out_os = [1, 2]
920         opnfv_vnf.lb_index = 1
921         result = opnfv_vnf.generate_initial_txrx_data()
922         self.assertIsNotNone(result)
923         opnfv_vnf.nfv_type = 'ovs'
924         opnfv_vnf.init_ovs = True
925         opnfv_vnf.pktq_out_os = [1, 2]
926         opnfv_vnf.ovs_pktq_out = ''
927         opnfv_vnf.lb_index = 1
928         result = opnfv_vnf.generate_initial_txrx_data()
929         self.assertIsNotNone(result)
930
931     def test_generate_lb_data(self):
932         topology_file = mock.Mock()
933         config_tpl = mock.Mock()
934         tmp_file = mock.Mock()
935         vnfd_mock = mock.MagicMock()
936         opnfv_vnf = samplevnf_helper.MultiPortConfig(
937             topology_file, config_tpl, tmp_file, vnfd_mock)
938         opnfv_vnf.socket = 0
939         opnfv_vnf.start_core = 0
940         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
941         opnfv_vnf.port_pairs = [("xe0", "xe1")]
942         opnfv_vnf.txrx_pipeline = ''
943         opnfv_vnf.rules = ''
944         opnfv_vnf.write_parser = mock.MagicMock()
945         opnfv_vnf.read_parser = mock.MagicMock()
946         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
947         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
948         opnfv_vnf.write_parser.set = mock.Mock()
949         opnfv_vnf.write_parser.add_section = mock.Mock()
950         opnfv_vnf.read_parser.items = mock.MagicMock()
951         opnfv_vnf.pipeline_counter = 0
952         opnfv_vnf.worker_config = '1t'
953         opnfv_vnf.start_core = 0
954         opnfv_vnf.lb_count = 1
955         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
956         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
957         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
958         opnfv_vnf.lb_index = 1
959         opnfv_vnf.ports_len = 2
960         opnfv_vnf.prv_que_handler = 0
961         result = opnfv_vnf.generate_lb_data()
962         self.assertIsNotNone(result)
963
964     def test_generate_vnf_data(self):
965         topology_file = mock.Mock()
966         config_tpl = mock.Mock()
967         tmp_file = mock.Mock()
968         vnfd_mock = mock.MagicMock()
969         opnfv_vnf = samplevnf_helper.MultiPortConfig(
970             topology_file, config_tpl, tmp_file, vnfd_mock)
971         opnfv_vnf.socket = 0
972         opnfv_vnf.start_core = 0
973         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
974         opnfv_vnf.port_pairs = [("xe0", "xe1")]
975         opnfv_vnf.txrx_pipeline = ''
976         opnfv_vnf.rules = ''
977         opnfv_vnf.write_parser = mock.MagicMock()
978         opnfv_vnf.read_parser = mock.MagicMock()
979         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
980         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
981         opnfv_vnf.write_parser.set = mock.Mock()
982         opnfv_vnf.write_parser.add_section = mock.Mock()
983         opnfv_vnf.read_parser.items = mock.MagicMock()
984         opnfv_vnf.pipeline_counter = 0
985         opnfv_vnf.worker_config = '1t'
986         opnfv_vnf.start_core = 0
987         opnfv_vnf.lb_count = 1
988         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
989         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
990         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
991         opnfv_vnf.lb_index = 1
992         opnfv_vnf.ports_len = 1
993         opnfv_vnf.pktq_out = ['1', '2']
994         opnfv_vnf.vnf_tpl = {'public_ip_port_range': '98164810',
995                              'vnf_set': '(2,4,5)'}
996         opnfv_vnf.prv_que_handler = 0
997         result = opnfv_vnf.generate_vnf_data()
998         self.assertIsNotNone(result)
999         opnfv_vnf.lb_config = 'HW'
1000         opnfv_vnf.mul = 0.1
1001         result = opnfv_vnf.generate_vnf_data()
1002         self.assertIsNotNone(result)
1003         opnfv_vnf.lb_config = 'HW'
1004         opnfv_vnf.mul = 0.1
1005         opnfv_vnf.vnf_type = 'ACL'
1006         result = opnfv_vnf.generate_vnf_data()
1007         self.assertIsNotNone(result)
1008
1009     def test_generate_config_data(self):
1010         topology_file = mock.Mock()
1011         config_tpl = mock.Mock()
1012         tmp_file = mock.Mock()
1013         vnfd_mock = VnfdHelper(self.VNFD_0)
1014         opnfv_vnf = samplevnf_helper.MultiPortConfig(
1015             topology_file, config_tpl, tmp_file, vnfd_mock)
1016         opnfv_vnf.socket = 0
1017         opnfv_vnf.start_core = 0
1018         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
1019         opnfv_vnf.port_pairs = [("xe0", "xe1")]
1020         opnfv_vnf.txrx_pipeline = ''
1021         opnfv_vnf.rules = ''
1022         opnfv_vnf.write_parser = mock.MagicMock()
1023         opnfv_vnf.read_parser = mock.MagicMock()
1024         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
1025         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
1026         opnfv_vnf.write_parser.set = mock.Mock()
1027         opnfv_vnf.write_parser.add_section = mock.Mock()
1028         opnfv_vnf.read_parser.items = mock.MagicMock()
1029         opnfv_vnf.pipeline_counter = 0
1030         opnfv_vnf.worker_config = '1t'
1031         opnfv_vnf.start_core = 0
1032         opnfv_vnf.lb_count = 1
1033         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
1034         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
1035         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
1036         opnfv_vnf.lb_index = 1
1037         opnfv_vnf.ports_len = 1
1038         opnfv_vnf.pktq_out = ['1', '2']
1039         opnfv_vnf.prv_que_handler = 0
1040         opnfv_vnf.init_write_parser_template = mock.Mock()
1041         opnfv_vnf.arpicmp_tpl = mock.MagicMock()
1042         opnfv_vnf.txrx_tpl = mock.MagicMock()
1043         opnfv_vnf.loadb_tpl = mock.MagicMock()
1044         opnfv_vnf.vnf_tpl = {'public_ip_port_range': '98164810 (1,65535)',
1045                              'vnf_set': "(2,4,5)"}
1046         opnfv_vnf.generate_vnf_data = mock.Mock(return_value={})
1047         opnfv_vnf.update_write_parser = mock.Mock()
1048         result = opnfv_vnf.generate_config_data()
1049         self.assertIsNone(result)
1050         opnfv_vnf.generate_final_txrx_data = mock.Mock()
1051         opnfv_vnf.update_write_parser = mock.Mock()
1052         result = opnfv_vnf.generate_config_data()
1053         self.assertIsNone(result)
1054         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
1055         opnfv_vnf.lb_index = 1
1056         opnfv_vnf.ports_len = 1
1057         opnfv_vnf.pktq_out = ['1', '2']
1058         opnfv_vnf.prv_que_handler = 0
1059         opnfv_vnf.init_write_parser_template = mock.Mock()
1060         opnfv_vnf.arpicmp_tpl = mock.MagicMock()
1061         opnfv_vnf.txrx_tpl = mock.MagicMock()
1062         opnfv_vnf.loadb_tpl = mock.MagicMock()
1063         opnfv_vnf.vnf_type = 'CGNAPT'
1064         opnfv_vnf.update_timer = mock.Mock()
1065         opnfv_vnf.port_pair_list = [("xe0", "xe1"), ("xe0", "xe2")]
1066         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
1067         opnfv_vnf.generate_arpicmp_data = mock.Mock()
1068         result = opnfv_vnf.generate_config_data()
1069         self.assertIsNone(result)
1070
1071     def test_init_eal(self):
1072         topology_file = mock.Mock()
1073         config_tpl = mock.Mock()
1074         tmp_file = mock.Mock()
1075         vnfd_mock = mock.MagicMock()
1076         opnfv_vnf = samplevnf_helper.MultiPortConfig(
1077             topology_file, config_tpl, tmp_file, vnfd_mock)
1078         opnfv_vnf.socket = 0
1079         opnfv_vnf.start_core = 0
1080         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
1081         opnfv_vnf.port_pairs = [("xe0", "xe1")]
1082         opnfv_vnf.txrx_pipeline = ''
1083         opnfv_vnf.rules = ''
1084         opnfv_vnf.write_parser = mock.MagicMock()
1085         opnfv_vnf.read_parser = mock.MagicMock()
1086         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
1087         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
1088         opnfv_vnf.write_parser.set = mock.Mock()
1089         opnfv_vnf.write_parser.add_section = mock.Mock()
1090         opnfv_vnf.read_parser.items = mock.MagicMock()
1091         opnfv_vnf.pipeline_counter = 0
1092         opnfv_vnf.worker_config = '1t'
1093         opnfv_vnf.start_core = 0
1094         opnfv_vnf.lb_count = 1
1095         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
1096         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
1097         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
1098         opnfv_vnf.lb_index = 1
1099         opnfv_vnf.ports_len = 1
1100         opnfv_vnf.pktq_out = ['1', '2']
1101         opnfv_vnf.prv_que_handler = 0
1102         opnfv_vnf.init_write_parser_template = mock.Mock()
1103         opnfv_vnf.arpicmp_tpl = mock.MagicMock()
1104         opnfv_vnf.txrx_tpl = mock.MagicMock()
1105         opnfv_vnf.loadb_tpl = mock.MagicMock()
1106         opnfv_vnf.vnf_tpl = {'public_ip_port_range': '98164810 (1,65535)'}
1107         opnfv_vnf.generate_vnf_data = mock.Mock(return_value={})
1108         opnfv_vnf.update_write_parser = mock.Mock()
1109         opnfv_vnf.tmp_file = "/tmp/config"
1110         result = opnfv_vnf.init_eal()
1111         self.assertIsNone(result)