Configure ACL via static file
[yardstick.git] / yardstick / 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_config_parser = mock.patch.object(
147             samplevnf_helper, 'ConfigParser')
148         self.mock_config_parser = self._mock_config_parser.start()
149
150         self.addCleanup(self._cleanup)
151
152     def _cleanup(self):
153         self._mock_open.stop()
154         self._mock_config_parser.stop()
155
156     def test_validate_ip_and_prefixlen(self):
157         ip_addr, prefix_len = (
158             samplevnf_helper.MultiPortConfig.validate_ip_and_prefixlen(
159                 '10.20.30.40', '16'))
160         self.assertEqual(ip_addr, '10.20.30.40')
161         self.assertEqual(prefix_len, 16)
162
163         ip_addr, prefix_len = (
164             samplevnf_helper.MultiPortConfig.validate_ip_and_prefixlen(
165             '::1', '40'))
166         self.assertEqual(ip_addr, '0000:0000:0000:0000:0000:0000:0000:0001')
167         self.assertEqual(prefix_len, 40)
168
169     def test_validate_ip_and_prefixlen_negative(self):
170         with self.assertRaises(AttributeError):
171             samplevnf_helper.MultiPortConfig.validate_ip_and_prefixlen('', '')
172
173         with self.assertRaises(AttributeError):
174             samplevnf_helper.MultiPortConfig.validate_ip_and_prefixlen(
175                 '10.20.30.400', '16')
176
177         with self.assertRaises(AttributeError):
178             samplevnf_helper.MultiPortConfig.validate_ip_and_prefixlen(
179                 '10.20.30.40', '33')
180
181         with self.assertRaises(AttributeError):
182             samplevnf_helper.MultiPortConfig.validate_ip_and_prefixlen(
183                 '::1', '129')
184
185     @mock.patch.object(os.path, 'isfile', return_value=False)
186     def test___init__(self, *args):
187         topology_file = mock.Mock()
188         config_tpl = mock.Mock()
189         tmp_file = mock.Mock()
190         vnfd_mock = mock.MagicMock()
191         opnfv_vnf = samplevnf_helper.MultiPortConfig(
192             topology_file, config_tpl, tmp_file, vnfd_mock)
193         self.assertEqual(0, opnfv_vnf.swq)
194         opnfv_vnf = samplevnf_helper.MultiPortConfig(
195             topology_file, config_tpl, tmp_file, vnfd_mock)
196         self.assertEqual(0, opnfv_vnf.swq)
197
198     def test_update_timer(self):
199         topology_file = mock.Mock()
200         config_tpl = mock.Mock()
201         tmp_file = mock.Mock()
202         vnfd_mock = mock.MagicMock()
203         opnfv_vnf = samplevnf_helper.MultiPortConfig(
204             topology_file, config_tpl, tmp_file, vnfd_mock)
205         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
206         opnfv_vnf.socket = 0
207         opnfv_vnf.start_core = 0
208         opnfv_vnf.update_write_parser = mock.MagicMock()
209         self.assertIsNone(opnfv_vnf.update_timer())
210
211     def test_generate_script(self):
212         topology_file = mock.Mock()
213         config_tpl = mock.Mock()
214         tmp_file = mock.Mock()
215         vnfd_mock = VnfdHelper(self.VNFD_0)
216         opnfv_vnf = samplevnf_helper.MultiPortConfig(
217             topology_file, config_tpl, tmp_file, vnfd_mock)
218         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
219         opnfv_vnf.socket = 0
220         opnfv_vnf.start_core = 0
221         opnfv_vnf.update_write_parser = mock.MagicMock()
222         opnfv_vnf.generate_script_data = \
223             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
224                                     'arp_config6': '', 'actions': '',
225                                     'arp_route_tbl': '', 'arp_route_tbl6': '',
226                                     'flows': ''})
227         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
228         self.assertIsNotNone(opnfv_vnf.generate_script(self.VNFD))
229         opnfv_vnf.lb_config = 'HW'
230         self.assertIsNotNone(opnfv_vnf.generate_script(self.VNFD))
231
232     def test_generate_script_data(self):
233         topology_file = mock.Mock()
234         config_tpl = mock.Mock()
235         tmp_file = mock.Mock()
236         vnfd_mock = mock.MagicMock()
237         opnfv_vnf = samplevnf_helper.MultiPortConfig(
238             topology_file, config_tpl, tmp_file, vnfd_mock)
239         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
240         opnfv_vnf.socket = 0
241         opnfv_vnf.start_core = 0
242         opnfv_vnf.update_write_parser = mock.MagicMock()
243         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
244         opnfv_vnf.vnf_type = 'ACL'
245         opnfv_vnf.generate_link_config = mock.Mock()
246         opnfv_vnf.generate_arp_config = mock.Mock()
247         opnfv_vnf.generate_arp_config6 = mock.Mock()
248         opnfv_vnf.generate_action_config = mock.Mock()
249         opnfv_vnf.generate_rule_config = mock.Mock()
250         self.assertIsNotNone(opnfv_vnf.generate_script_data())
251
252     def test_generate_arp_config6(self):
253         topology_file = mock.Mock()
254         config_tpl = mock.Mock()
255         tmp_file = mock.Mock()
256         vnfd_mock = mock.MagicMock()
257         opnfv_vnf = samplevnf_helper.MultiPortConfig(
258             topology_file, config_tpl, tmp_file, vnfd_mock)
259         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
260         opnfv_vnf.socket = 0
261         opnfv_vnf.start_core = 0
262         opnfv_vnf.update_write_parser = mock.MagicMock()
263         opnfv_vnf.generate_script_data = \
264             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
265                                     'arp_config6': '', 'actions': '',
266                                     'rules': ''})
267         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
268         opnfv_vnf.get_port_pairs = mock.Mock()
269         opnfv_vnf.vnf_type = 'VFW'
270         opnfv_vnf.get_ports_gateway = mock.Mock(return_value=u'1.1.1.1')
271         opnfv_vnf.get_netmask_gateway = mock.Mock(
272             return_value=u'255.255.255.0')
273         opnfv_vnf.get_ports_gateway6 = mock.Mock(return_value=u'1.1.1.1')
274         opnfv_vnf.get_netmask_gateway6 = mock.Mock(
275             return_value=u'255.255.255.0')
276         opnfv_vnf.txrx_pipeline = ''
277         opnfv_vnf.rules = ''
278         opnfv_vnf.interfaces = mock.MagicMock()
279         opnfv_vnf.get_ports_gateway6 = mock.Mock()
280         self.assertIsNotNone(opnfv_vnf.generate_arp_config6())
281
282     def test_generate_arp_config(self):
283         topology_file = mock.Mock()
284         config_tpl = mock.Mock()
285         tmp_file = mock.Mock()
286         vnfd_mock = mock.MagicMock()
287         opnfv_vnf = samplevnf_helper.MultiPortConfig(
288             topology_file, config_tpl, tmp_file, vnfd_mock)
289         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
290         opnfv_vnf.socket = 0
291         opnfv_vnf.start_core = 0
292         opnfv_vnf.update_write_parser = mock.MagicMock()
293         opnfv_vnf.generate_script_data = \
294             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
295                                     'arp_config6': '', 'actions': '',
296                                     'rules': ''})
297         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
298         opnfv_vnf.get_port_pairs = mock.Mock()
299         opnfv_vnf.vnf_type = 'VFW'
300         opnfv_vnf.get_ports_gateway = mock.Mock(return_value=u'1.1.1.1')
301         opnfv_vnf.get_netmask_gateway = mock.Mock(
302             return_value=u'255.255.255.0')
303         opnfv_vnf.get_ports_gateway6 = mock.Mock(return_value=u'1.1.1.1')
304         opnfv_vnf.get_netmask_gateway6 = mock.Mock(
305             return_value=u'255.255.255.0')
306         opnfv_vnf.txrx_pipeline = ''
307         opnfv_vnf.rules = ''
308         opnfv_vnf.interfaces = mock.MagicMock()
309         opnfv_vnf.get_ports_gateway6 = mock.Mock()
310         self.assertIsNotNone(opnfv_vnf.generate_arp_config())
311
312     def test_get_ports_gateway(self):
313         topology_file = mock.Mock()
314         config_tpl = mock.Mock()
315         tmp_file = mock.Mock()
316         vnfd_mock = mock.MagicMock()
317         opnfv_vnf = samplevnf_helper.MultiPortConfig(
318             topology_file, config_tpl, tmp_file, vnfd_mock)
319         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
320         opnfv_vnf.socket = 0
321         opnfv_vnf.start_core = 0
322         opnfv_vnf.update_write_parser = mock.MagicMock()
323         opnfv_vnf.generate_script_data = \
324             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
325                                     'arp_config6': '', 'actions': '',
326                                     'rules': ''})
327         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
328         opnfv_vnf.get_port_pairs = mock.Mock()
329         opnfv_vnf.vnf_type = 'VFW'
330         opnfv_vnf.txrx_pipeline = ''
331         opnfv_vnf.rules = ''
332         opnfv_vnf.interfaces = mock.MagicMock()
333         opnfv_vnf.get_ports_gateway6 = mock.Mock()
334         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
335         self.assertIsNotNone(opnfv_vnf.get_ports_gateway('xe0'))
336
337     def test_get_ports_gateway6(self):
338         topology_file = mock.Mock()
339         config_tpl = mock.Mock()
340         tmp_file = mock.Mock()
341         vnfd_mock = mock.MagicMock()
342         opnfv_vnf = samplevnf_helper.MultiPortConfig(
343             topology_file, config_tpl, tmp_file, vnfd_mock)
344         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
345         opnfv_vnf.socket = 0
346         opnfv_vnf.start_core = 0
347         opnfv_vnf.update_write_parser = mock.MagicMock()
348         opnfv_vnf.generate_script_data = \
349             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
350                                     'arp_config6': '', 'actions': '',
351                                     'rules': ''})
352         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
353         opnfv_vnf.get_port_pairs = mock.Mock()
354         opnfv_vnf.vnf_type = 'VFW'
355         opnfv_vnf.txrx_pipeline = ''
356         opnfv_vnf.rules = ''
357         opnfv_vnf.interfaces = mock.MagicMock()
358         opnfv_vnf.get_ports_gateway6 = mock.Mock()
359         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
360         self.assertIsNotNone(opnfv_vnf.get_ports_gateway6('xe0'))
361
362     def test_get_netmask_gateway(self):
363         topology_file = mock.Mock()
364         config_tpl = mock.Mock()
365         tmp_file = mock.Mock()
366         vnfd_mock = mock.MagicMock()
367         opnfv_vnf = samplevnf_helper.MultiPortConfig(
368             topology_file, config_tpl, tmp_file, vnfd_mock)
369         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
370         opnfv_vnf.socket = 0
371         opnfv_vnf.start_core = 0
372         opnfv_vnf.update_write_parser = mock.MagicMock()
373         opnfv_vnf.generate_script_data = \
374             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
375                                     'arp_config6': '', 'actions': '',
376                                     'rules': ''})
377         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
378         opnfv_vnf.get_port_pairs = mock.Mock()
379         opnfv_vnf.vnf_type = 'VFW'
380         opnfv_vnf.txrx_pipeline = ''
381         opnfv_vnf.rules = ''
382         opnfv_vnf.interfaces = mock.MagicMock()
383         opnfv_vnf.get_ports_gateway6 = mock.Mock()
384         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
385         self.assertIsNotNone(opnfv_vnf.get_netmask_gateway('xe0'))
386
387     def test_get_netmask_gateway6(self):
388         topology_file = mock.Mock()
389         config_tpl = mock.Mock()
390         tmp_file = mock.Mock()
391         vnfd_mock = mock.MagicMock()
392         opnfv_vnf = samplevnf_helper.MultiPortConfig(
393             topology_file, config_tpl, tmp_file, vnfd_mock)
394         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
395         opnfv_vnf.socket = 0
396         opnfv_vnf.start_core = 0
397         opnfv_vnf.update_write_parser = mock.MagicMock()
398         opnfv_vnf.generate_script_data = \
399             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
400                                     'arp_config6': '', 'actions': '',
401                                     'rules': ''})
402         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
403         opnfv_vnf.get_port_pairs = mock.Mock()
404         opnfv_vnf.vnf_type = 'VFW'
405         opnfv_vnf.txrx_pipeline = ''
406         opnfv_vnf.rules = ''
407         opnfv_vnf.interfaces = mock.MagicMock()
408         opnfv_vnf.get_ports_gateway6 = mock.Mock()
409         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
410         self.assertIsNotNone(opnfv_vnf.get_netmask_gateway6('xe0'))
411
412     def test_generate_link_config(self):
413         topology_file = mock.Mock()
414         config_tpl = mock.Mock()
415         tmp_file = mock.Mock()
416         vnfd_mock = mock.MagicMock()
417
418         opnfv_vnf = samplevnf_helper.MultiPortConfig(
419             topology_file, config_tpl, tmp_file, vnfd_mock)
420         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
421         opnfv_vnf.socket = 0
422         opnfv_vnf.start_core = 0
423         opnfv_vnf.update_write_parser = mock.MagicMock()
424         opnfv_vnf.generate_script_data = \
425             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
426                                     'arp_config6': '', 'actions': '',
427                                     'rules': ''})
428         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
429         opnfv_vnf.get_port_pairs = mock.Mock()
430         opnfv_vnf.vnf_type = 'VFW'
431         opnfv_vnf.txrx_pipeline = ''
432         opnfv_vnf.rules = ''
433         opnfv_vnf.get_ports_gateway6 = mock.Mock()
434         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
435         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
436         opnfv_vnf.all_ports = ['32', '1', '987']
437         opnfv_vnf.validate_ip_and_prefixlen = mock.Mock(
438             return_value=('10.20.30.40', 16))
439
440         result = opnfv_vnf.generate_link_config()
441         self.assertEqual(len(result.splitlines()), 9)
442
443     def test_generate_config(self):
444         topology_file = mock.Mock()
445         config_tpl = mock.Mock()
446         tmp_file = mock.Mock()
447         vnfd_mock = mock.MagicMock()
448         opnfv_vnf = samplevnf_helper.MultiPortConfig(
449             topology_file, config_tpl, tmp_file, vnfd_mock)
450         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
451         opnfv_vnf.socket = 0
452         opnfv_vnf.start_core = 0
453         opnfv_vnf.update_write_parser = mock.MagicMock()
454         opnfv_vnf.generate_script_data = \
455             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
456                                     'arp_config6': '', 'actions': '',
457                                     'rules': ''})
458         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
459         opnfv_vnf.txrx_pipeline = ''
460         opnfv_vnf.rules = ''
461         opnfv_vnf.get_ports_gateway6 = mock.Mock()
462         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
463         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
464         opnfv_vnf.generate_lb_to_port_pair_mapping = mock.Mock()
465         opnfv_vnf.generate_config_data = mock.Mock()
466         opnfv_vnf.write_parser = mock.MagicMock()
467         opnfv_vnf.is_openstack = True
468         self.assertIsNone(opnfv_vnf.generate_config())
469         opnfv_vnf.is_openstack = False
470         self.assertIsNone(opnfv_vnf.generate_config())
471
472     def test_get_config_tpl_data(self):
473         topology_file = mock.Mock()
474         config_tpl = mock.Mock()
475         tmp_file = mock.Mock()
476         vnfd_mock = mock.MagicMock()
477         opnfv_vnf = samplevnf_helper.MultiPortConfig(
478             topology_file, config_tpl, tmp_file, vnfd_mock)
479         opnfv_vnf.socket = 0
480         opnfv_vnf.start_core = 0
481         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
482         opnfv_vnf.txrx_pipeline = ''
483         opnfv_vnf.rules = ''
484         opnfv_vnf.write_parser = mock.MagicMock()
485         opnfv_vnf.read_parser = mock.MagicMock()
486         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
487         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=True)
488         opnfv_vnf.read_parser.get = mock.Mock(return_value='filename')
489
490         self.assertIsNotNone(opnfv_vnf.get_config_tpl_data('filename'))
491
492     def test_get_txrx_tpl_data(self):
493         topology_file = mock.Mock()
494         config_tpl = mock.Mock()
495         tmp_file = mock.Mock()
496         vnfd_mock = mock.MagicMock()
497         opnfv_vnf = samplevnf_helper.MultiPortConfig(
498             topology_file, config_tpl, tmp_file, vnfd_mock)
499         opnfv_vnf.socket = 0
500         opnfv_vnf.start_core = 0
501         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
502         opnfv_vnf.txrx_pipeline = ''
503         opnfv_vnf.rules = ''
504         opnfv_vnf.write_parser = mock.MagicMock()
505         opnfv_vnf.read_parser = mock.MagicMock()
506         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
507         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=True)
508         opnfv_vnf.read_parser.get = mock.Mock(return_value='filename')
509
510         self.assertIsNotNone(opnfv_vnf.get_txrx_tpl_data('filename'))
511
512     def test_init_write_parser_template(self):
513         topology_file = mock.Mock()
514         config_tpl = mock.Mock()
515         tmp_file = mock.Mock()
516         vnfd_mock = mock.MagicMock()
517         opnfv_vnf = samplevnf_helper.MultiPortConfig(
518             topology_file, config_tpl, tmp_file, vnfd_mock)
519         opnfv_vnf.socket = 0
520         opnfv_vnf.start_core = 0
521         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
522         opnfv_vnf.txrx_pipeline = ''
523         opnfv_vnf.rules = ''
524         opnfv_vnf.write_parser = mock.MagicMock()
525         opnfv_vnf.read_parser = mock.MagicMock()
526         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
527         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=True)
528         opnfv_vnf.read_parser.get = mock.Mock(return_value='filename')
529
530         self.assertIsNone(opnfv_vnf.init_write_parser_template('filename'))
531         opnfv_vnf.write_parser.add_section = mock.MagicMock()
532         opnfv_vnf.read_parser.item = mock.Mock(return_value=[1, 2, 3])
533         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=False)
534         opnfv_vnf.write_parser.set = mock.Mock()
535         self.assertIsNone(opnfv_vnf.init_write_parser_template('filename'))
536
537     def test_init_write_parser_template_2(self):
538         topology_file = mock.Mock()
539         config_tpl = mock.Mock()
540         tmp_file = mock.Mock()
541         vnfd_mock = mock.MagicMock()
542         opnfv_vnf = samplevnf_helper.MultiPortConfig(
543             topology_file, config_tpl, tmp_file, vnfd_mock)
544         opnfv_vnf.socket = 0
545         opnfv_vnf.start_core = 0
546         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
547         opnfv_vnf.txrx_pipeline = ''
548         opnfv_vnf.rules = ''
549         opnfv_vnf.write_parser = mock.MagicMock()
550         opnfv_vnf.read_parser = mock.MagicMock()
551         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
552         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
553         opnfv_vnf.write_parser.set = mock.Mock()
554         opnfv_vnf.read_parser.items = mock.MagicMock()
555         self.assertIsNone(opnfv_vnf.init_write_parser_template('filename'))
556
557     def test_update_write_parser(self):
558         topology_file = mock.Mock()
559         config_tpl = mock.Mock()
560         tmp_file = mock.Mock()
561         vnfd_mock = mock.MagicMock()
562         opnfv_vnf = samplevnf_helper.MultiPortConfig(
563             topology_file, config_tpl, tmp_file, vnfd_mock)
564         opnfv_vnf.socket = 0
565         opnfv_vnf.start_core = 0
566         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
567         opnfv_vnf.txrx_pipeline = ''
568         opnfv_vnf.rules = ''
569         opnfv_vnf.write_parser = mock.MagicMock()
570         opnfv_vnf.read_parser = mock.MagicMock()
571         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
572         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
573         opnfv_vnf.write_parser.set = mock.Mock()
574         opnfv_vnf.write_parser.add_section = mock.Mock()
575         opnfv_vnf.read_parser.items = mock.MagicMock()
576         opnfv_vnf.pipeline_counter = 0
577         self.assertIsNone(opnfv_vnf.update_write_parser({'filename': 1}))
578
579     def test_get_worker_threads(self):
580         topology_file = mock.Mock()
581         config_tpl = mock.Mock()
582         tmp_file = mock.Mock()
583         vnfd_mock = mock.MagicMock()
584         opnfv_vnf = samplevnf_helper.MultiPortConfig(
585             topology_file, config_tpl, tmp_file, vnfd_mock)
586         opnfv_vnf.socket = 0
587         opnfv_vnf.start_core = 0
588         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
589         opnfv_vnf.txrx_pipeline = ''
590         opnfv_vnf.rules = ''
591         opnfv_vnf.write_parser = mock.MagicMock()
592         opnfv_vnf.read_parser = mock.MagicMock()
593         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
594         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
595         opnfv_vnf.write_parser.set = mock.Mock()
596         opnfv_vnf.write_parser.add_section = mock.Mock()
597         opnfv_vnf.read_parser.items = mock.MagicMock()
598         opnfv_vnf.pipeline_counter = 0
599         opnfv_vnf.worker_config = '1t'
600         result = opnfv_vnf.get_worker_threads(1)
601         self.assertEqual(1, result)
602         opnfv_vnf.worker_config = '2t'
603         result = opnfv_vnf.get_worker_threads(2)
604         self.assertEqual(2, result)
605         opnfv_vnf.worker_config = '2t'
606         result = opnfv_vnf.get_worker_threads(3)
607         self.assertEqual(2, result)
608
609     # TODO(elfoley): Split this test into smaller tests
610     def test_generate_next_core_id(self):
611         topology_file = mock.Mock()
612         config_tpl = mock.Mock()
613         tmp_file = mock.Mock()
614         vnfd_mock = mock.MagicMock()
615         opnfv_vnf = samplevnf_helper.MultiPortConfig(
616             topology_file, config_tpl, tmp_file, vnfd_mock)
617         opnfv_vnf.socket = 0
618         opnfv_vnf.start_core = 0
619         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
620         opnfv_vnf.txrx_pipeline = ''
621         opnfv_vnf.rules = ''
622         opnfv_vnf.write_parser = mock.MagicMock()
623         opnfv_vnf.read_parser = mock.MagicMock()
624         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
625         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
626         opnfv_vnf.write_parser.set = mock.Mock()
627         opnfv_vnf.write_parser.add_section = mock.Mock()
628         opnfv_vnf.read_parser.items = mock.MagicMock()
629         opnfv_vnf.pipeline_counter = 0
630         opnfv_vnf.worker_config = '1t'
631         opnfv_vnf.start_core = 0
632         result = opnfv_vnf.generate_next_core_id()
633         self.assertIsNone(result)
634         opnfv_vnf.worker_config = '2t'
635         opnfv_vnf.start_core = 'a'
636         self.assertRaises(ValueError, opnfv_vnf.generate_next_core_id)
637         opnfv_vnf.worker_config = '2t'
638         opnfv_vnf.start_core = 1
639         result = opnfv_vnf.generate_next_core_id()
640         self.assertIsNone(result)
641
642     def test_generate_lb_to_port_pair_mapping(self):
643         topology_file = mock.Mock()
644         config_tpl = mock.Mock()
645         tmp_file = mock.Mock()
646         vnfd_mock = VnfdHelper(self.VNFD_0)
647         opnfv_vnf = samplevnf_helper.MultiPortConfig(
648             topology_file, config_tpl, tmp_file, vnfd_mock)
649         opnfv_vnf.socket = 0
650         opnfv_vnf.start_core = 0
651         opnfv_vnf.txrx_pipeline = ''
652         opnfv_vnf.rules = ''
653         opnfv_vnf.write_parser = mock.MagicMock()
654         opnfv_vnf.read_parser = mock.MagicMock()
655         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
656         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
657         opnfv_vnf.write_parser.set = mock.Mock()
658         opnfv_vnf.write_parser.add_section = mock.Mock()
659         opnfv_vnf.read_parser.items = mock.MagicMock()
660         opnfv_vnf.pipeline_counter = 0
661         opnfv_vnf.worker_config = '1t'
662         opnfv_vnf.start_core = 0
663         opnfv_vnf.lb_count = 1
664         opnfv_vnf._port_pairs = samplevnf_helper.PortPairs(vnfd_mock.interfaces)
665         opnfv_vnf.port_pair_list = opnfv_vnf._port_pairs.port_pair_list
666         result = opnfv_vnf.generate_lb_to_port_pair_mapping()
667         self.assertIsNone(result)
668         result = opnfv_vnf.set_priv_to_pub_mapping()
669         self.assertEqual('(0,1)', result)
670
671     def test_set_priv_que_handler(self):
672         topology_file = mock.Mock()
673         config_tpl = mock.Mock()
674         tmp_file = mock.Mock()
675         vnfd_mock = VnfdHelper(self.VNFD_0)
676         opnfv_vnf = samplevnf_helper.MultiPortConfig(
677             topology_file, config_tpl, tmp_file, vnfd_mock)
678         opnfv_vnf.socket = 0
679         opnfv_vnf.start_core = 0
680         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
681         opnfv_vnf.port_pairs = [("xe0", "xe1")]
682         opnfv_vnf.txrx_pipeline = ''
683         opnfv_vnf.rules = ''
684         opnfv_vnf.write_parser = mock.MagicMock()
685         opnfv_vnf.read_parser = mock.MagicMock()
686         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
687         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
688         opnfv_vnf.write_parser.set = mock.Mock()
689         opnfv_vnf.write_parser.add_section = mock.Mock()
690         opnfv_vnf.read_parser.items = mock.MagicMock()
691         opnfv_vnf.pipeline_counter = 0
692         opnfv_vnf.worker_config = '1t'
693         opnfv_vnf.start_core = 0
694         opnfv_vnf.lb_count = 1
695         result = opnfv_vnf.set_priv_que_handler()
696         self.assertIsNone(result)
697
698     def test_generate_arp_route_tbl(self):
699         topology_file = mock.Mock()
700         config_tpl = mock.Mock()
701         tmp_file = ""
702         vnfd_mock = mock.MagicMock()
703         vnfd_mock.port_num.side_effect = ['32', '1', '987']
704         vnfd_mock.find_interface.side_effect = [
705             {
706                 'virtual-interface': {
707                     'dst_ip': '10.20.30.40',
708                     'netmask': '20',
709                 },
710             },
711             {
712                 'virtual-interface': {
713                     'dst_ip': '10.200.30.40',
714                     'netmask': '24',
715                 },
716             },
717             {
718                 'virtual-interface': {
719                     'dst_ip': '10.20.3.40',
720                     'netmask': '8',
721                 },
722             },
723         ]
724
725         opnfv_vnf = samplevnf_helper.MultiPortConfig(
726             topology_file, config_tpl, tmp_file, vnfd_mock)
727         opnfv_vnf.all_ports = [3, 2, 5]
728
729         expected = 'routeadd net 32 10.20.30.40 0xfffff000\n' \
730                    'routeadd net 1 10.200.30.40 0xffffff00\n' \
731                    'routeadd net 987 10.20.3.40 0xff000000'
732         result = opnfv_vnf.generate_arp_route_tbl()
733         self.assertEqual(result, expected)
734
735     def test_generate_arpicmp_data(self):
736         topology_file = mock.Mock()
737         config_tpl = mock.Mock()
738         tmp_file = mock.Mock()
739         vnfd_mock = mock.MagicMock()
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         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
760         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
761         result = opnfv_vnf.generate_arpicmp_data()
762         self.assertIsNotNone(result)
763         opnfv_vnf.nfv_type = 'ovs'
764         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
765         result = opnfv_vnf.generate_arpicmp_data()
766         self.assertIsNotNone(result)
767         opnfv_vnf.nfv_type = 'openstack'
768         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
769         result = opnfv_vnf.generate_arpicmp_data()
770         self.assertIsNotNone(result)
771         opnfv_vnf.lb_config = 'HW'
772         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
773         result = opnfv_vnf.generate_arpicmp_data()
774         self.assertIsNotNone(result)
775
776     def test_generate_final_txrx_data(self):
777         topology_file = mock.Mock()
778         config_tpl = mock.Mock()
779         tmp_file = mock.Mock()
780         vnfd_mock = mock.MagicMock()
781         opnfv_vnf = samplevnf_helper.MultiPortConfig(
782             topology_file, config_tpl, tmp_file, vnfd_mock)
783         opnfv_vnf.socket = 0
784         opnfv_vnf.start_core = 0
785         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
786         opnfv_vnf.port_pairs = [("xe0", "xe1")]
787         opnfv_vnf.txrx_pipeline = ''
788         opnfv_vnf.rules = ''
789         opnfv_vnf.write_parser = mock.MagicMock()
790         opnfv_vnf.read_parser = mock.MagicMock()
791         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
792         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
793         opnfv_vnf.write_parser.set = mock.Mock()
794         opnfv_vnf.write_parser.add_section = mock.Mock()
795         opnfv_vnf.read_parser.items = mock.MagicMock()
796         opnfv_vnf.pipeline_counter = 0
797         opnfv_vnf.worker_config = '1t'
798         opnfv_vnf.start_core = 0
799         opnfv_vnf.lb_count = 1
800         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
801         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
802         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
803         opnfv_vnf.ports_len = 2
804         opnfv_vnf.lb_index = 1
805         opnfv_vnf.pktq_out_os = [1, 2]
806         result = opnfv_vnf.generate_final_txrx_data()
807         self.assertIsNotNone(result)
808         opnfv_vnf.nfv_type = 'openstack'
809         opnfv_vnf.pktq_out_os = [1, 2]
810         opnfv_vnf.lb_index = 1
811         result = opnfv_vnf.generate_final_txrx_data()
812         self.assertIsNotNone(result)
813
814     def test_generate_initial_txrx_data(self):
815         topology_file = mock.Mock()
816         config_tpl = mock.Mock()
817         tmp_file = mock.Mock()
818         vnfd_mock = mock.MagicMock()
819         opnfv_vnf = samplevnf_helper.MultiPortConfig(
820             topology_file, config_tpl, tmp_file, vnfd_mock)
821         opnfv_vnf.socket = 0
822         opnfv_vnf.start_core = 0
823         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
824         opnfv_vnf.port_pairs = [("xe0", "xe1")]
825         opnfv_vnf.txrx_pipeline = ''
826         opnfv_vnf.rules = ''
827         opnfv_vnf.write_parser = mock.MagicMock()
828         opnfv_vnf.read_parser = mock.MagicMock()
829         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
830         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
831         opnfv_vnf.write_parser.set = mock.Mock()
832         opnfv_vnf.write_parser.add_section = mock.Mock()
833         opnfv_vnf.read_parser.items = mock.MagicMock()
834         opnfv_vnf.pipeline_counter = 0
835         opnfv_vnf.worker_config = '1t'
836         opnfv_vnf.start_core = 0
837         opnfv_vnf.lb_count = 1
838         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
839         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
840         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
841         opnfv_vnf.lb_index = 1
842         opnfv_vnf.ports_len = 2
843         result = opnfv_vnf.generate_initial_txrx_data()
844         self.assertIsNotNone(result)
845         opnfv_vnf.nfv_type = 'openstack'
846         opnfv_vnf.pktq_out_os = [1, 2]
847         result = opnfv_vnf.generate_initial_txrx_data()
848         self.assertIsNotNone(result)
849         opnfv_vnf.nfv_type = 'ovs'
850         opnfv_vnf.init_ovs = False
851         opnfv_vnf.ovs_pktq_out = ''
852         opnfv_vnf.pktq_out_os = [1, 2]
853         opnfv_vnf.lb_index = 1
854         result = opnfv_vnf.generate_initial_txrx_data()
855         self.assertIsNotNone(result)
856         opnfv_vnf.nfv_type = 'ovs'
857         opnfv_vnf.init_ovs = True
858         opnfv_vnf.pktq_out_os = [1, 2]
859         opnfv_vnf.ovs_pktq_out = ''
860         opnfv_vnf.lb_index = 1
861         result = opnfv_vnf.generate_initial_txrx_data()
862         self.assertIsNotNone(result)
863
864     def test_generate_lb_data(self):
865         topology_file = mock.Mock()
866         config_tpl = mock.Mock()
867         tmp_file = mock.Mock()
868         vnfd_mock = mock.MagicMock()
869         opnfv_vnf = samplevnf_helper.MultiPortConfig(
870             topology_file, config_tpl, tmp_file, vnfd_mock)
871         opnfv_vnf.socket = 0
872         opnfv_vnf.start_core = 0
873         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
874         opnfv_vnf.port_pairs = [("xe0", "xe1")]
875         opnfv_vnf.txrx_pipeline = ''
876         opnfv_vnf.rules = ''
877         opnfv_vnf.write_parser = mock.MagicMock()
878         opnfv_vnf.read_parser = mock.MagicMock()
879         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
880         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
881         opnfv_vnf.write_parser.set = mock.Mock()
882         opnfv_vnf.write_parser.add_section = mock.Mock()
883         opnfv_vnf.read_parser.items = mock.MagicMock()
884         opnfv_vnf.pipeline_counter = 0
885         opnfv_vnf.worker_config = '1t'
886         opnfv_vnf.start_core = 0
887         opnfv_vnf.lb_count = 1
888         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
889         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
890         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
891         opnfv_vnf.lb_index = 1
892         opnfv_vnf.ports_len = 2
893         opnfv_vnf.prv_que_handler = 0
894         result = opnfv_vnf.generate_lb_data()
895         self.assertIsNotNone(result)
896
897     def test_generate_vnf_data(self):
898         topology_file = mock.Mock()
899         config_tpl = mock.Mock()
900         tmp_file = mock.Mock()
901         vnfd_mock = mock.MagicMock()
902         opnfv_vnf = samplevnf_helper.MultiPortConfig(
903             topology_file, config_tpl, tmp_file, vnfd_mock)
904         opnfv_vnf.socket = 0
905         opnfv_vnf.start_core = 0
906         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
907         opnfv_vnf.port_pairs = [("xe0", "xe1")]
908         opnfv_vnf.txrx_pipeline = ''
909         opnfv_vnf.rules = ''
910         opnfv_vnf.write_parser = mock.MagicMock()
911         opnfv_vnf.read_parser = mock.MagicMock()
912         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
913         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
914         opnfv_vnf.write_parser.set = mock.Mock()
915         opnfv_vnf.write_parser.add_section = mock.Mock()
916         opnfv_vnf.read_parser.items = mock.MagicMock()
917         opnfv_vnf.pipeline_counter = 0
918         opnfv_vnf.worker_config = '1t'
919         opnfv_vnf.start_core = 0
920         opnfv_vnf.lb_count = 1
921         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
922         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
923         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
924         opnfv_vnf.lb_index = 1
925         opnfv_vnf.ports_len = 1
926         opnfv_vnf.pktq_out = ['1', '2']
927         opnfv_vnf.vnf_tpl = {'public_ip_port_range': '98164810',
928                              'vnf_set': '(2,4,5)'}
929         opnfv_vnf.prv_que_handler = 0
930         result = opnfv_vnf.generate_vnf_data()
931         self.assertIsNotNone(result)
932         opnfv_vnf.lb_config = 'HW'
933         opnfv_vnf.mul = 0.1
934         result = opnfv_vnf.generate_vnf_data()
935         self.assertIsNotNone(result)
936         opnfv_vnf.lb_config = 'HW'
937         opnfv_vnf.mul = 0.1
938         opnfv_vnf.vnf_type = 'ACL'
939         result = opnfv_vnf.generate_vnf_data()
940         self.assertIsNotNone(result)
941
942     def test_generate_config_data(self):
943         topology_file = mock.Mock()
944         config_tpl = mock.Mock()
945         tmp_file = mock.Mock()
946         vnfd_mock = VnfdHelper(self.VNFD_0)
947         opnfv_vnf = samplevnf_helper.MultiPortConfig(
948             topology_file, config_tpl, tmp_file, vnfd_mock)
949         opnfv_vnf.socket = 0
950         opnfv_vnf.start_core = 0
951         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
952         opnfv_vnf.port_pairs = [("xe0", "xe1")]
953         opnfv_vnf.txrx_pipeline = ''
954         opnfv_vnf.rules = ''
955         opnfv_vnf.write_parser = mock.MagicMock()
956         opnfv_vnf.read_parser = mock.MagicMock()
957         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
958         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
959         opnfv_vnf.write_parser.set = mock.Mock()
960         opnfv_vnf.write_parser.add_section = mock.Mock()
961         opnfv_vnf.read_parser.items = mock.MagicMock()
962         opnfv_vnf.pipeline_counter = 0
963         opnfv_vnf.worker_config = '1t'
964         opnfv_vnf.start_core = 0
965         opnfv_vnf.lb_count = 1
966         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
967         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
968         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
969         opnfv_vnf.lb_index = 1
970         opnfv_vnf.ports_len = 1
971         opnfv_vnf.pktq_out = ['1', '2']
972         opnfv_vnf.prv_que_handler = 0
973         opnfv_vnf.init_write_parser_template = mock.Mock()
974         opnfv_vnf.arpicmp_tpl = mock.MagicMock()
975         opnfv_vnf.txrx_tpl = mock.MagicMock()
976         opnfv_vnf.loadb_tpl = mock.MagicMock()
977         opnfv_vnf.vnf_tpl = {'public_ip_port_range': '98164810 (1,65535)',
978                              'vnf_set': "(2,4,5)"}
979         opnfv_vnf.generate_vnf_data = mock.Mock(return_value={})
980         opnfv_vnf.update_write_parser = mock.Mock()
981         result = opnfv_vnf.generate_config_data()
982         self.assertIsNone(result)
983         opnfv_vnf.generate_final_txrx_data = mock.Mock()
984         opnfv_vnf.update_write_parser = mock.Mock()
985         result = opnfv_vnf.generate_config_data()
986         self.assertIsNone(result)
987         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
988         opnfv_vnf.lb_index = 1
989         opnfv_vnf.ports_len = 1
990         opnfv_vnf.pktq_out = ['1', '2']
991         opnfv_vnf.prv_que_handler = 0
992         opnfv_vnf.init_write_parser_template = mock.Mock()
993         opnfv_vnf.arpicmp_tpl = mock.MagicMock()
994         opnfv_vnf.txrx_tpl = mock.MagicMock()
995         opnfv_vnf.loadb_tpl = mock.MagicMock()
996         opnfv_vnf.vnf_type = 'CGNAPT'
997         opnfv_vnf.update_timer = mock.Mock()
998         opnfv_vnf.port_pair_list = [("xe0", "xe1"), ("xe0", "xe2")]
999         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
1000         opnfv_vnf.generate_arpicmp_data = mock.Mock()
1001         result = opnfv_vnf.generate_config_data()
1002         self.assertIsNone(result)
1003
1004     def test_init_eal(self):
1005         topology_file = mock.Mock()
1006         config_tpl = mock.Mock()
1007         tmp_file = mock.Mock()
1008         vnfd_mock = mock.MagicMock()
1009         opnfv_vnf = samplevnf_helper.MultiPortConfig(
1010             topology_file, config_tpl, tmp_file, vnfd_mock)
1011         opnfv_vnf.socket = 0
1012         opnfv_vnf.start_core = 0
1013         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
1014         opnfv_vnf.port_pairs = [("xe0", "xe1")]
1015         opnfv_vnf.txrx_pipeline = ''
1016         opnfv_vnf.rules = ''
1017         opnfv_vnf.write_parser = mock.MagicMock()
1018         opnfv_vnf.read_parser = mock.MagicMock()
1019         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
1020         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
1021         opnfv_vnf.write_parser.set = mock.Mock()
1022         opnfv_vnf.write_parser.add_section = mock.Mock()
1023         opnfv_vnf.read_parser.items = mock.MagicMock()
1024         opnfv_vnf.pipeline_counter = 0
1025         opnfv_vnf.worker_config = '1t'
1026         opnfv_vnf.start_core = 0
1027         opnfv_vnf.lb_count = 1
1028         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
1029         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
1030         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
1031         opnfv_vnf.lb_index = 1
1032         opnfv_vnf.ports_len = 1
1033         opnfv_vnf.pktq_out = ['1', '2']
1034         opnfv_vnf.prv_que_handler = 0
1035         opnfv_vnf.init_write_parser_template = mock.Mock()
1036         opnfv_vnf.arpicmp_tpl = mock.MagicMock()
1037         opnfv_vnf.txrx_tpl = mock.MagicMock()
1038         opnfv_vnf.loadb_tpl = mock.MagicMock()
1039         opnfv_vnf.vnf_tpl = {'public_ip_port_range': '98164810 (1,65535)'}
1040         opnfv_vnf.generate_vnf_data = mock.Mock(return_value={})
1041         opnfv_vnf.update_write_parser = mock.Mock()
1042         opnfv_vnf.tmp_file = "/tmp/config"
1043         result = opnfv_vnf.init_eal()
1044         self.assertIsNone(result)