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