Merge "Add scale out TCs with availability zone support"
[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                                     '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         topology_file = mock.Mock()
760         config_tpl = mock.Mock()
761         tmp_file = ""
762         vnfd_mock = mock.MagicMock()
763         vnfd_mock.port_num.side_effect = ['32', '1', '987']
764         vnfd_mock.find_interface.side_effect = [
765             {
766                 'virtual-interface': {
767                     'dst_ip': '10.20.30.40',
768                     'netmask': '20',
769                 },
770             },
771             {
772                 'virtual-interface': {
773                     'dst_ip': '10.200.30.40',
774                     'netmask': '24',
775                 },
776             },
777             {
778                 'virtual-interface': {
779                     'dst_ip': '10.20.3.40',
780                     'netmask': '8',
781                 },
782             },
783         ]
784
785         opnfv_vnf = samplevnf_helper.MultiPortConfig(
786             topology_file, config_tpl, tmp_file, vnfd_mock)
787         opnfv_vnf.all_ports = [3, 2, 5]
788
789         expected = 'routeadd net 32 10.20.30.40 0xfffff000\n' \
790                    'routeadd net 1 10.200.30.40 0xffffff00\n' \
791                    'routeadd net 987 10.20.3.40 0xff000000'
792         result = opnfv_vnf.generate_arp_route_tbl()
793         self.assertEqual(result, expected)
794
795     def test_generate_arpicmp_data(self):
796         topology_file = mock.Mock()
797         config_tpl = mock.Mock()
798         tmp_file = mock.Mock()
799         vnfd_mock = mock.MagicMock()
800         opnfv_vnf = samplevnf_helper.MultiPortConfig(
801             topology_file, config_tpl, tmp_file, vnfd_mock)
802         opnfv_vnf.socket = 0
803         opnfv_vnf.start_core = 0
804         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
805         opnfv_vnf.port_pairs = [("xe0", "xe1")]
806         opnfv_vnf.txrx_pipeline = ''
807         opnfv_vnf.rules = ''
808         opnfv_vnf.write_parser = mock.MagicMock()
809         opnfv_vnf.read_parser = mock.MagicMock()
810         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
811         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
812         opnfv_vnf.write_parser.set = mock.Mock()
813         opnfv_vnf.write_parser.add_section = mock.Mock()
814         opnfv_vnf.read_parser.items = mock.MagicMock()
815         opnfv_vnf.pipeline_counter = 0
816         opnfv_vnf.worker_config = '1t'
817         opnfv_vnf.start_core = 0
818         opnfv_vnf.lb_count = 1
819         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
820         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
821         result = opnfv_vnf.generate_arpicmp_data()
822         self.assertIsNotNone(result)
823         opnfv_vnf.nfv_type = 'ovs'
824         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
825         result = opnfv_vnf.generate_arpicmp_data()
826         self.assertIsNotNone(result)
827         opnfv_vnf.nfv_type = 'openstack'
828         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
829         result = opnfv_vnf.generate_arpicmp_data()
830         self.assertIsNotNone(result)
831         opnfv_vnf.lb_config = 'HW'
832         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
833         result = opnfv_vnf.generate_arpicmp_data()
834         self.assertIsNotNone(result)
835
836     def test_generate_final_txrx_data(self):
837         topology_file = mock.Mock()
838         config_tpl = mock.Mock()
839         tmp_file = mock.Mock()
840         vnfd_mock = mock.MagicMock()
841         opnfv_vnf = samplevnf_helper.MultiPortConfig(
842             topology_file, config_tpl, tmp_file, vnfd_mock)
843         opnfv_vnf.socket = 0
844         opnfv_vnf.start_core = 0
845         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
846         opnfv_vnf.port_pairs = [("xe0", "xe1")]
847         opnfv_vnf.txrx_pipeline = ''
848         opnfv_vnf.rules = ''
849         opnfv_vnf.write_parser = mock.MagicMock()
850         opnfv_vnf.read_parser = mock.MagicMock()
851         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
852         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
853         opnfv_vnf.write_parser.set = mock.Mock()
854         opnfv_vnf.write_parser.add_section = mock.Mock()
855         opnfv_vnf.read_parser.items = mock.MagicMock()
856         opnfv_vnf.pipeline_counter = 0
857         opnfv_vnf.worker_config = '1t'
858         opnfv_vnf.start_core = 0
859         opnfv_vnf.lb_count = 1
860         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
861         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
862         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
863         opnfv_vnf.ports_len = 2
864         opnfv_vnf.lb_index = 1
865         opnfv_vnf.pktq_out_os = [1, 2]
866         result = opnfv_vnf.generate_final_txrx_data()
867         self.assertIsNotNone(result)
868         opnfv_vnf.nfv_type = 'openstack'
869         opnfv_vnf.pktq_out_os = [1, 2]
870         opnfv_vnf.lb_index = 1
871         result = opnfv_vnf.generate_final_txrx_data()
872         self.assertIsNotNone(result)
873
874     def test_generate_initial_txrx_data(self):
875         topology_file = mock.Mock()
876         config_tpl = mock.Mock()
877         tmp_file = mock.Mock()
878         vnfd_mock = mock.MagicMock()
879         opnfv_vnf = samplevnf_helper.MultiPortConfig(
880             topology_file, config_tpl, tmp_file, vnfd_mock)
881         opnfv_vnf.socket = 0
882         opnfv_vnf.start_core = 0
883         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
884         opnfv_vnf.port_pairs = [("xe0", "xe1")]
885         opnfv_vnf.txrx_pipeline = ''
886         opnfv_vnf.rules = ''
887         opnfv_vnf.write_parser = mock.MagicMock()
888         opnfv_vnf.read_parser = mock.MagicMock()
889         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
890         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
891         opnfv_vnf.write_parser.set = mock.Mock()
892         opnfv_vnf.write_parser.add_section = mock.Mock()
893         opnfv_vnf.read_parser.items = mock.MagicMock()
894         opnfv_vnf.pipeline_counter = 0
895         opnfv_vnf.worker_config = '1t'
896         opnfv_vnf.start_core = 0
897         opnfv_vnf.lb_count = 1
898         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
899         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
900         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
901         opnfv_vnf.lb_index = 1
902         opnfv_vnf.ports_len = 2
903         result = opnfv_vnf.generate_initial_txrx_data()
904         self.assertIsNotNone(result)
905         opnfv_vnf.nfv_type = 'openstack'
906         opnfv_vnf.pktq_out_os = [1, 2]
907         result = opnfv_vnf.generate_initial_txrx_data()
908         self.assertIsNotNone(result)
909         opnfv_vnf.nfv_type = 'ovs'
910         opnfv_vnf.init_ovs = False
911         opnfv_vnf.ovs_pktq_out = ''
912         opnfv_vnf.pktq_out_os = [1, 2]
913         opnfv_vnf.lb_index = 1
914         result = opnfv_vnf.generate_initial_txrx_data()
915         self.assertIsNotNone(result)
916         opnfv_vnf.nfv_type = 'ovs'
917         opnfv_vnf.init_ovs = True
918         opnfv_vnf.pktq_out_os = [1, 2]
919         opnfv_vnf.ovs_pktq_out = ''
920         opnfv_vnf.lb_index = 1
921         result = opnfv_vnf.generate_initial_txrx_data()
922         self.assertIsNotNone(result)
923
924     def test_generate_lb_data(self):
925         topology_file = mock.Mock()
926         config_tpl = mock.Mock()
927         tmp_file = mock.Mock()
928         vnfd_mock = mock.MagicMock()
929         opnfv_vnf = samplevnf_helper.MultiPortConfig(
930             topology_file, config_tpl, tmp_file, vnfd_mock)
931         opnfv_vnf.socket = 0
932         opnfv_vnf.start_core = 0
933         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
934         opnfv_vnf.port_pairs = [("xe0", "xe1")]
935         opnfv_vnf.txrx_pipeline = ''
936         opnfv_vnf.rules = ''
937         opnfv_vnf.write_parser = mock.MagicMock()
938         opnfv_vnf.read_parser = mock.MagicMock()
939         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
940         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
941         opnfv_vnf.write_parser.set = mock.Mock()
942         opnfv_vnf.write_parser.add_section = mock.Mock()
943         opnfv_vnf.read_parser.items = mock.MagicMock()
944         opnfv_vnf.pipeline_counter = 0
945         opnfv_vnf.worker_config = '1t'
946         opnfv_vnf.start_core = 0
947         opnfv_vnf.lb_count = 1
948         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
949         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
950         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
951         opnfv_vnf.lb_index = 1
952         opnfv_vnf.ports_len = 2
953         opnfv_vnf.prv_que_handler = 0
954         result = opnfv_vnf.generate_lb_data()
955         self.assertIsNotNone(result)
956
957     def test_generate_vnf_data(self):
958         topology_file = mock.Mock()
959         config_tpl = mock.Mock()
960         tmp_file = mock.Mock()
961         vnfd_mock = mock.MagicMock()
962         opnfv_vnf = samplevnf_helper.MultiPortConfig(
963             topology_file, config_tpl, tmp_file, vnfd_mock)
964         opnfv_vnf.socket = 0
965         opnfv_vnf.start_core = 0
966         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
967         opnfv_vnf.port_pairs = [("xe0", "xe1")]
968         opnfv_vnf.txrx_pipeline = ''
969         opnfv_vnf.rules = ''
970         opnfv_vnf.write_parser = mock.MagicMock()
971         opnfv_vnf.read_parser = mock.MagicMock()
972         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
973         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
974         opnfv_vnf.write_parser.set = mock.Mock()
975         opnfv_vnf.write_parser.add_section = mock.Mock()
976         opnfv_vnf.read_parser.items = mock.MagicMock()
977         opnfv_vnf.pipeline_counter = 0
978         opnfv_vnf.worker_config = '1t'
979         opnfv_vnf.start_core = 0
980         opnfv_vnf.lb_count = 1
981         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
982         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
983         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
984         opnfv_vnf.lb_index = 1
985         opnfv_vnf.ports_len = 1
986         opnfv_vnf.pktq_out = ['1', '2']
987         opnfv_vnf.vnf_tpl = {'public_ip_port_range': '98164810',
988                              'vnf_set': '(2,4,5)'}
989         opnfv_vnf.prv_que_handler = 0
990         result = opnfv_vnf.generate_vnf_data()
991         self.assertIsNotNone(result)
992         opnfv_vnf.lb_config = 'HW'
993         opnfv_vnf.mul = 0.1
994         result = opnfv_vnf.generate_vnf_data()
995         self.assertIsNotNone(result)
996         opnfv_vnf.lb_config = 'HW'
997         opnfv_vnf.mul = 0.1
998         opnfv_vnf.vnf_type = 'ACL'
999         result = opnfv_vnf.generate_vnf_data()
1000         self.assertIsNotNone(result)
1001
1002     def test_generate_config_data(self):
1003         topology_file = mock.Mock()
1004         config_tpl = mock.Mock()
1005         tmp_file = mock.Mock()
1006         vnfd_mock = VnfdHelper(self.VNFD_0)
1007         opnfv_vnf = samplevnf_helper.MultiPortConfig(
1008             topology_file, config_tpl, tmp_file, vnfd_mock)
1009         opnfv_vnf.socket = 0
1010         opnfv_vnf.start_core = 0
1011         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
1012         opnfv_vnf.port_pairs = [("xe0", "xe1")]
1013         opnfv_vnf.txrx_pipeline = ''
1014         opnfv_vnf.rules = ''
1015         opnfv_vnf.write_parser = mock.MagicMock()
1016         opnfv_vnf.read_parser = mock.MagicMock()
1017         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
1018         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
1019         opnfv_vnf.write_parser.set = mock.Mock()
1020         opnfv_vnf.write_parser.add_section = mock.Mock()
1021         opnfv_vnf.read_parser.items = mock.MagicMock()
1022         opnfv_vnf.pipeline_counter = 0
1023         opnfv_vnf.worker_config = '1t'
1024         opnfv_vnf.start_core = 0
1025         opnfv_vnf.lb_count = 1
1026         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
1027         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
1028         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
1029         opnfv_vnf.lb_index = 1
1030         opnfv_vnf.ports_len = 1
1031         opnfv_vnf.pktq_out = ['1', '2']
1032         opnfv_vnf.prv_que_handler = 0
1033         opnfv_vnf.init_write_parser_template = mock.Mock()
1034         opnfv_vnf.arpicmp_tpl = mock.MagicMock()
1035         opnfv_vnf.txrx_tpl = mock.MagicMock()
1036         opnfv_vnf.loadb_tpl = mock.MagicMock()
1037         opnfv_vnf.vnf_tpl = {'public_ip_port_range': '98164810 (1,65535)',
1038                              'vnf_set': "(2,4,5)"}
1039         opnfv_vnf.generate_vnf_data = mock.Mock(return_value={})
1040         opnfv_vnf.update_write_parser = mock.Mock()
1041         result = opnfv_vnf.generate_config_data()
1042         self.assertIsNone(result)
1043         opnfv_vnf.generate_final_txrx_data = mock.Mock()
1044         opnfv_vnf.update_write_parser = mock.Mock()
1045         result = opnfv_vnf.generate_config_data()
1046         self.assertIsNone(result)
1047         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
1048         opnfv_vnf.lb_index = 1
1049         opnfv_vnf.ports_len = 1
1050         opnfv_vnf.pktq_out = ['1', '2']
1051         opnfv_vnf.prv_que_handler = 0
1052         opnfv_vnf.init_write_parser_template = mock.Mock()
1053         opnfv_vnf.arpicmp_tpl = mock.MagicMock()
1054         opnfv_vnf.txrx_tpl = mock.MagicMock()
1055         opnfv_vnf.loadb_tpl = mock.MagicMock()
1056         opnfv_vnf.vnf_type = 'CGNAPT'
1057         opnfv_vnf.update_timer = mock.Mock()
1058         opnfv_vnf.port_pair_list = [("xe0", "xe1"), ("xe0", "xe2")]
1059         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
1060         opnfv_vnf.generate_arpicmp_data = mock.Mock()
1061         result = opnfv_vnf.generate_config_data()
1062         self.assertIsNone(result)
1063
1064     def test_init_eal(self):
1065         topology_file = mock.Mock()
1066         config_tpl = mock.Mock()
1067         tmp_file = mock.Mock()
1068         vnfd_mock = mock.MagicMock()
1069         opnfv_vnf = samplevnf_helper.MultiPortConfig(
1070             topology_file, config_tpl, tmp_file, vnfd_mock)
1071         opnfv_vnf.socket = 0
1072         opnfv_vnf.start_core = 0
1073         opnfv_vnf.port_pair_list = [("xe0", "xe1")]
1074         opnfv_vnf.port_pairs = [("xe0", "xe1")]
1075         opnfv_vnf.txrx_pipeline = ''
1076         opnfv_vnf.rules = ''
1077         opnfv_vnf.write_parser = mock.MagicMock()
1078         opnfv_vnf.read_parser = mock.MagicMock()
1079         opnfv_vnf.read_parser.sections = mock.Mock(return_value=['MASTER'])
1080         opnfv_vnf.read_parser.has_option = mock.Mock(return_value=[])
1081         opnfv_vnf.write_parser.set = mock.Mock()
1082         opnfv_vnf.write_parser.add_section = mock.Mock()
1083         opnfv_vnf.read_parser.items = mock.MagicMock()
1084         opnfv_vnf.pipeline_counter = 0
1085         opnfv_vnf.worker_config = '1t'
1086         opnfv_vnf.start_core = 0
1087         opnfv_vnf.lb_count = 1
1088         opnfv_vnf.vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
1089         opnfv_vnf.interfaces = opnfv_vnf.vnfd['vdu'][0]['external-interface']
1090         opnfv_vnf.lb_to_port_pair_mapping = [0, 1]
1091         opnfv_vnf.lb_index = 1
1092         opnfv_vnf.ports_len = 1
1093         opnfv_vnf.pktq_out = ['1', '2']
1094         opnfv_vnf.prv_que_handler = 0
1095         opnfv_vnf.init_write_parser_template = mock.Mock()
1096         opnfv_vnf.arpicmp_tpl = mock.MagicMock()
1097         opnfv_vnf.txrx_tpl = mock.MagicMock()
1098         opnfv_vnf.loadb_tpl = mock.MagicMock()
1099         opnfv_vnf.vnf_tpl = {'public_ip_port_range': '98164810 (1,65535)'}
1100         opnfv_vnf.generate_vnf_data = mock.Mock(return_value={})
1101         opnfv_vnf.update_write_parser = mock.Mock()
1102         opnfv_vnf.tmp_file = "/tmp/config"
1103         result = opnfv_vnf.init_eal()
1104         self.assertIsNone(result)