1 # Copyright (c) 2015 Intel Research and Development Ireland Ltd.
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
7 # http://www.apache.org/licenses/LICENSE-2.0
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.
17 from experimental_framework.constants import conf_file_sections as conf_file
20 from experimental_framework.packet_generators \
21 import dpdk_packet_generator as mut
24 def dummy_get_dpdk_pktgen_vars():
26 vars[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'pktgen_dir/'
27 vars[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program'
28 vars[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
29 vars[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memchannel'
33 def dummy_get_base_dir():
37 def dummy_dirname(dir):
38 if dir == 'pktgen_dir_test':
40 return 'test_directory'
43 class MockChangeVlan():
45 ret_val = [False, False]
48 def mock_change_vlan(pcap_dir=None, pcap_file=None, vlan=None):
49 if not pcap_file and not vlan:
50 return MockChangeVlan.ret_val
52 if pcap_dir == 'base_dir/experimental_framework/packet_generators/' \
54 pcap_file == 'pcap_file_1' and vlan == 'vlan0':
55 MockChangeVlan.ret_val[0] = True
56 if pcap_dir == 'base_dir/experimental_framework/packet_generators/' \
58 pcap_file == 'pcap_file_2' and vlan == 'vlan1':
59 MockChangeVlan.ret_val[1] = True
63 class TestDpdkPacketGenConstructor(unittest.TestCase):
71 def test_constructor(self):
72 obj = mut.DpdkPacketGenerator()
73 self.assertEqual(obj.command, '')
74 self.assertEqual(obj.directory, '')
75 self.assertEqual(obj.dpdk_interfaces, -1)
78 class TestDpdkPacketGenInitialization(unittest.TestCase):
81 self.mut = mut.DpdkPacketGenerator()
87 @mock.patch('os.path')
88 @mock.patch('experimental_framework.common.get_dpdk_pktgen_vars',
89 side_effect=dummy_get_dpdk_pktgen_vars)
90 @mock.patch('experimental_framework.common.get_base_dir',
91 side_effect=dummy_get_base_dir)
92 @mock.patch('experimental_framework.packet_generators.'
93 'dpdk_packet_generator.DpdkPacketGenerator._get_core_nics')
94 @mock.patch('experimental_framework.packet_generators.'
95 'dpdk_packet_generator.DpdkPacketGenerator.'
96 '_init_input_validation')
97 @mock.patch('experimental_framework.packet_generators.'
98 'dpdk_packet_generator.DpdkPacketGenerator._change_vlan')
99 def test_init_dpdk_pktgen_for_success(self, m_change_vlan,
100 mock_init_input_validation,
103 common_get_dpdk_vars,
106 Tests the initialization of the packet generator
108 mock_init_input_validation.return_value = None
109 mock_get_core_nics.return_value = "{corenics}"
110 mock_path.isfile.return_value = True
111 expected = 'pktgen_dir/program -c coremask -n memchannel ' \
112 '--proc-type auto --file-prefix pg -- -T -P -m ' \
113 '"{corenics}" -f base_dir/experimental_framework/' \
114 'packet_generators/dpdk_pktgen/lua_file ' \
115 '-s 0:base_dir/experimental_framework/packet_generators' \
116 '/pcap_files/pcap_file > /dev/null'
117 self.mut.init_dpdk_pktgen(dpdk_interfaces=1, lua_script='lua_file',
118 pcap_file_0='pcap_file', vlan_0='vlan0')
119 self.assertEqual(expected, self.mut.command)
120 m_change_vlan.assert_called_once_with('base_dir/'
121 'experimental_framework/'
122 'packet_generators/pcap_files/',
123 'pcap_file', 'vlan0')
125 @mock.patch('os.path')
126 @mock.patch('experimental_framework.common.get_dpdk_pktgen_vars',
127 side_effect=dummy_get_dpdk_pktgen_vars)
128 @mock.patch('experimental_framework.common.get_base_dir',
129 side_effect=dummy_get_base_dir)
130 @mock.patch('experimental_framework.packet_generators.'
131 'dpdk_packet_generator.DpdkPacketGenerator._get_core_nics')
132 @mock.patch('experimental_framework.packet_generators.'
133 'dpdk_packet_generator.DpdkPacketGenerator.'
134 '_init_input_validation')
135 @mock.patch('experimental_framework.packet_generators.'
136 'dpdk_packet_generator.DpdkPacketGenerator.'
137 '_change_vlan', side_effect=MockChangeVlan.mock_change_vlan)
138 def test_init_dpdk_pktgen_2_for_success(self, m_change_vlan,
139 mock_init_input_validation,
142 common_get_dpdk_vars, mock_path):
144 Tests the initialization of the packet generator
145 :param common_get_base_dir: mock obj
146 :param common_get_dpdk_vars: mock obj
147 :param mock_path: mock obj
150 mock_init_input_validation.return_value = None
151 mock_get_core_nics.return_value = "{corenics}"
152 mock_path.isfile.return_value = True
153 expected = 'pktgen_dir/program -c coremask -n memchannel ' \
154 '--proc-type auto --file-prefix pg -- -T -P -m ' \
155 '"{corenics}" -f base_dir/experimental_framework/' \
156 'packet_generators/dpdk_pktgen/lua_file ' \
157 '-s 0:base_dir/experimental_framework/packet_generators/' \
158 'pcap_files/pcap_file_1 ' \
159 '-s 1:base_dir/experimental_framework/packet_generators/' \
160 'pcap_files/pcap_file_2 ' \
162 self.mut.init_dpdk_pktgen(dpdk_interfaces=1, lua_script='lua_file',
163 pcap_file_0='pcap_file_1',
164 pcap_file_1='pcap_file_2', vlan_0='vlan0',
166 self.assertEqual(expected, self.mut.command)
167 self.assertEqual(MockChangeVlan.mock_change_vlan(), [True, True])
169 @mock.patch('os.path')
170 @mock.patch('experimental_framework.common.get_dpdk_pktgen_vars',
171 side_effect=dummy_get_dpdk_pktgen_vars)
172 @mock.patch('experimental_framework.common.get_base_dir',
173 side_effect=dummy_get_base_dir)
174 @mock.patch('experimental_framework.packet_generators.'
175 'dpdk_packet_generator.DpdkPacketGenerator._get_core_nics')
176 @mock.patch('experimental_framework.packet_generators.'
177 'dpdk_packet_generator.DpdkPacketGenerator.'
178 '_init_input_validation')
179 @mock.patch('experimental_framework.packet_generators.'
180 'dpdk_packet_generator.DpdkPacketGenerator._change_vlan')
181 def test_init_dpdk_pktgen_for_failure(self, m_change_vlan,
182 mock_init_input_validation,
185 common_get_dpdk_vars,
188 Tests the initialization of the packet generator
189 :param common_get_base_dir: mock obj
190 :param common_get_dpdk_vars: mock obj
191 :param mock_path: mock obj
194 mock_init_input_validation.return_value = None
195 mock_get_core_nics.return_value = "{corenics}"
196 self.assertRaises(ValueError, self.mut.init_dpdk_pktgen, 1,
197 'lua_file', 'pcap_file')
199 @mock.patch('os.path')
200 @mock.patch('experimental_framework.common.get_dpdk_pktgen_vars',
201 side_effect=dummy_get_dpdk_pktgen_vars)
202 @mock.patch('experimental_framework.common.get_base_dir',
203 side_effect=dummy_get_base_dir)
204 @mock.patch('experimental_framework.packet_generators.'
205 'dpdk_packet_generator.DpdkPacketGenerator.'
207 @mock.patch('experimental_framework.packet_generators.'
208 'dpdk_packet_generator.DpdkPacketGenerator.'
209 '_init_input_validation')
210 @mock.patch('experimental_framework.packet_generators.'
211 'dpdk_packet_generator.DpdkPacketGenerator.'
213 def test_init_dpdk_pktgen_for_failure_2(self, m_change_vlan,
214 mock_init_input_validation,
217 common_get_dpdk_vars,
220 Tests the initialization of the packet generator
221 :param common_get_base_dir: mock obj
222 :param common_get_dpdk_vars: mock obj
223 :param mock_path: mock obj
226 mock_init_input_validation.return_value = None
227 mock_get_core_nics.return_value = "{corenics}"
228 self.assertRaises(ValueError, self.mut.init_dpdk_pktgen, 2,
229 'lua_file_1', 'pcap_file_1', 'pcap_file_2',
233 class DpdkPacketGeneratorDummy(mut.DpdkPacketGenerator):
236 self.directory = 'self_directory'
237 self.dpdk_interfaces = 1
238 self.command = 'command'
241 chdir_test = [False, False]
244 def _chdir(directory=None):
246 return DpdkPacketGeneratorDummy.chdir_test
247 if directory == 'current_directory':
248 DpdkPacketGeneratorDummy.chdir_test[0] = True
250 if directory == 'self_directory':
251 DpdkPacketGeneratorDummy.chdir_test[1] = True
253 return DpdkPacketGeneratorDummy.chdir_test
256 class TestDpdkPacketGenSendTraffic(unittest.TestCase):
259 self.mut = DpdkPacketGeneratorDummy()
261 @mock.patch('os.system')
262 @mock.patch('os.path')
263 @mock.patch('os.path.dirname', side_effect=dummy_dirname)
264 @mock.patch('experimental_framework.common.get_dpdk_pktgen_vars',
265 side_effect=dummy_get_dpdk_pktgen_vars)
266 @mock.patch('experimental_framework.common.get_base_dir',
267 side_effect=dummy_get_base_dir)
268 @mock.patch('experimental_framework.common.run_command')
269 @mock.patch('experimental_framework.packet_generators.'
270 'dpdk_packet_generator.DpdkPacketGenerator._get_core_nics')
271 @mock.patch('experimental_framework.packet_generators.'
272 'dpdk_packet_generator.DpdkPacketGenerator.'
273 '_init_physical_nics')
274 @mock.patch('experimental_framework.packet_generators.'
275 'dpdk_packet_generator.DpdkPacketGenerator.'
276 '_finalize_physical_nics')
277 @mock.patch('experimental_framework.packet_generators.'
278 'dpdk_packet_generator.DpdkPacketGenerator._chdir',
279 side_effect=DpdkPacketGeneratorDummy._chdir)
280 def test_send_traffic_for_success(self, mock_ch_dir,
281 mock_finalize_physical_nics,
282 mock_init_physical_nics,
286 common_get_dpdk_vars,
291 Calls the packet generator and starts to send traffic
294 mock_get_core_nics.return_value = "{corenics}"
295 mock_os_path.realpath.return_value = 'pktgen_dir_test'
296 mock_os_path.dirname.return_value = 'current_directory'
297 self.mut.send_traffic()
299 self.assertEqual(DpdkPacketGeneratorDummy._chdir(), [True, True])
300 mock_init_physical_nics.\
301 assert_called_once_with(1, {'coremask': 'coremask',
302 'program_name': 'program',
303 'memory_channels': 'memchannel',
304 'pktgen_directory': 'pktgen_dir/'})
305 mock_finalize_physical_nics.\
306 assert_called_once_with(1, {'coremask': 'coremask',
307 'program_name': 'program',
308 'memory_channels': 'memchannel',
309 'pktgen_directory': 'pktgen_dir/'})
310 common_run_command.assert_called_once_with('command')
313 class MockRunCommand:
315 ret_val = [False, False, False, False, False, False]
316 ret_val_finalization = [False, False, False, False, False, False]
319 def mock_run_command(command=None):
320 if command == 'ifconfig interface_1 down':
321 MockRunCommand.ret_val[0] = True
322 if command == 'dpdk_directory/tools/dpdk_nic_bind.py --unbind 1:00.0':
323 MockRunCommand.ret_val[1] = True
324 if command == 'dpdk_directory/tools/dpdk_nic_bind.py ' \
325 '--bind=igb_uio 1:00.0':
326 MockRunCommand.ret_val[2] = True
327 if command == 'ifconfig interface_2 down':
328 MockRunCommand.ret_val[3] = True
329 if command == 'dpdk_directory/tools/dpdk_nic_bind.py ' \
331 MockRunCommand.ret_val[4] = True
332 if command == 'dpdk_directory/tools/dpdk_nic_bind.py ' \
333 '--bind=igb_uio 1:00.1':
334 MockRunCommand.ret_val[5] = True
336 return MockRunCommand.ret_val
339 def mock_run_command_finalization(command=None):
340 if command == 'dpdk_directory/tools/dpdk_nic_bind.py --unbind 1:00.0':
341 MockRunCommand.ret_val_finalization[0] = True
342 if command == 'dpdk_directory/tools/dpdk_nic_bind.py ' \
343 '--bind=ixgbe 1:00.0':
344 MockRunCommand.ret_val_finalization[1] = True
345 if command == 'ifconfig interface_1 up':
346 MockRunCommand.ret_val_finalization[2] = True
347 if command == 'dpdk_directory/tools/dpdk_nic_bind.py --unbind 1:00.1':
348 MockRunCommand.ret_val_finalization[3] = True
349 if command == 'dpdk_directory/tools/dpdk_nic_bind.py ' \
350 '--bind=ixgbe 1:00.1':
351 MockRunCommand.ret_val_finalization[4] = True
352 if command == 'ifconfig interface_2 up':
353 MockRunCommand.ret_val_finalization[5] = True
355 return MockRunCommand.ret_val_finalization
358 class TestDpdkPacketGenOthers(unittest.TestCase):
361 self.mut = mut.DpdkPacketGenerator()
366 @mock.patch('experimental_framework.packet_generators.'
367 'dpdk_packet_generator.DpdkPacketGenerator.'
368 '_cores_configuration')
369 def test__get_core_nics_for_failure(self, mock_cores_configuration):
370 mock_cores_configuration.return_value = None
371 self.assertRaises(ValueError, mut.DpdkPacketGenerator._get_core_nics,
374 @mock.patch('experimental_framework.packet_generators.'
375 'dpdk_packet_generator.DpdkPacketGenerator.'
376 '_cores_configuration')
377 def test__get_core_nics_one_nic_for_success(self,
378 mock_cores_configuration):
379 mock_cores_configuration.return_value = 'ret_val'
381 output = mut.DpdkPacketGenerator._get_core_nics(1, 'coremask')
382 self.assertEqual(expected, output)
383 mock_cores_configuration.assert_called_once_with('coremask', 1, 2, 0)
385 @mock.patch('experimental_framework.packet_generators.'
386 'dpdk_packet_generator.DpdkPacketGenerator.'
387 '_cores_configuration')
388 def test__get_core_nics_two_nics_for_success(self,
389 mock_cores_configuration):
390 mock_cores_configuration.return_value = 'ret_val'
392 output = mut.DpdkPacketGenerator._get_core_nics(2, 'coremask')
393 self.assertEqual(expected, output)
394 mock_cores_configuration.assert_called_once_with('coremask', 1, 2, 2)
396 @mock.patch('os.path.isfile')
397 def test__init_input_validation_for_success(self, mock_is_file):
398 mock_is_file.return_value = True
400 pcap_file_0 = 'pcap_file_0'
401 pcap_file_1 = 'pcap_file_1'
402 lua_script = 'lua_script'
403 pcap_directory = 'pcap_directory'
404 lua_directory = 'lua_directory'
407 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
408 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
409 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
410 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
412 self.assertEqual(mut.DpdkPacketGenerator._init_input_validation(
413 pcap_file_0, pcap_file_1,
414 lua_script, pcap_directory, lua_directory,
417 @mock.patch('os.path.isfile')
418 def test__init_input_validation_for_failure(self, mock_is_file):
419 mock_is_file.return_value = True
421 pcap_file_0 = 'pcap_file_0'
422 pcap_file_1 = 'pcap_file_1'
423 lua_script = 'lua_script'
424 pcap_directory = 'pcap_directory'
425 lua_directory = 'lua_directory'
428 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
429 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
430 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
431 # variables[common.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
433 self.assertRaises(ValueError,
434 mut.DpdkPacketGenerator.
435 _init_input_validation, pcap_file_0, pcap_file_1,
436 lua_script, pcap_directory, lua_directory, variables)
438 @mock.patch('os.path.isfile')
439 def test__init_input_validation_for_failure_2(self, mock_is_file):
440 mock_is_file.return_value = True
442 pcap_directory = None
443 pcap_file_0 = 'pcap_file_0'
444 pcap_file_1 = 'pcap_file_1'
445 lua_script = 'lua_script'
446 lua_directory = 'lua_directory'
449 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
450 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
451 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
452 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
454 self.assertRaises(ValueError,
455 mut.DpdkPacketGenerator.
456 _init_input_validation, pcap_file_0, pcap_file_1,
457 lua_script, pcap_directory, lua_directory, variables)
459 @mock.patch('os.path.isfile')
460 def test__init_input_validation_for_failure_3(self, mock_is_file):
461 mock_is_file.return_value = True
463 pcap_directory = 'directory'
465 pcap_file_1 = 'pcap_file_1'
466 lua_script = 'lua_script'
467 lua_directory = 'lua_directory'
470 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
471 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
472 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
473 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
475 self.assertRaises(ValueError,
476 mut.DpdkPacketGenerator.
477 _init_input_validation, pcap_file_0, pcap_file_1,
478 lua_script, pcap_directory, lua_directory, variables)
480 @mock.patch('os.path.isfile')
481 def test__init_input_validation_for_failure_4(self, mock_is_file):
482 mock_is_file.return_value = True
484 pcap_directory = 'directory'
485 pcap_file_0 = 'pcap_file_0'
487 lua_script = 'lua_script'
488 lua_directory = 'lua_directory'
491 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
492 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
493 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
494 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
496 self.assertRaises(ValueError,
497 mut.DpdkPacketGenerator.
498 _init_input_validation, pcap_file_0, pcap_file_1,
499 lua_script, pcap_directory, lua_directory, variables)
501 @mock.patch('os.path.isfile')
502 def test__init_input_validation_for_failure_5(self, mock_is_file):
503 mock_is_file.return_value = True
505 pcap_directory = 'directory'
506 pcap_file_0 = 'pcap_file_0'
507 pcap_file_1 = 'pcap_file_1'
509 lua_directory = 'lua_directory'
512 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
513 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
514 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
515 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
517 self.assertRaises(ValueError,
518 mut.DpdkPacketGenerator.
519 _init_input_validation, pcap_file_0, pcap_file_1,
520 lua_script, pcap_directory, lua_directory, variables)
522 @mock.patch('os.path.isfile', side_effect=[False])
523 def test__init_input_validation_for_failure_6(self, mock_is_file):
524 # mock_is_file.return_value = False
526 pcap_directory = 'directory'
527 pcap_file_0 = 'pcap_file_0'
528 pcap_file_1 = 'pcap_file_1'
529 lua_script = 'lua_script'
530 lua_directory = 'lua_directory'
533 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
534 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
535 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
536 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
538 self.assertRaises(ValueError,
539 mut.DpdkPacketGenerator.
540 _init_input_validation, pcap_file_0, pcap_file_1,
541 lua_script, pcap_directory, lua_directory, variables)
543 @mock.patch('os.path.isfile', side_effect=[True, False])
544 def test__init_input_validation_for_failure_7(self, mock_is_file):
545 pcap_directory = 'directory'
546 pcap_file_0 = 'pcap_file_0'
547 pcap_file_1 = 'pcap_file_1'
548 lua_script = 'lua_script'
549 lua_directory = 'lua_directory'
552 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
553 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
554 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
555 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
557 self.assertRaises(ValueError,
558 mut.DpdkPacketGenerator.
559 _init_input_validation, pcap_file_0, pcap_file_1,
560 lua_script, pcap_directory, lua_directory, variables)
562 @mock.patch('os.path.isfile', side_effect=[True, True, False])
563 def test__init_input_validation_for_failure_8(self, mock_is_file):
564 pcap_directory = 'directory'
565 pcap_file_0 = 'pcap_file_0'
566 pcap_file_1 = 'pcap_file_1'
567 lua_script = 'lua_script'
568 lua_directory = 'lua_directory'
571 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
572 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
573 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
574 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
576 self.assertRaises(ValueError,
577 mut.DpdkPacketGenerator.
578 _init_input_validation, pcap_file_0, pcap_file_1,
579 lua_script, pcap_directory, lua_directory, variables)
581 @mock.patch('os.chdir')
582 def test__chdir_for_success(self, mock_os_chdir):
583 mut.DpdkPacketGenerator._chdir('directory')
584 mock_os_chdir.assert_called_once_with('directory')
586 @mock.patch('experimental_framework.common.run_command',
587 side_effect=MockRunCommand.mock_run_command)
588 def test__init_physical_nics_for_success(self, mock_run_command):
592 dpdk_vars[conf_file.CFSP_DPDK_DPDK_DIRECTORY] = 'dpdk_directory/'
593 dpdk_vars[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'pktgen_directory/'
594 dpdk_vars[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
595 dpdk_vars[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
596 dpdk_vars[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
597 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_1] = '1:00.0'
598 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_2] = '1:00.1'
599 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_1] = 'interface_1'
600 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_2] = 'interface_2'
601 self.mut._init_physical_nics(dpdk_interfaces, dpdk_vars)
602 self.assertEqual(MockRunCommand.mock_run_command(),
603 [True, True, True, False, False, False])
605 @mock.patch('experimental_framework.common.run_command',
606 side_effect=MockRunCommand.mock_run_command)
607 def test__init_physical_nics_for_success_2(self, mock_run_command):
611 dpdk_vars[conf_file.CFSP_DPDK_DPDK_DIRECTORY] = 'dpdk_directory/'
612 dpdk_vars[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'pktgen_directory/'
613 dpdk_vars[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
614 dpdk_vars[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
615 dpdk_vars[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
616 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_1] = '1:00.0'
617 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_2] = '1:00.1'
618 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_1] = 'interface_1'
619 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_2] = 'interface_2'
620 self.mut._init_physical_nics(dpdk_interfaces, dpdk_vars)
621 self.assertEqual(MockRunCommand.mock_run_command(),
622 [True, True, True, True, True, True])
624 @mock.patch('experimental_framework.common.run_command')
625 def test__init_physical_nics_for_failure(self, mock_run_command):
628 self.assertRaises(ValueError, self.mut._init_physical_nics,
629 dpdk_interfaces, dpdk_vars)
631 @mock.patch('experimental_framework.common.run_command',
632 side_effect=MockRunCommand.mock_run_command_finalization)
633 def test__finalize_physical_nics_for_success(self, mock_run_command):
636 dpdk_vars[conf_file.CFSP_DPDK_DPDK_DIRECTORY] = 'dpdk_directory/'
637 dpdk_vars[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'pktgen_directory/'
638 dpdk_vars[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
639 dpdk_vars[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
640 dpdk_vars[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
641 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_1] = '1:00.0'
642 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_2] = '1:00.1'
643 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_1] = 'interface_1'
644 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_2] = 'interface_2'
645 self.mut._finalize_physical_nics(dpdk_interfaces, dpdk_vars)
646 self.assertEqual(MockRunCommand.mock_run_command_finalization(),
647 [True, True, True, False, False, False])
649 @mock.patch('experimental_framework.common.run_command',
650 side_effect=MockRunCommand.mock_run_command_finalization)
651 def test__finalize_physical_nics_for_success_2(self, mock_run_command):
654 dpdk_vars[conf_file.CFSP_DPDK_DPDK_DIRECTORY] = 'dpdk_directory/'
655 dpdk_vars[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'pktgen_directory/'
656 dpdk_vars[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
657 dpdk_vars[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
658 dpdk_vars[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
659 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_1] = '1:00.0'
660 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_2] = '1:00.1'
661 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_1] = 'interface_1'
662 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_2] = 'interface_2'
663 self.mut._finalize_physical_nics(dpdk_interfaces, dpdk_vars)
664 self.assertEqual(MockRunCommand.mock_run_command_finalization(),
665 [True, True, True, True, True, True])
667 def test__finalize_physical_nics_for_failure(self):
670 self.assertRaises(ValueError, self.mut._finalize_physical_nics,
671 dpdk_interfaces, dpdk_vars)
673 def test__cores_configuration_for_success(self):
675 expected = '[2:1].0,[4:3].1'
676 output = mut.DpdkPacketGenerator._cores_configuration(coremask,
678 self.assertEqual(expected, output)
680 def test__cores_configuration_for_success_2(self):
682 expected = '2.0,[4:3].1'
683 output = mut.DpdkPacketGenerator._cores_configuration(coremask,
685 self.assertEqual(expected, output)
687 def test__cores_configuration_for_success_3(self):
689 expected = '[3:2].0,4.1'
690 output = mut.DpdkPacketGenerator._cores_configuration(coremask,
692 self.assertEqual(expected, output)
694 def test__cores_configuration_for_failure(self):
696 self.assertRaises(ValueError,
697 mut.DpdkPacketGenerator._cores_configuration,
700 @mock.patch('experimental_framework.common.LOG')
701 @mock.patch('experimental_framework.common.run_command')
702 def test__change_vlan_for_success(self, mock_run_command, mock_log):
703 mut.DpdkPacketGenerator._change_vlan('/directory/', 'pcap_file', '10')
704 expected_param = '/directory/vlan_tag.sh /directory/pcap_file 10'
705 mock_run_command.assert_called_once_with(expected_param)