Merge "Document for Euphrates test case results"
[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_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                                     'rules': ''})
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_rule_config(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 = 'ACL'
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.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
278         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
279         opnfv_vnf.rules = ''
280         self.assertIsNotNone(opnfv_vnf.generate_rule_config())
281         opnfv_vnf.rules = 'new'
282         self.assertIsNotNone(opnfv_vnf.generate_rule_config())
283
284     def test_generate_action_config(self):
285         topology_file = mock.Mock()
286         config_tpl = mock.Mock()
287         tmp_file = mock.Mock()
288         vnfd_mock = mock.MagicMock()
289         opnfv_vnf = samplevnf_helper.MultiPortConfig(
290             topology_file, config_tpl, tmp_file, vnfd_mock)
291         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
292         opnfv_vnf.socket = 0
293         opnfv_vnf.start_core = 0
294         opnfv_vnf.update_write_parser = mock.MagicMock()
295         opnfv_vnf.generate_script_data = \
296             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
297                                     'arp_config6': '', 'actions': '',
298                                     'rules': ''})
299         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
300         opnfv_vnf.get_port_pairs = mock.Mock()
301         opnfv_vnf.vnf_type = 'VFW'
302         opnfv_vnf.get_ports_gateway = mock.Mock(return_value=u'1.1.1.1')
303         opnfv_vnf.get_netmask_gateway = mock.Mock(
304             return_value=u'255.255.255.0')
305         opnfv_vnf.get_ports_gateway6 = mock.Mock(return_value=u'1.1.1.1')
306         opnfv_vnf.get_netmask_gateway6 = mock.Mock(
307             return_value=u'255.255.255.0')
308         opnfv_vnf.txrx_pipeline = ''
309         opnfv_vnf.rules = ''
310         self.assertIsNotNone(opnfv_vnf.generate_action_config())
311
312     def test_generate_arp_config6(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.get_ports_gateway = mock.Mock(return_value=u'1.1.1.1')
331         opnfv_vnf.get_netmask_gateway = mock.Mock(
332             return_value=u'255.255.255.0')
333         opnfv_vnf.get_ports_gateway6 = mock.Mock(return_value=u'1.1.1.1')
334         opnfv_vnf.get_netmask_gateway6 = mock.Mock(
335             return_value=u'255.255.255.0')
336         opnfv_vnf.txrx_pipeline = ''
337         opnfv_vnf.rules = ''
338         opnfv_vnf.interfaces = mock.MagicMock()
339         opnfv_vnf.get_ports_gateway6 = mock.Mock()
340         self.assertIsNotNone(opnfv_vnf.generate_arp_config6())
341
342     def test_generate_arp_config(self):
343         topology_file = mock.Mock()
344         config_tpl = mock.Mock()
345         tmp_file = mock.Mock()
346         vnfd_mock = mock.MagicMock()
347         opnfv_vnf = samplevnf_helper.MultiPortConfig(
348             topology_file, config_tpl, tmp_file, vnfd_mock)
349         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
350         opnfv_vnf.socket = 0
351         opnfv_vnf.start_core = 0
352         opnfv_vnf.update_write_parser = mock.MagicMock()
353         opnfv_vnf.generate_script_data = \
354             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
355                                     'arp_config6': '', 'actions': '',
356                                     'rules': ''})
357         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
358         opnfv_vnf.get_port_pairs = mock.Mock()
359         opnfv_vnf.vnf_type = 'VFW'
360         opnfv_vnf.get_ports_gateway = mock.Mock(return_value=u'1.1.1.1')
361         opnfv_vnf.get_netmask_gateway = mock.Mock(
362             return_value=u'255.255.255.0')
363         opnfv_vnf.get_ports_gateway6 = mock.Mock(return_value=u'1.1.1.1')
364         opnfv_vnf.get_netmask_gateway6 = mock.Mock(
365             return_value=u'255.255.255.0')
366         opnfv_vnf.txrx_pipeline = ''
367         opnfv_vnf.rules = ''
368         opnfv_vnf.interfaces = mock.MagicMock()
369         opnfv_vnf.get_ports_gateway6 = mock.Mock()
370         self.assertIsNotNone(opnfv_vnf.generate_arp_config())
371
372     def test_get_ports_gateway(self):
373         topology_file = mock.Mock()
374         config_tpl = mock.Mock()
375         tmp_file = mock.Mock()
376         vnfd_mock = mock.MagicMock()
377         opnfv_vnf = samplevnf_helper.MultiPortConfig(
378             topology_file, config_tpl, tmp_file, vnfd_mock)
379         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
380         opnfv_vnf.socket = 0
381         opnfv_vnf.start_core = 0
382         opnfv_vnf.update_write_parser = mock.MagicMock()
383         opnfv_vnf.generate_script_data = \
384             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
385                                     'arp_config6': '', 'actions': '',
386                                     'rules': ''})
387         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
388         opnfv_vnf.get_port_pairs = mock.Mock()
389         opnfv_vnf.vnf_type = 'VFW'
390         opnfv_vnf.txrx_pipeline = ''
391         opnfv_vnf.rules = ''
392         opnfv_vnf.interfaces = mock.MagicMock()
393         opnfv_vnf.get_ports_gateway6 = mock.Mock()
394         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
395         self.assertIsNotNone(opnfv_vnf.get_ports_gateway('xe0'))
396
397     def test_get_ports_gateway6(self):
398         topology_file = mock.Mock()
399         config_tpl = mock.Mock()
400         tmp_file = mock.Mock()
401         vnfd_mock = mock.MagicMock()
402         opnfv_vnf = samplevnf_helper.MultiPortConfig(
403             topology_file, config_tpl, tmp_file, vnfd_mock)
404         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
405         opnfv_vnf.socket = 0
406         opnfv_vnf.start_core = 0
407         opnfv_vnf.update_write_parser = mock.MagicMock()
408         opnfv_vnf.generate_script_data = \
409             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
410                                     'arp_config6': '', 'actions': '',
411                                     'rules': ''})
412         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
413         opnfv_vnf.get_port_pairs = mock.Mock()
414         opnfv_vnf.vnf_type = 'VFW'
415         opnfv_vnf.txrx_pipeline = ''
416         opnfv_vnf.rules = ''
417         opnfv_vnf.interfaces = mock.MagicMock()
418         opnfv_vnf.get_ports_gateway6 = mock.Mock()
419         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
420         self.assertIsNotNone(opnfv_vnf.get_ports_gateway6('xe0'))
421
422     def test_get_netmask_gateway(self):
423         topology_file = mock.Mock()
424         config_tpl = mock.Mock()
425         tmp_file = mock.Mock()
426         vnfd_mock = mock.MagicMock()
427         opnfv_vnf = samplevnf_helper.MultiPortConfig(
428             topology_file, config_tpl, tmp_file, vnfd_mock)
429         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
430         opnfv_vnf.socket = 0
431         opnfv_vnf.start_core = 0
432         opnfv_vnf.update_write_parser = mock.MagicMock()
433         opnfv_vnf.generate_script_data = \
434             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
435                                     'arp_config6': '', 'actions': '',
436                                     'rules': ''})
437         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
438         opnfv_vnf.get_port_pairs = mock.Mock()
439         opnfv_vnf.vnf_type = 'VFW'
440         opnfv_vnf.txrx_pipeline = ''
441         opnfv_vnf.rules = ''
442         opnfv_vnf.interfaces = mock.MagicMock()
443         opnfv_vnf.get_ports_gateway6 = mock.Mock()
444         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
445         self.assertIsNotNone(opnfv_vnf.get_netmask_gateway('xe0'))
446
447     def test_get_netmask_gateway6(self):
448         topology_file = mock.Mock()
449         config_tpl = mock.Mock()
450         tmp_file = mock.Mock()
451         vnfd_mock = mock.MagicMock()
452         opnfv_vnf = samplevnf_helper.MultiPortConfig(
453             topology_file, config_tpl, tmp_file, vnfd_mock)
454         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
455         opnfv_vnf.socket = 0
456         opnfv_vnf.start_core = 0
457         opnfv_vnf.update_write_parser = mock.MagicMock()
458         opnfv_vnf.generate_script_data = \
459             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
460                                     'arp_config6': '', 'actions': '',
461                                     'rules': ''})
462         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
463         opnfv_vnf.get_port_pairs = mock.Mock()
464         opnfv_vnf.vnf_type = 'VFW'
465         opnfv_vnf.txrx_pipeline = ''
466         opnfv_vnf.rules = ''
467         opnfv_vnf.interfaces = mock.MagicMock()
468         opnfv_vnf.get_ports_gateway6 = mock.Mock()
469         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
470         self.assertIsNotNone(opnfv_vnf.get_netmask_gateway6('xe0'))
471
472     def test_generate_link_config(self):
473         topology_file = mock.Mock()
474         config_tpl = mock.Mock()
475         tmp_file = mock.Mock()
476         vnfd_mock = mock.MagicMock()
477
478         opnfv_vnf = samplevnf_helper.MultiPortConfig(
479             topology_file, config_tpl, tmp_file, vnfd_mock)
480         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
481         opnfv_vnf.socket = 0
482         opnfv_vnf.start_core = 0
483         opnfv_vnf.update_write_parser = mock.MagicMock()
484         opnfv_vnf.generate_script_data = \
485             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
486                                     'arp_config6': '', 'actions': '',
487                                     'rules': ''})
488         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
489         opnfv_vnf.get_port_pairs = mock.Mock()
490         opnfv_vnf.vnf_type = 'VFW'
491         opnfv_vnf.txrx_pipeline = ''
492         opnfv_vnf.rules = ''
493         opnfv_vnf.get_ports_gateway6 = mock.Mock()
494         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
495         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
496         opnfv_vnf.all_ports = ['32', '1', '987']
497         opnfv_vnf.validate_ip_and_prefixlen = mock.Mock(
498             return_value=('10.20.30.40', 16))
499
500         result = opnfv_vnf.generate_link_config()
501         self.assertEqual(len(result.splitlines()), 9)
502
503     def test_generate_config(self):
504         topology_file = mock.Mock()
505         config_tpl = mock.Mock()
506         tmp_file = mock.Mock()
507         vnfd_mock = mock.MagicMock()
508         opnfv_vnf = samplevnf_helper.MultiPortConfig(
509             topology_file, config_tpl, tmp_file, vnfd_mock)
510         opnfv_vnf.get_config_tpl_data = mock.MagicMock()
511         opnfv_vnf.socket = 0
512         opnfv_vnf.start_core = 0
513         opnfv_vnf.update_write_parser = mock.MagicMock()
514         opnfv_vnf.generate_script_data = \
515             mock.Mock(return_value={'link_config': 0, 'arp_config': '',
516                                     'arp_config6': '', 'actions': '',
517                                     'rules': ''})
518         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
519         opnfv_vnf.txrx_pipeline = ''
520         opnfv_vnf.rules = ''
521         opnfv_vnf.get_ports_gateway6 = mock.Mock()
522         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
523         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
524         opnfv_vnf.generate_lb_to_port_pair_mapping = mock.Mock()
525         opnfv_vnf.generate_config_data = mock.Mock()
526         opnfv_vnf.write_parser = mock.MagicMock()
527         opnfv_vnf.is_openstack = True
528         self.assertIsNone(opnfv_vnf.generate_config())
529         opnfv_vnf.is_openstack = False
530         self.assertIsNone(opnfv_vnf.generate_config())
531
532     def test_get_config_tpl_data(self):
533         topology_file = mock.Mock()
534         config_tpl = mock.Mock()
535         tmp_file = mock.Mock()
536         vnfd_mock = mock.MagicMock()
537         opnfv_vnf = samplevnf_helper.MultiPortConfig(
538             topology_file, config_tpl, tmp_file, vnfd_mock)
539         opnfv_vnf.socket = 0
540         opnfv_vnf.start_core = 0
541         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
542         opnfv_vnf.txrx_pipeline = ''
543         opnfv_vnf.rules = ''
544         opnfv_vnf.write_parser = mock.MagicMock()
545         opnfv_vnf.read_parser = mock.MagicMock()
546         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
547         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=True)
548         opnfv_vnf.read_parser.get = mock.Mock(return_value='filename')
549
550         self.assertIsNotNone(opnfv_vnf.get_config_tpl_data('filename'))
551
552     def test_get_txrx_tpl_data(self):
553         topology_file = mock.Mock()
554         config_tpl = mock.Mock()
555         tmp_file = mock.Mock()
556         vnfd_mock = mock.MagicMock()
557         opnfv_vnf = samplevnf_helper.MultiPortConfig(
558             topology_file, config_tpl, tmp_file, vnfd_mock)
559         opnfv_vnf.socket = 0
560         opnfv_vnf.start_core = 0
561         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
562         opnfv_vnf.txrx_pipeline = ''
563         opnfv_vnf.rules = ''
564         opnfv_vnf.write_parser = mock.MagicMock()
565         opnfv_vnf.read_parser = mock.MagicMock()
566         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
567         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=True)
568         opnfv_vnf.read_parser.get = mock.Mock(return_value='filename')
569
570         self.assertIsNotNone(opnfv_vnf.get_txrx_tpl_data('filename'))
571
572     def test_init_write_parser_template(self):
573         topology_file = mock.Mock()
574         config_tpl = mock.Mock()
575         tmp_file = mock.Mock()
576         vnfd_mock = mock.MagicMock()
577         opnfv_vnf = samplevnf_helper.MultiPortConfig(
578             topology_file, config_tpl, tmp_file, vnfd_mock)
579         opnfv_vnf.socket = 0
580         opnfv_vnf.start_core = 0
581         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
582         opnfv_vnf.txrx_pipeline = ''
583         opnfv_vnf.rules = ''
584         opnfv_vnf.write_parser = mock.MagicMock()
585         opnfv_vnf.read_parser = mock.MagicMock()
586         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
587         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=True)
588         opnfv_vnf.read_parser.get = mock.Mock(return_value='filename')
589
590         self.assertIsNone(opnfv_vnf.init_write_parser_template('filename'))
591         opnfv_vnf.write_parser.add_section = mock.MagicMock()
592         opnfv_vnf.read_parser.item = mock.Mock(return_value=[1, 2, 3])
593         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=False)
594         opnfv_vnf.write_parser.set = mock.Mock()
595         self.assertIsNone(opnfv_vnf.init_write_parser_template('filename'))
596
597     def test_init_write_parser_template_2(self):
598         topology_file = mock.Mock()
599         config_tpl = mock.Mock()
600         tmp_file = mock.Mock()
601         vnfd_mock = mock.MagicMock()
602         opnfv_vnf = samplevnf_helper.MultiPortConfig(
603             topology_file, config_tpl, tmp_file, vnfd_mock)
604         opnfv_vnf.socket = 0
605         opnfv_vnf.start_core = 0
606         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
607         opnfv_vnf.txrx_pipeline = ''
608         opnfv_vnf.rules = ''
609         opnfv_vnf.write_parser = mock.MagicMock()
610         opnfv_vnf.read_parser = mock.MagicMock()
611         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
612         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
613         opnfv_vnf.write_parser.set = mock.Mock()
614         opnfv_vnf.read_parser.items = mock.MagicMock()
615         self.assertIsNone(opnfv_vnf.init_write_parser_template('filename'))
616
617     def test_update_write_parser(self):
618         topology_file = mock.Mock()
619         config_tpl = mock.Mock()
620         tmp_file = mock.Mock()
621         vnfd_mock = mock.MagicMock()
622         opnfv_vnf = samplevnf_helper.MultiPortConfig(
623             topology_file, config_tpl, tmp_file, vnfd_mock)
624         opnfv_vnf.socket = 0
625         opnfv_vnf.start_core = 0
626         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
627         opnfv_vnf.txrx_pipeline = ''
628         opnfv_vnf.rules = ''
629         opnfv_vnf.write_parser = mock.MagicMock()
630         opnfv_vnf.read_parser = mock.MagicMock()
631         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
632         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
633         opnfv_vnf.write_parser.set = mock.Mock()
634         opnfv_vnf.write_parser.add_section = mock.Mock()
635         opnfv_vnf.read_parser.items = mock.MagicMock()
636         opnfv_vnf.pipeline_counter = 0
637         self.assertIsNone(opnfv_vnf.update_write_parser({'filename': 1}))
638
639     def test_get_worker_threads(self):
640         topology_file = mock.Mock()
641         config_tpl = mock.Mock()
642         tmp_file = mock.Mock()
643         vnfd_mock = mock.MagicMock()
644         opnfv_vnf = samplevnf_helper.MultiPortConfig(
645             topology_file, config_tpl, tmp_file, vnfd_mock)
646         opnfv_vnf.socket = 0
647         opnfv_vnf.start_core = 0
648         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
649         opnfv_vnf.txrx_pipeline = ''
650         opnfv_vnf.rules = ''
651         opnfv_vnf.write_parser = mock.MagicMock()
652         opnfv_vnf.read_parser = mock.MagicMock()
653         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
654         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
655         opnfv_vnf.write_parser.set = mock.Mock()
656         opnfv_vnf.write_parser.add_section = mock.Mock()
657         opnfv_vnf.read_parser.items = mock.MagicMock()
658         opnfv_vnf.pipeline_counter = 0
659         opnfv_vnf.worker_config = '1t'
660         result = opnfv_vnf.get_worker_threads(1)
661         self.assertEqual(1, result)
662         opnfv_vnf.worker_config = '2t'
663         result = opnfv_vnf.get_worker_threads(2)
664         self.assertEqual(2, result)
665         opnfv_vnf.worker_config = '2t'
666         result = opnfv_vnf.get_worker_threads(3)
667         self.assertEqual(2, result)
668
669     # TODO(elfoley): Split this test into smaller tests
670     def test_generate_next_core_id(self):
671         topology_file = mock.Mock()
672         config_tpl = mock.Mock()
673         tmp_file = mock.Mock()
674         vnfd_mock = mock.MagicMock()
675         opnfv_vnf = samplevnf_helper.MultiPortConfig(
676             topology_file, config_tpl, tmp_file, vnfd_mock)
677         opnfv_vnf.socket = 0
678         opnfv_vnf.start_core = 0
679         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
680         opnfv_vnf.txrx_pipeline = ''
681         opnfv_vnf.rules = ''
682         opnfv_vnf.write_parser = mock.MagicMock()
683         opnfv_vnf.read_parser = mock.MagicMock()
684         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
685         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
686         opnfv_vnf.write_parser.set = mock.Mock()
687         opnfv_vnf.write_parser.add_section = mock.Mock()
688         opnfv_vnf.read_parser.items = mock.MagicMock()
689         opnfv_vnf.pipeline_counter = 0
690         opnfv_vnf.worker_config = '1t'
691         opnfv_vnf.start_core = 0
692         result = opnfv_vnf.generate_next_core_id()
693         self.assertIsNone(result)
694         opnfv_vnf.worker_config = '2t'
695         opnfv_vnf.start_core = 'a'
696         self.assertRaises(ValueError, opnfv_vnf.generate_next_core_id)
697         opnfv_vnf.worker_config = '2t'
698         opnfv_vnf.start_core = 1
699         result = opnfv_vnf.generate_next_core_id()
700         self.assertIsNone(result)
701
702     def test_generate_lb_to_port_pair_mapping(self):
703         topology_file = mock.Mock()
704         config_tpl = mock.Mock()
705         tmp_file = mock.Mock()
706         vnfd_mock = VnfdHelper(self.VNFD_0)
707         opnfv_vnf = samplevnf_helper.MultiPortConfig(
708             topology_file, config_tpl, tmp_file, vnfd_mock)
709         opnfv_vnf.socket = 0
710         opnfv_vnf.start_core = 0
711         opnfv_vnf.txrx_pipeline = ''
712         opnfv_vnf.rules = ''
713         opnfv_vnf.write_parser = mock.MagicMock()
714         opnfv_vnf.read_parser = mock.MagicMock()
715         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
716         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
717         opnfv_vnf.write_parser.set = mock.Mock()
718         opnfv_vnf.write_parser.add_section = mock.Mock()
719         opnfv_vnf.read_parser.items = mock.MagicMock()
720         opnfv_vnf.pipeline_counter = 0
721         opnfv_vnf.worker_config = '1t'
722         opnfv_vnf.start_core = 0
723         opnfv_vnf.lb_count = 1
724         opnfv_vnf._port_pairs = samplevnf_helper.PortPairs(vnfd_mock.interfaces)
725         opnfv_vnf.port_pair_list = opnfv_vnf._port_pairs.port_pair_list
726         result = opnfv_vnf.generate_lb_to_port_pair_mapping()
727         self.assertIsNone(result)
728         result = opnfv_vnf.set_priv_to_pub_mapping()
729         self.assertEqual('(0,1)', result)
730
731     def test_set_priv_que_handler(self):
732         topology_file = mock.Mock()
733         config_tpl = mock.Mock()
734         tmp_file = mock.Mock()
735         vnfd_mock = VnfdHelper(self.VNFD_0)
736         opnfv_vnf = samplevnf_helper.MultiPortConfig(
737             topology_file, config_tpl, tmp_file, vnfd_mock)
738         opnfv_vnf.socket = 0
739         opnfv_vnf.start_core = 0
740         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
741         opnfv_vnf.port_pairs = [("xe0", "xe1")]
742         opnfv_vnf.txrx_pipeline = ''
743         opnfv_vnf.rules = ''
744         opnfv_vnf.write_parser = mock.MagicMock()
745         opnfv_vnf.read_parser = mock.MagicMock()
746         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
747         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
748         opnfv_vnf.write_parser.set = mock.Mock()
749         opnfv_vnf.write_parser.add_section = mock.Mock()
750         opnfv_vnf.read_parser.items = mock.MagicMock()
751         opnfv_vnf.pipeline_counter = 0
752         opnfv_vnf.worker_config = '1t'
753         opnfv_vnf.start_core = 0
754         opnfv_vnf.lb_count = 1
755         result = opnfv_vnf.set_priv_que_handler()
756         self.assertIsNone(result)
757
758     def test_generate_arp_route_tbl(self):
759         # ELF: could n=do this in setup
760         topology_file = mock.Mock()
761         config_tpl = mock.Mock()
762         tmp_file = ""
763         vnfd_mock = mock.MagicMock()
764         vnfd_mock.port_num.side_effect = ['32', '1', '987']
765         vnfd_mock.find_interface.side_effect = [
766             {
767                 'virtual-interface': {
768                     'dst_ip': '10.20.30.40',
769                     'netmask': '20',
770                 },
771             },
772             {
773                 'virtual-interface': {
774                     'dst_ip': '10.200.30.40',
775                     'netmask': '24',
776                 },
777             },
778             {
779                 'virtual-interface': {
780                     'dst_ip': '10.20.3.40',
781                     'netmask': '8',
782                 },
783             },
784         ]
785
786         opnfv_vnf = samplevnf_helper.MultiPortConfig(
787             topology_file, config_tpl, tmp_file, vnfd_mock)
788         opnfv_vnf.all_ports = [3, 2, 5]
789
790         expected = 'routeadd net 32 10.20.30.40 0xfffff000\n' \
791                    'routeadd net 1 10.200.30.40 0xffffff00\n' \
792                    'routeadd net 987 10.20.3.40 0xff000000'
793         result = opnfv_vnf.generate_arp_route_tbl()
794         self.assertEqual(result, expected)
795
796     def test_generate_arpicmp_data(self):
797         topology_file = mock.Mock()
798         config_tpl = mock.Mock()
799         tmp_file = mock.Mock()
800         vnfd_mock = mock.MagicMock()
801         opnfv_vnf = samplevnf_helper.MultiPortConfig(
802             topology_file, config_tpl, tmp_file, vnfd_mock)
803         opnfv_vnf.socket = 0
804         opnfv_vnf.start_core = 0
805         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
806         opnfv_vnf.port_pairs = [("xe0", "xe1")]
807         opnfv_vnf.txrx_pipeline = ''
808         opnfv_vnf.rules = ''
809         opnfv_vnf.write_parser = mock.MagicMock()
810         opnfv_vnf.read_parser = mock.MagicMock()
811         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
812         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
813         opnfv_vnf.write_parser.set = mock.Mock()
814         opnfv_vnf.write_parser.add_section = mock.Mock()
815         opnfv_vnf.read_parser.items = mock.MagicMock()
816         opnfv_vnf.pipeline_counter = 0
817         opnfv_vnf.worker_config = '1t'
818         opnfv_vnf.start_core = 0
819         opnfv_vnf.lb_count = 1
820         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
821         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
822         result = opnfv_vnf.generate_arpicmp_data()
823         self.assertIsNotNone(result)
824         opnfv_vnf.nfv_type = 'ovs'
825         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
826         result = opnfv_vnf.generate_arpicmp_data()
827         self.assertIsNotNone(result)
828         opnfv_vnf.nfv_type = 'openstack'
829         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
830         result = opnfv_vnf.generate_arpicmp_data()
831         self.assertIsNotNone(result)
832         opnfv_vnf.lb_config = 'HW'
833         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
834         result = opnfv_vnf.generate_arpicmp_data()
835         self.assertIsNotNone(result)
836
837     def test_generate_final_txrx_data(self):
838         topology_file = mock.Mock()
839         config_tpl = mock.Mock()
840         tmp_file = mock.Mock()
841         vnfd_mock = mock.MagicMock()
842         opnfv_vnf = samplevnf_helper.MultiPortConfig(
843             topology_file, config_tpl, tmp_file, vnfd_mock)
844         opnfv_vnf.socket = 0
845         opnfv_vnf.start_core = 0
846         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
847         opnfv_vnf.port_pairs = [("xe0", "xe1")]
848         opnfv_vnf.txrx_pipeline = ''
849         opnfv_vnf.rules = ''
850         opnfv_vnf.write_parser = mock.MagicMock()
851         opnfv_vnf.read_parser = mock.MagicMock()
852         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
853         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
854         opnfv_vnf.write_parser.set = mock.Mock()
855         opnfv_vnf.write_parser.add_section = mock.Mock()
856         opnfv_vnf.read_parser.items = mock.MagicMock()
857         opnfv_vnf.pipeline_counter = 0
858         opnfv_vnf.worker_config = '1t'
859         opnfv_vnf.start_core = 0
860         opnfv_vnf.lb_count = 1
861         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
862         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
863         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
864         opnfv_vnf.ports_len = 2
865         opnfv_vnf.lb_index = 1
866         opnfv_vnf.pktq_out_os = [1, 2]
867         result = opnfv_vnf.generate_final_txrx_data()
868         self.assertIsNotNone(result)
869         opnfv_vnf.nfv_type = 'openstack'
870         opnfv_vnf.pktq_out_os = [1, 2]
871         opnfv_vnf.lb_index = 1
872         result = opnfv_vnf.generate_final_txrx_data()
873         self.assertIsNotNone(result)
874
875     def test_generate_initial_txrx_data(self):
876         topology_file = mock.Mock()
877         config_tpl = mock.Mock()
878         tmp_file = mock.Mock()
879         vnfd_mock = mock.MagicMock()
880         opnfv_vnf = samplevnf_helper.MultiPortConfig(
881             topology_file, config_tpl, tmp_file, vnfd_mock)
882         opnfv_vnf.socket = 0
883         opnfv_vnf.start_core = 0
884         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
885         opnfv_vnf.port_pairs = [("xe0", "xe1")]
886         opnfv_vnf.txrx_pipeline = ''
887         opnfv_vnf.rules = ''
888         opnfv_vnf.write_parser = mock.MagicMock()
889         opnfv_vnf.read_parser = mock.MagicMock()
890         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
891         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
892         opnfv_vnf.write_parser.set = mock.Mock()
893         opnfv_vnf.write_parser.add_section = mock.Mock()
894         opnfv_vnf.read_parser.items = mock.MagicMock()
895         opnfv_vnf.pipeline_counter = 0
896         opnfv_vnf.worker_config = '1t'
897         opnfv_vnf.start_core = 0
898         opnfv_vnf.lb_count = 1
899         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
900         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
901         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
902         opnfv_vnf.lb_index = 1
903         opnfv_vnf.ports_len = 2
904         result = opnfv_vnf.generate_initial_txrx_data()
905         self.assertIsNotNone(result)
906         opnfv_vnf.nfv_type = 'openstack'
907         opnfv_vnf.pktq_out_os = [1, 2]
908         result = opnfv_vnf.generate_initial_txrx_data()
909         self.assertIsNotNone(result)
910         opnfv_vnf.nfv_type = 'ovs'
911         opnfv_vnf.init_ovs = False
912         opnfv_vnf.ovs_pktq_out = ''
913         opnfv_vnf.pktq_out_os = [1, 2]
914         opnfv_vnf.lb_index = 1
915         result = opnfv_vnf.generate_initial_txrx_data()
916         self.assertIsNotNone(result)
917         opnfv_vnf.nfv_type = 'ovs'
918         opnfv_vnf.init_ovs = True
919         opnfv_vnf.pktq_out_os = [1, 2]
920         opnfv_vnf.ovs_pktq_out = ''
921         opnfv_vnf.lb_index = 1
922         result = opnfv_vnf.generate_initial_txrx_data()
923         self.assertIsNotNone(result)
924
925     def test_generate_lb_data(self):
926         topology_file = mock.Mock()
927         config_tpl = mock.Mock()
928         tmp_file = mock.Mock()
929         vnfd_mock = mock.MagicMock()
930         opnfv_vnf = samplevnf_helper.MultiPortConfig(
931             topology_file, config_tpl, tmp_file, vnfd_mock)
932         opnfv_vnf.socket = 0
933         opnfv_vnf.start_core = 0
934         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
935         opnfv_vnf.port_pairs = [("xe0", "xe1")]
936         opnfv_vnf.txrx_pipeline = ''
937         opnfv_vnf.rules = ''
938         opnfv_vnf.write_parser = mock.MagicMock()
939         opnfv_vnf.read_parser = mock.MagicMock()
940         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
941         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
942         opnfv_vnf.write_parser.set = mock.Mock()
943         opnfv_vnf.write_parser.add_section = mock.Mock()
944         opnfv_vnf.read_parser.items = mock.MagicMock()
945         opnfv_vnf.pipeline_counter = 0
946         opnfv_vnf.worker_config = '1t'
947         opnfv_vnf.start_core = 0
948         opnfv_vnf.lb_count = 1
949         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
950         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
951         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
952         opnfv_vnf.lb_index = 1
953         opnfv_vnf.ports_len = 2
954         opnfv_vnf.prv_que_handler = 0
955         result = opnfv_vnf.generate_lb_data()
956         self.assertIsNotNone(result)
957
958     def test_generate_vnf_data(self):
959         topology_file = mock.Mock()
960         config_tpl = mock.Mock()
961         tmp_file = mock.Mock()
962         vnfd_mock = mock.MagicMock()
963         opnfv_vnf = samplevnf_helper.MultiPortConfig(
964             topology_file, config_tpl, tmp_file, vnfd_mock)
965         opnfv_vnf.socket = 0
966         opnfv_vnf.start_core = 0
967         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
968         opnfv_vnf.port_pairs = [("xe0", "xe1")]
969         opnfv_vnf.txrx_pipeline = ''
970         opnfv_vnf.rules = ''
971         opnfv_vnf.write_parser = mock.MagicMock()
972         opnfv_vnf.read_parser = mock.MagicMock()
973         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
974         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
975         opnfv_vnf.write_parser.set = mock.Mock()
976         opnfv_vnf.write_parser.add_section = mock.Mock()
977         opnfv_vnf.read_parser.items = mock.MagicMock()
978         opnfv_vnf.pipeline_counter = 0
979         opnfv_vnf.worker_config = '1t'
980         opnfv_vnf.start_core = 0
981         opnfv_vnf.lb_count = 1
982         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
983         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
984         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
985         opnfv_vnf.lb_index = 1
986         opnfv_vnf.ports_len = 1
987         opnfv_vnf.pktq_out = ['1', '2']
988         opnfv_vnf.vnf_tpl = {'public_ip_port_range': '98164810',
989                              'vnf_set': '(2,4,5)'}
990         opnfv_vnf.prv_que_handler = 0
991         result = opnfv_vnf.generate_vnf_data()
992         self.assertIsNotNone(result)
993         opnfv_vnf.lb_config = 'HW'
994         opnfv_vnf.mul = 0.1
995         result = opnfv_vnf.generate_vnf_data()
996         self.assertIsNotNone(result)
997         opnfv_vnf.lb_config = 'HW'
998         opnfv_vnf.mul = 0.1
999         opnfv_vnf.vnf_type = 'ACL'
1000         result = opnfv_vnf.generate_vnf_data()
1001         self.assertIsNotNone(result)
1002
1003     def test_generate_config_data(self):
1004         topology_file = mock.Mock()
1005         config_tpl = mock.Mock()
1006         tmp_file = mock.Mock()
1007         vnfd_mock = VnfdHelper(self.VNFD_0)
1008         opnfv_vnf = samplevnf_helper.MultiPortConfig(
1009             topology_file, config_tpl, tmp_file, vnfd_mock)
1010         opnfv_vnf.socket = 0
1011         opnfv_vnf.start_core = 0
1012         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
1013         opnfv_vnf.port_pairs = [("xe0", "xe1")]
1014         opnfv_vnf.txrx_pipeline = ''
1015         opnfv_vnf.rules = ''
1016         opnfv_vnf.write_parser = mock.MagicMock()
1017         opnfv_vnf.read_parser = mock.MagicMock()
1018         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
1019         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
1020         opnfv_vnf.write_parser.set = mock.Mock()
1021         opnfv_vnf.write_parser.add_section = mock.Mock()
1022         opnfv_vnf.read_parser.items = mock.MagicMock()
1023         opnfv_vnf.pipeline_counter = 0
1024         opnfv_vnf.worker_config = '1t'
1025         opnfv_vnf.start_core = 0
1026         opnfv_vnf.lb_count = 1
1027         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
1028         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
1029         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
1030         opnfv_vnf.lb_index = 1
1031         opnfv_vnf.ports_len = 1
1032         opnfv_vnf.pktq_out = ['1', '2']
1033         opnfv_vnf.prv_que_handler = 0
1034         opnfv_vnf.init_write_parser_template = mock.Mock()
1035         opnfv_vnf.arpicmp_tpl = mock.MagicMock()
1036         opnfv_vnf.txrx_tpl = mock.MagicMock()
1037         opnfv_vnf.loadb_tpl = mock.MagicMock()
1038         opnfv_vnf.vnf_tpl = {'public_ip_port_range': '98164810 (1,65535)',
1039                              'vnf_set': "(2,4,5)"}
1040         opnfv_vnf.generate_vnf_data = mock.Mock(return_value={})
1041         opnfv_vnf.update_write_parser = mock.Mock()
1042         result = opnfv_vnf.generate_config_data()
1043         self.assertIsNone(result)
1044         opnfv_vnf.generate_final_txrx_data = mock.Mock()
1045         opnfv_vnf.update_write_parser = mock.Mock()
1046         result = opnfv_vnf.generate_config_data()
1047         self.assertIsNone(result)
1048         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
1049         opnfv_vnf.lb_index = 1
1050         opnfv_vnf.ports_len = 1
1051         opnfv_vnf.pktq_out = ['1', '2']
1052         opnfv_vnf.prv_que_handler = 0
1053         opnfv_vnf.init_write_parser_template = mock.Mock()
1054         opnfv_vnf.arpicmp_tpl = mock.MagicMock()
1055         opnfv_vnf.txrx_tpl = mock.MagicMock()
1056         opnfv_vnf.loadb_tpl = mock.MagicMock()
1057         opnfv_vnf.vnf_type = 'CGNAPT'
1058         opnfv_vnf.update_timer = mock.Mock()
1059         opnfv_vnf.port_pair_list = [("xe0", "xe1"), ("xe0", "xe2")]
1060         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
1061         opnfv_vnf.generate_arpicmp_data = mock.Mock()
1062         result = opnfv_vnf.generate_config_data()
1063         self.assertIsNone(result)
1064
1065     def test_init_eal(self):
1066         topology_file = mock.Mock()
1067         config_tpl = mock.Mock()
1068         tmp_file = mock.Mock()
1069         vnfd_mock = mock.MagicMock()
1070         opnfv_vnf = samplevnf_helper.MultiPortConfig(
1071             topology_file, config_tpl, tmp_file, vnfd_mock)
1072         opnfv_vnf.socket = 0
1073         opnfv_vnf.start_core = 0
1074         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
1075         opnfv_vnf.port_pairs = [("xe0", "xe1")]
1076         opnfv_vnf.txrx_pipeline = ''
1077         opnfv_vnf.rules = ''
1078         opnfv_vnf.write_parser = mock.MagicMock()
1079         opnfv_vnf.read_parser = mock.MagicMock()
1080         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
1081         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
1082         opnfv_vnf.write_parser.set = mock.Mock()
1083         opnfv_vnf.write_parser.add_section = mock.Mock()
1084         opnfv_vnf.read_parser.items = mock.MagicMock()
1085         opnfv_vnf.pipeline_counter = 0
1086         opnfv_vnf.worker_config = '1t'
1087         opnfv_vnf.start_core = 0
1088         opnfv_vnf.lb_count = 1
1089         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
1090         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
1091         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
1092         opnfv_vnf.lb_index = 1
1093         opnfv_vnf.ports_len = 1
1094         opnfv_vnf.pktq_out = ['1', '2']
1095         opnfv_vnf.prv_que_handler = 0
1096         opnfv_vnf.init_write_parser_template = mock.Mock()
1097         opnfv_vnf.arpicmp_tpl = mock.MagicMock()
1098         opnfv_vnf.txrx_tpl = mock.MagicMock()
1099         opnfv_vnf.loadb_tpl = mock.MagicMock()
1100         opnfv_vnf.vnf_tpl = {'public_ip_port_range': '98164810 (1,65535)'}
1101         opnfv_vnf.generate_vnf_data = mock.Mock(return_value={})
1102         opnfv_vnf.update_write_parser = mock.Mock()
1103         opnfv_vnf.tmp_file = "/tmp/config"
1104         result = opnfv_vnf.init_eal()
1105         self.assertIsNone(result)