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.
15 from __future__ import absolute_import
18 from experimental_framework.constants import conf_file_sections as conf_file
21 from experimental_framework.packet_generators \
22 import dpdk_packet_generator as mut
25 def dummy_get_dpdk_pktgen_vars():
27 vars[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'pktgen_dir/'
28 vars[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program'
29 vars[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
30 vars[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memchannel'
34 def dummy_get_base_dir():
38 def dummy_dirname(dir):
39 if dir == 'pktgen_dir_test':
41 return 'test_directory'
44 class MockChangeVlan():
46 ret_val = [False, False]
49 def mock_change_vlan(pcap_dir=None, pcap_file=None, vlan=None):
50 if not pcap_file and not vlan:
51 return MockChangeVlan.ret_val
53 if pcap_dir == 'base_dir/experimental_framework/packet_generators/' \
55 pcap_file == 'pcap_file_1' and vlan == 'vlan0':
56 MockChangeVlan.ret_val[0] = True
57 if pcap_dir == 'base_dir/experimental_framework/packet_generators/' \
59 pcap_file == 'pcap_file_2' and vlan == 'vlan1':
60 MockChangeVlan.ret_val[1] = True
64 class TestDpdkPacketGenConstructor(unittest.TestCase):
72 def test_constructor(self):
73 obj = mut.DpdkPacketGenerator()
74 self.assertEqual(obj.command, '')
75 self.assertEqual(obj.directory, '')
76 self.assertEqual(obj.dpdk_interfaces, -1)
79 class TestDpdkPacketGenInitialization(unittest.TestCase):
82 self.mut = mut.DpdkPacketGenerator()
88 @mock.patch('os.path')
89 @mock.patch('experimental_framework.common.get_dpdk_pktgen_vars',
90 side_effect=dummy_get_dpdk_pktgen_vars)
91 @mock.patch('experimental_framework.common.get_base_dir',
92 side_effect=dummy_get_base_dir)
93 @mock.patch('experimental_framework.packet_generators.'
94 'dpdk_packet_generator.DpdkPacketGenerator._get_core_nics')
95 @mock.patch('experimental_framework.packet_generators.'
96 'dpdk_packet_generator.DpdkPacketGenerator.'
97 '_init_input_validation')
98 @mock.patch('experimental_framework.packet_generators.'
99 'dpdk_packet_generator.DpdkPacketGenerator._change_vlan')
100 def test_init_dpdk_pktgen_for_success(self, m_change_vlan,
101 mock_init_input_validation,
104 common_get_dpdk_vars,
107 Tests the initialization of the packet generator
109 mock_init_input_validation.return_value = None
110 mock_get_core_nics.return_value = "{corenics}"
111 mock_path.isfile.return_value = True
112 expected = 'sudo pktgen_dir/program -c coremask -n memchannel ' \
113 '--proc-type auto --file-prefix pg -- -T -P -m ' \
114 '"{corenics}" -f base_dir/experimental_framework/' \
115 'packet_generators/dpdk_pktgen/lua_file ' \
116 '-s 0:base_dir/experimental_framework/packet_generators' \
117 '/pcap_files/pcap_file > /dev/null'
118 self.mut.init_dpdk_pktgen(dpdk_interfaces=1, lua_script='lua_file',
119 pcap_file_0='pcap_file', vlan_0='vlan0')
120 self.assertEqual(expected, self.mut.command)
121 m_change_vlan.assert_called_once_with('base_dir/'
122 'experimental_framework/'
123 'packet_generators/pcap_files/',
124 'pcap_file', 'vlan0')
126 @mock.patch('os.path')
127 @mock.patch('experimental_framework.common.get_dpdk_pktgen_vars',
128 side_effect=dummy_get_dpdk_pktgen_vars)
129 @mock.patch('experimental_framework.common.get_base_dir',
130 side_effect=dummy_get_base_dir)
131 @mock.patch('experimental_framework.packet_generators.'
132 'dpdk_packet_generator.DpdkPacketGenerator._get_core_nics')
133 @mock.patch('experimental_framework.packet_generators.'
134 'dpdk_packet_generator.DpdkPacketGenerator.'
135 '_init_input_validation')
136 @mock.patch('experimental_framework.packet_generators.'
137 'dpdk_packet_generator.DpdkPacketGenerator.'
138 '_change_vlan', side_effect=MockChangeVlan.mock_change_vlan)
139 def test_init_dpdk_pktgen_2_for_success(self, m_change_vlan,
140 mock_init_input_validation,
143 common_get_dpdk_vars, mock_path):
145 Tests the initialization of the packet generator
146 :param common_get_base_dir: mock obj
147 :param common_get_dpdk_vars: mock obj
148 :param mock_path: mock obj
151 mock_init_input_validation.return_value = None
152 mock_get_core_nics.return_value = "{corenics}"
153 mock_path.isfile.return_value = True
154 expected = 'sudo pktgen_dir/program -c coremask -n memchannel ' \
155 '--proc-type auto --file-prefix pg -- -T -P -m ' \
156 '"{corenics}" -f base_dir/experimental_framework/' \
157 'packet_generators/dpdk_pktgen/lua_file ' \
158 '-s 0:base_dir/experimental_framework/packet_generators/' \
159 'pcap_files/pcap_file_1 ' \
160 '-s 1:base_dir/experimental_framework/packet_generators/' \
161 'pcap_files/pcap_file_2 ' \
163 self.mut.init_dpdk_pktgen(dpdk_interfaces=1, lua_script='lua_file',
164 pcap_file_0='pcap_file_1',
165 pcap_file_1='pcap_file_2', vlan_0='vlan0',
167 self.assertEqual(expected, self.mut.command)
168 self.assertEqual(MockChangeVlan.mock_change_vlan(), [True, True])
170 @mock.patch('os.path')
171 @mock.patch('experimental_framework.common.get_dpdk_pktgen_vars',
172 side_effect=dummy_get_dpdk_pktgen_vars)
173 @mock.patch('experimental_framework.common.get_base_dir',
174 side_effect=dummy_get_base_dir)
175 @mock.patch('experimental_framework.packet_generators.'
176 'dpdk_packet_generator.DpdkPacketGenerator._get_core_nics')
177 @mock.patch('experimental_framework.packet_generators.'
178 'dpdk_packet_generator.DpdkPacketGenerator.'
179 '_init_input_validation')
180 @mock.patch('experimental_framework.packet_generators.'
181 'dpdk_packet_generator.DpdkPacketGenerator._change_vlan')
182 def test_init_dpdk_pktgen_for_failure(self, m_change_vlan,
183 mock_init_input_validation,
186 common_get_dpdk_vars,
189 Tests the initialization of the packet generator
190 :param common_get_base_dir: mock obj
191 :param common_get_dpdk_vars: mock obj
192 :param mock_path: mock obj
195 mock_init_input_validation.return_value = None
196 mock_get_core_nics.return_value = "{corenics}"
197 self.assertRaises(ValueError, self.mut.init_dpdk_pktgen, 1,
198 'lua_file', 'pcap_file')
200 @mock.patch('os.path')
201 @mock.patch('experimental_framework.common.get_dpdk_pktgen_vars',
202 side_effect=dummy_get_dpdk_pktgen_vars)
203 @mock.patch('experimental_framework.common.get_base_dir',
204 side_effect=dummy_get_base_dir)
205 @mock.patch('experimental_framework.packet_generators.'
206 'dpdk_packet_generator.DpdkPacketGenerator.'
208 @mock.patch('experimental_framework.packet_generators.'
209 'dpdk_packet_generator.DpdkPacketGenerator.'
210 '_init_input_validation')
211 @mock.patch('experimental_framework.packet_generators.'
212 'dpdk_packet_generator.DpdkPacketGenerator.'
214 def test_init_dpdk_pktgen_for_failure_2(self, m_change_vlan,
215 mock_init_input_validation,
218 common_get_dpdk_vars,
221 Tests the initialization of the packet generator
222 :param common_get_base_dir: mock obj
223 :param common_get_dpdk_vars: mock obj
224 :param mock_path: mock obj
227 mock_init_input_validation.return_value = None
228 mock_get_core_nics.return_value = "{corenics}"
229 self.assertRaises(ValueError, self.mut.init_dpdk_pktgen, 2,
230 'lua_file_1', 'pcap_file_1', 'pcap_file_2',
234 class DpdkPacketGeneratorDummy(mut.DpdkPacketGenerator):
237 self.directory = 'self_directory'
238 self.dpdk_interfaces = 1
239 self.command = 'command'
242 chdir_test = [False, False]
245 def _chdir(directory=None):
247 return DpdkPacketGeneratorDummy.chdir_test
248 if directory == 'current_directory':
249 DpdkPacketGeneratorDummy.chdir_test[0] = True
251 if directory == 'self_directory':
252 DpdkPacketGeneratorDummy.chdir_test[1] = True
254 return DpdkPacketGeneratorDummy.chdir_test
257 class TestDpdkPacketGenSendTraffic(unittest.TestCase):
260 self.mut = DpdkPacketGeneratorDummy()
262 @mock.patch('os.system')
263 @mock.patch('os.path')
264 @mock.patch('os.path.dirname', side_effect=dummy_dirname)
265 @mock.patch('experimental_framework.common.get_dpdk_pktgen_vars',
266 side_effect=dummy_get_dpdk_pktgen_vars)
267 @mock.patch('experimental_framework.common.get_base_dir',
268 side_effect=dummy_get_base_dir)
269 @mock.patch('experimental_framework.common.run_command')
270 @mock.patch('experimental_framework.packet_generators.'
271 'dpdk_packet_generator.DpdkPacketGenerator._get_core_nics')
272 @mock.patch('experimental_framework.packet_generators.'
273 'dpdk_packet_generator.DpdkPacketGenerator.'
274 '_init_physical_nics')
275 @mock.patch('experimental_framework.packet_generators.'
276 'dpdk_packet_generator.DpdkPacketGenerator.'
277 '_finalize_physical_nics')
278 @mock.patch('experimental_framework.packet_generators.'
279 'dpdk_packet_generator.DpdkPacketGenerator._chdir',
280 side_effect=DpdkPacketGeneratorDummy._chdir)
281 def test_send_traffic_for_success(self, mock_ch_dir,
282 mock_finalize_physical_nics,
283 mock_init_physical_nics,
287 common_get_dpdk_vars,
292 Calls the packet generator and starts to send traffic
295 mock_get_core_nics.return_value = "{corenics}"
296 mock_os_path.realpath.return_value = 'pktgen_dir_test'
297 mock_os_path.dirname.return_value = 'current_directory'
298 self.mut.send_traffic()
300 self.assertEqual(DpdkPacketGeneratorDummy._chdir(), [True, True])
301 mock_init_physical_nics.\
302 assert_called_once_with(1, {'coremask': 'coremask',
303 'program_name': 'program',
304 'memory_channels': 'memchannel',
305 'pktgen_directory': 'pktgen_dir/'})
306 mock_finalize_physical_nics.\
307 assert_called_once_with(1, {'coremask': 'coremask',
308 'program_name': 'program',
309 'memory_channels': 'memchannel',
310 'pktgen_directory': 'pktgen_dir/'})
311 common_run_command.assert_called_once_with('command')
314 class MockRunCommand:
316 ret_val = [False, False, False, False, False, False]
317 ret_val_finalization = [False, False, False, False, False, False]
320 def mock_run_command(command=None):
321 if command == 'sudo ifconfig interface_1 down':
322 MockRunCommand.ret_val[0] = True
323 if command == 'sudo dpdk_directory/tools/dpdk_nic_bind.py ' \
325 MockRunCommand.ret_val[1] = True
326 if command == 'sudo dpdk_directory/tools/dpdk_nic_bind.py ' \
327 '--bind=igb_uio 1:00.0':
328 MockRunCommand.ret_val[2] = True
329 if command == 'sudo ifconfig interface_2 down':
330 MockRunCommand.ret_val[3] = True
331 if command == 'sudo dpdk_directory/tools/dpdk_nic_bind.py ' \
333 MockRunCommand.ret_val[4] = True
334 if command == 'sudo dpdk_directory/tools/dpdk_nic_bind.py ' \
335 '--bind=igb_uio 1:00.1':
336 MockRunCommand.ret_val[5] = True
338 return MockRunCommand.ret_val
341 def mock_run_command_finalization(command=None):
342 if command == 'sudo dpdk_directory/tools/dpdk_nic_bind.py ' \
344 MockRunCommand.ret_val_finalization[0] = True
345 if command == 'sudo dpdk_directory/tools/dpdk_nic_bind.py ' \
346 '--bind=ixgbe 1:00.0':
347 MockRunCommand.ret_val_finalization[1] = True
348 if command == 'sudo ifconfig interface_1 up':
349 MockRunCommand.ret_val_finalization[2] = True
350 if command == 'sudo dpdk_directory/tools/dpdk_nic_bind.py ' \
352 MockRunCommand.ret_val_finalization[3] = True
353 if command == 'sudo dpdk_directory/tools/dpdk_nic_bind.py ' \
354 '--bind=ixgbe 1:00.1':
355 MockRunCommand.ret_val_finalization[4] = True
356 if command == 'sudo ifconfig interface_2 up':
357 MockRunCommand.ret_val_finalization[5] = True
359 return MockRunCommand.ret_val_finalization
362 class TestDpdkPacketGenOthers(unittest.TestCase):
365 self.mut = mut.DpdkPacketGenerator()
370 @mock.patch('experimental_framework.packet_generators.'
371 'dpdk_packet_generator.DpdkPacketGenerator.'
372 '_cores_configuration')
373 def test__get_core_nics_for_failure(self, mock_cores_configuration):
374 mock_cores_configuration.return_value = None
375 self.assertRaises(ValueError, mut.DpdkPacketGenerator._get_core_nics,
378 @mock.patch('experimental_framework.packet_generators.'
379 'dpdk_packet_generator.DpdkPacketGenerator.'
380 '_cores_configuration')
381 def test__get_core_nics_one_nic_for_success(self,
382 mock_cores_configuration):
383 mock_cores_configuration.return_value = 'ret_val'
385 output = mut.DpdkPacketGenerator._get_core_nics(1, 'coremask')
386 self.assertEqual(expected, output)
387 mock_cores_configuration.assert_called_once_with('coremask', 1, 2, 0)
389 @mock.patch('experimental_framework.packet_generators.'
390 'dpdk_packet_generator.DpdkPacketGenerator.'
391 '_cores_configuration')
392 def test__get_core_nics_two_nics_for_success(self,
393 mock_cores_configuration):
394 mock_cores_configuration.return_value = 'ret_val'
396 output = mut.DpdkPacketGenerator._get_core_nics(2, 'coremask')
397 self.assertEqual(expected, output)
398 mock_cores_configuration.assert_called_once_with('coremask', 1, 2, 2)
400 @mock.patch('os.path.isfile')
401 def test__init_input_validation_for_success(self, mock_is_file):
402 mock_is_file.return_value = True
404 pcap_file_0 = 'pcap_file_0'
405 pcap_file_1 = 'pcap_file_1'
406 lua_script = 'lua_script'
407 pcap_directory = 'pcap_directory'
408 lua_directory = 'lua_directory'
411 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
412 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
413 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
414 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
416 self.assertEqual(mut.DpdkPacketGenerator._init_input_validation(
417 pcap_file_0, pcap_file_1,
418 lua_script, pcap_directory, lua_directory,
421 @mock.patch('os.path.isfile')
422 def test__init_input_validation_for_failure(self, mock_is_file):
423 mock_is_file.return_value = True
425 pcap_file_0 = 'pcap_file_0'
426 pcap_file_1 = 'pcap_file_1'
427 lua_script = 'lua_script'
428 pcap_directory = 'pcap_directory'
429 lua_directory = 'lua_directory'
432 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
433 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
434 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
435 # variables[common.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
437 self.assertRaises(ValueError,
438 mut.DpdkPacketGenerator.
439 _init_input_validation, pcap_file_0, pcap_file_1,
440 lua_script, pcap_directory, lua_directory, variables)
442 @mock.patch('os.path.isfile')
443 def test__init_input_validation_for_failure_2(self, mock_is_file):
444 mock_is_file.return_value = True
446 pcap_directory = None
447 pcap_file_0 = 'pcap_file_0'
448 pcap_file_1 = 'pcap_file_1'
449 lua_script = 'lua_script'
450 lua_directory = 'lua_directory'
453 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
454 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
455 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
456 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
458 self.assertRaises(ValueError,
459 mut.DpdkPacketGenerator.
460 _init_input_validation, pcap_file_0, pcap_file_1,
461 lua_script, pcap_directory, lua_directory, variables)
463 @mock.patch('os.path.isfile')
464 def test__init_input_validation_for_failure_3(self, mock_is_file):
465 mock_is_file.return_value = True
467 pcap_directory = 'directory'
469 pcap_file_1 = 'pcap_file_1'
470 lua_script = 'lua_script'
471 lua_directory = 'lua_directory'
474 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
475 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
476 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
477 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
479 self.assertRaises(ValueError,
480 mut.DpdkPacketGenerator.
481 _init_input_validation, pcap_file_0, pcap_file_1,
482 lua_script, pcap_directory, lua_directory, variables)
484 @mock.patch('os.path.isfile')
485 def test__init_input_validation_for_failure_4(self, mock_is_file):
486 mock_is_file.return_value = True
488 pcap_directory = 'directory'
489 pcap_file_0 = 'pcap_file_0'
491 lua_script = 'lua_script'
492 lua_directory = 'lua_directory'
495 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
496 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
497 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
498 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
500 self.assertRaises(ValueError,
501 mut.DpdkPacketGenerator.
502 _init_input_validation, pcap_file_0, pcap_file_1,
503 lua_script, pcap_directory, lua_directory, variables)
505 @mock.patch('os.path.isfile')
506 def test__init_input_validation_for_failure_5(self, mock_is_file):
507 mock_is_file.return_value = True
509 pcap_directory = 'directory'
510 pcap_file_0 = 'pcap_file_0'
511 pcap_file_1 = 'pcap_file_1'
513 lua_directory = 'lua_directory'
516 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
517 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
518 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
519 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
521 self.assertRaises(ValueError,
522 mut.DpdkPacketGenerator.
523 _init_input_validation, pcap_file_0, pcap_file_1,
524 lua_script, pcap_directory, lua_directory, variables)
526 @mock.patch('os.path.isfile', side_effect=[False])
527 def test__init_input_validation_for_failure_6(self, mock_is_file):
528 # mock_is_file.return_value = False
530 pcap_directory = 'directory'
531 pcap_file_0 = 'pcap_file_0'
532 pcap_file_1 = 'pcap_file_1'
533 lua_script = 'lua_script'
534 lua_directory = 'lua_directory'
537 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
538 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
539 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
540 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
542 self.assertRaises(ValueError,
543 mut.DpdkPacketGenerator.
544 _init_input_validation, pcap_file_0, pcap_file_1,
545 lua_script, pcap_directory, lua_directory, variables)
547 @mock.patch('os.path.isfile', side_effect=[True, False])
548 def test__init_input_validation_for_failure_7(self, mock_is_file):
549 pcap_directory = 'directory'
550 pcap_file_0 = 'pcap_file_0'
551 pcap_file_1 = 'pcap_file_1'
552 lua_script = 'lua_script'
553 lua_directory = 'lua_directory'
556 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
557 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
558 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
559 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
561 self.assertRaises(ValueError,
562 mut.DpdkPacketGenerator.
563 _init_input_validation, pcap_file_0, pcap_file_1,
564 lua_script, pcap_directory, lua_directory, variables)
566 @mock.patch('os.path.isfile', side_effect=[True, True, False])
567 def test__init_input_validation_for_failure_8(self, mock_is_file):
568 pcap_directory = 'directory'
569 pcap_file_0 = 'pcap_file_0'
570 pcap_file_1 = 'pcap_file_1'
571 lua_script = 'lua_script'
572 lua_directory = 'lua_directory'
575 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
576 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
577 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
578 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
580 self.assertRaises(ValueError,
581 mut.DpdkPacketGenerator.
582 _init_input_validation, pcap_file_0, pcap_file_1,
583 lua_script, pcap_directory, lua_directory, variables)
585 @mock.patch('os.chdir')
586 def test__chdir_for_success(self, mock_os_chdir):
587 mut.DpdkPacketGenerator._chdir('directory')
588 mock_os_chdir.assert_called_once_with('directory')
590 @mock.patch('experimental_framework.common.run_command',
591 side_effect=MockRunCommand.mock_run_command)
592 def test__init_physical_nics_for_success(self, mock_run_command):
596 dpdk_vars[conf_file.CFSP_DPDK_DPDK_DIRECTORY] = 'dpdk_directory/'
597 dpdk_vars[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'pktgen_directory/'
598 dpdk_vars[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
599 dpdk_vars[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
600 dpdk_vars[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
601 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_1] = '1:00.0'
602 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_2] = '1:00.1'
603 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_1] = 'interface_1'
604 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_2] = 'interface_2'
605 self.mut._init_physical_nics(dpdk_interfaces, dpdk_vars)
606 self.assertEqual(MockRunCommand.mock_run_command(),
607 [True, True, True, False, False, False])
609 @mock.patch('experimental_framework.common.run_command',
610 side_effect=MockRunCommand.mock_run_command)
611 def test__init_physical_nics_for_success_2(self, mock_run_command):
615 dpdk_vars[conf_file.CFSP_DPDK_DPDK_DIRECTORY] = 'dpdk_directory/'
616 dpdk_vars[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'pktgen_directory/'
617 dpdk_vars[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
618 dpdk_vars[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
619 dpdk_vars[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
620 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_1] = '1:00.0'
621 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_2] = '1:00.1'
622 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_1] = 'interface_1'
623 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_2] = 'interface_2'
624 self.mut._init_physical_nics(dpdk_interfaces, dpdk_vars)
625 self.assertEqual(MockRunCommand.mock_run_command(),
626 [True, True, True, True, True, True])
628 @mock.patch('experimental_framework.common.run_command')
629 def test__init_physical_nics_for_failure(self, mock_run_command):
632 self.assertRaises(ValueError, self.mut._init_physical_nics,
633 dpdk_interfaces, dpdk_vars)
635 @mock.patch('experimental_framework.common.run_command',
636 side_effect=MockRunCommand.mock_run_command_finalization)
637 def test__finalize_physical_nics_for_success(self, mock_run_command):
640 dpdk_vars[conf_file.CFSP_DPDK_DPDK_DIRECTORY] = 'dpdk_directory/'
641 dpdk_vars[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'pktgen_directory/'
642 dpdk_vars[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
643 dpdk_vars[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
644 dpdk_vars[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
645 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_1] = '1:00.0'
646 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_2] = '1:00.1'
647 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_1] = 'interface_1'
648 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_2] = 'interface_2'
649 self.mut._finalize_physical_nics(dpdk_interfaces, dpdk_vars)
650 self.assertEqual(MockRunCommand.mock_run_command_finalization(),
651 [True, True, True, False, False, False])
653 @mock.patch('experimental_framework.common.run_command',
654 side_effect=MockRunCommand.mock_run_command_finalization)
655 def test__finalize_physical_nics_for_success_2(self, mock_run_command):
658 dpdk_vars[conf_file.CFSP_DPDK_DPDK_DIRECTORY] = 'dpdk_directory/'
659 dpdk_vars[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'pktgen_directory/'
660 dpdk_vars[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
661 dpdk_vars[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
662 dpdk_vars[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
663 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_1] = '1:00.0'
664 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_2] = '1:00.1'
665 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_1] = 'interface_1'
666 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_2] = 'interface_2'
667 self.mut._finalize_physical_nics(dpdk_interfaces, dpdk_vars)
668 self.assertEqual(MockRunCommand.mock_run_command_finalization(),
669 [True, True, True, True, True, True])
671 def test__finalize_physical_nics_for_failure(self):
674 self.assertRaises(ValueError, self.mut._finalize_physical_nics,
675 dpdk_interfaces, dpdk_vars)
677 def test__cores_configuration_for_success(self):
679 expected = '[2:1].0,[4:3].1'
680 output = mut.DpdkPacketGenerator._cores_configuration(coremask,
682 self.assertEqual(expected, output)
684 def test__cores_configuration_for_success_2(self):
686 expected = '2.0,[4:3].1'
687 output = mut.DpdkPacketGenerator._cores_configuration(coremask,
689 self.assertEqual(expected, output)
691 def test__cores_configuration_for_success_3(self):
693 expected = '[3:2].0,4.1'
694 output = mut.DpdkPacketGenerator._cores_configuration(coremask,
696 self.assertEqual(expected, output)
698 def test__cores_configuration_for_failure(self):
700 self.assertRaises(ValueError,
701 mut.DpdkPacketGenerator._cores_configuration,
704 @mock.patch('experimental_framework.common.LOG')
705 @mock.patch('experimental_framework.common.run_command')
706 def test__change_vlan_for_success(self, mock_run_command, mock_log):
707 mut.DpdkPacketGenerator._change_vlan('/directory/', 'pcap_file', '10')
708 expected_param = '/directory/vlan_tag.sh /directory/pcap_file 10'
709 mock_run_command.assert_called_with(expected_param)