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 = 'sudo 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 = 'sudo 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 == 'sudo ifconfig interface_1 down':
321 MockRunCommand.ret_val[0] = True
322 if command == 'sudo dpdk_directory/tools/dpdk_nic_bind.py ' \
324 MockRunCommand.ret_val[1] = True
325 if command == 'sudo dpdk_directory/tools/dpdk_nic_bind.py ' \
326 '--bind=igb_uio 1:00.0':
327 MockRunCommand.ret_val[2] = True
328 if command == 'sudo ifconfig interface_2 down':
329 MockRunCommand.ret_val[3] = True
330 if command == 'sudo dpdk_directory/tools/dpdk_nic_bind.py ' \
332 MockRunCommand.ret_val[4] = True
333 if command == 'sudo dpdk_directory/tools/dpdk_nic_bind.py ' \
334 '--bind=igb_uio 1:00.1':
335 MockRunCommand.ret_val[5] = True
337 return MockRunCommand.ret_val
340 def mock_run_command_finalization(command=None):
341 if command == 'sudo dpdk_directory/tools/dpdk_nic_bind.py ' \
343 MockRunCommand.ret_val_finalization[0] = True
344 if command == 'sudo dpdk_directory/tools/dpdk_nic_bind.py ' \
345 '--bind=ixgbe 1:00.0':
346 MockRunCommand.ret_val_finalization[1] = True
347 if command == 'sudo ifconfig interface_1 up':
348 MockRunCommand.ret_val_finalization[2] = True
349 if command == 'sudo dpdk_directory/tools/dpdk_nic_bind.py ' \
351 MockRunCommand.ret_val_finalization[3] = True
352 if command == 'sudo dpdk_directory/tools/dpdk_nic_bind.py ' \
353 '--bind=ixgbe 1:00.1':
354 MockRunCommand.ret_val_finalization[4] = True
355 if command == 'sudo ifconfig interface_2 up':
356 MockRunCommand.ret_val_finalization[5] = True
358 return MockRunCommand.ret_val_finalization
361 class TestDpdkPacketGenOthers(unittest.TestCase):
364 self.mut = mut.DpdkPacketGenerator()
369 @mock.patch('experimental_framework.packet_generators.'
370 'dpdk_packet_generator.DpdkPacketGenerator.'
371 '_cores_configuration')
372 def test__get_core_nics_for_failure(self, mock_cores_configuration):
373 mock_cores_configuration.return_value = None
374 self.assertRaises(ValueError, mut.DpdkPacketGenerator._get_core_nics,
377 @mock.patch('experimental_framework.packet_generators.'
378 'dpdk_packet_generator.DpdkPacketGenerator.'
379 '_cores_configuration')
380 def test__get_core_nics_one_nic_for_success(self,
381 mock_cores_configuration):
382 mock_cores_configuration.return_value = 'ret_val'
384 output = mut.DpdkPacketGenerator._get_core_nics(1, 'coremask')
385 self.assertEqual(expected, output)
386 mock_cores_configuration.assert_called_once_with('coremask', 1, 2, 0)
388 @mock.patch('experimental_framework.packet_generators.'
389 'dpdk_packet_generator.DpdkPacketGenerator.'
390 '_cores_configuration')
391 def test__get_core_nics_two_nics_for_success(self,
392 mock_cores_configuration):
393 mock_cores_configuration.return_value = 'ret_val'
395 output = mut.DpdkPacketGenerator._get_core_nics(2, 'coremask')
396 self.assertEqual(expected, output)
397 mock_cores_configuration.assert_called_once_with('coremask', 1, 2, 2)
399 @mock.patch('os.path.isfile')
400 def test__init_input_validation_for_success(self, mock_is_file):
401 mock_is_file.return_value = True
403 pcap_file_0 = 'pcap_file_0'
404 pcap_file_1 = 'pcap_file_1'
405 lua_script = 'lua_script'
406 pcap_directory = 'pcap_directory'
407 lua_directory = 'lua_directory'
410 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
411 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
412 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
413 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
415 self.assertEqual(mut.DpdkPacketGenerator._init_input_validation(
416 pcap_file_0, pcap_file_1,
417 lua_script, pcap_directory, lua_directory,
420 @mock.patch('os.path.isfile')
421 def test__init_input_validation_for_failure(self, mock_is_file):
422 mock_is_file.return_value = True
424 pcap_file_0 = 'pcap_file_0'
425 pcap_file_1 = 'pcap_file_1'
426 lua_script = 'lua_script'
427 pcap_directory = 'pcap_directory'
428 lua_directory = 'lua_directory'
431 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
432 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
433 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
434 # variables[common.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
436 self.assertRaises(ValueError,
437 mut.DpdkPacketGenerator.
438 _init_input_validation, pcap_file_0, pcap_file_1,
439 lua_script, pcap_directory, lua_directory, variables)
441 @mock.patch('os.path.isfile')
442 def test__init_input_validation_for_failure_2(self, mock_is_file):
443 mock_is_file.return_value = True
445 pcap_directory = None
446 pcap_file_0 = 'pcap_file_0'
447 pcap_file_1 = 'pcap_file_1'
448 lua_script = 'lua_script'
449 lua_directory = 'lua_directory'
452 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
453 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
454 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
455 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
457 self.assertRaises(ValueError,
458 mut.DpdkPacketGenerator.
459 _init_input_validation, pcap_file_0, pcap_file_1,
460 lua_script, pcap_directory, lua_directory, variables)
462 @mock.patch('os.path.isfile')
463 def test__init_input_validation_for_failure_3(self, mock_is_file):
464 mock_is_file.return_value = True
466 pcap_directory = 'directory'
468 pcap_file_1 = 'pcap_file_1'
469 lua_script = 'lua_script'
470 lua_directory = 'lua_directory'
473 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
474 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
475 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
476 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
478 self.assertRaises(ValueError,
479 mut.DpdkPacketGenerator.
480 _init_input_validation, pcap_file_0, pcap_file_1,
481 lua_script, pcap_directory, lua_directory, variables)
483 @mock.patch('os.path.isfile')
484 def test__init_input_validation_for_failure_4(self, mock_is_file):
485 mock_is_file.return_value = True
487 pcap_directory = 'directory'
488 pcap_file_0 = 'pcap_file_0'
490 lua_script = 'lua_script'
491 lua_directory = 'lua_directory'
494 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
495 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
496 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
497 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
499 self.assertRaises(ValueError,
500 mut.DpdkPacketGenerator.
501 _init_input_validation, pcap_file_0, pcap_file_1,
502 lua_script, pcap_directory, lua_directory, variables)
504 @mock.patch('os.path.isfile')
505 def test__init_input_validation_for_failure_5(self, mock_is_file):
506 mock_is_file.return_value = True
508 pcap_directory = 'directory'
509 pcap_file_0 = 'pcap_file_0'
510 pcap_file_1 = 'pcap_file_1'
512 lua_directory = 'lua_directory'
515 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
516 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
517 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
518 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
520 self.assertRaises(ValueError,
521 mut.DpdkPacketGenerator.
522 _init_input_validation, pcap_file_0, pcap_file_1,
523 lua_script, pcap_directory, lua_directory, variables)
525 @mock.patch('os.path.isfile', side_effect=[False])
526 def test__init_input_validation_for_failure_6(self, mock_is_file):
527 # mock_is_file.return_value = False
529 pcap_directory = 'directory'
530 pcap_file_0 = 'pcap_file_0'
531 pcap_file_1 = 'pcap_file_1'
532 lua_script = 'lua_script'
533 lua_directory = 'lua_directory'
536 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
537 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
538 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
539 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
541 self.assertRaises(ValueError,
542 mut.DpdkPacketGenerator.
543 _init_input_validation, pcap_file_0, pcap_file_1,
544 lua_script, pcap_directory, lua_directory, variables)
546 @mock.patch('os.path.isfile', side_effect=[True, False])
547 def test__init_input_validation_for_failure_7(self, mock_is_file):
548 pcap_directory = 'directory'
549 pcap_file_0 = 'pcap_file_0'
550 pcap_file_1 = 'pcap_file_1'
551 lua_script = 'lua_script'
552 lua_directory = 'lua_directory'
555 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
556 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
557 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
558 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
560 self.assertRaises(ValueError,
561 mut.DpdkPacketGenerator.
562 _init_input_validation, pcap_file_0, pcap_file_1,
563 lua_script, pcap_directory, lua_directory, variables)
565 @mock.patch('os.path.isfile', side_effect=[True, True, False])
566 def test__init_input_validation_for_failure_8(self, mock_is_file):
567 pcap_directory = 'directory'
568 pcap_file_0 = 'pcap_file_0'
569 pcap_file_1 = 'pcap_file_1'
570 lua_script = 'lua_script'
571 lua_directory = 'lua_directory'
574 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
575 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
576 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
577 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
579 self.assertRaises(ValueError,
580 mut.DpdkPacketGenerator.
581 _init_input_validation, pcap_file_0, pcap_file_1,
582 lua_script, pcap_directory, lua_directory, variables)
584 @mock.patch('os.chdir')
585 def test__chdir_for_success(self, mock_os_chdir):
586 mut.DpdkPacketGenerator._chdir('directory')
587 mock_os_chdir.assert_called_once_with('directory')
589 @mock.patch('experimental_framework.common.run_command',
590 side_effect=MockRunCommand.mock_run_command)
591 def test__init_physical_nics_for_success(self, mock_run_command):
595 dpdk_vars[conf_file.CFSP_DPDK_DPDK_DIRECTORY] = 'dpdk_directory/'
596 dpdk_vars[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'pktgen_directory/'
597 dpdk_vars[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
598 dpdk_vars[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
599 dpdk_vars[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
600 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_1] = '1:00.0'
601 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_2] = '1:00.1'
602 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_1] = 'interface_1'
603 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_2] = 'interface_2'
604 self.mut._init_physical_nics(dpdk_interfaces, dpdk_vars)
605 self.assertEqual(MockRunCommand.mock_run_command(),
606 [True, True, True, False, False, False])
608 @mock.patch('experimental_framework.common.run_command',
609 side_effect=MockRunCommand.mock_run_command)
610 def test__init_physical_nics_for_success_2(self, mock_run_command):
614 dpdk_vars[conf_file.CFSP_DPDK_DPDK_DIRECTORY] = 'dpdk_directory/'
615 dpdk_vars[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'pktgen_directory/'
616 dpdk_vars[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
617 dpdk_vars[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
618 dpdk_vars[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
619 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_1] = '1:00.0'
620 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_2] = '1:00.1'
621 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_1] = 'interface_1'
622 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_2] = 'interface_2'
623 self.mut._init_physical_nics(dpdk_interfaces, dpdk_vars)
624 self.assertEqual(MockRunCommand.mock_run_command(),
625 [True, True, True, True, True, True])
627 @mock.patch('experimental_framework.common.run_command')
628 def test__init_physical_nics_for_failure(self, mock_run_command):
631 self.assertRaises(ValueError, self.mut._init_physical_nics,
632 dpdk_interfaces, dpdk_vars)
634 @mock.patch('experimental_framework.common.run_command',
635 side_effect=MockRunCommand.mock_run_command_finalization)
636 def test__finalize_physical_nics_for_success(self, mock_run_command):
639 dpdk_vars[conf_file.CFSP_DPDK_DPDK_DIRECTORY] = 'dpdk_directory/'
640 dpdk_vars[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'pktgen_directory/'
641 dpdk_vars[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
642 dpdk_vars[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
643 dpdk_vars[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
644 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_1] = '1:00.0'
645 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_2] = '1:00.1'
646 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_1] = 'interface_1'
647 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_2] = 'interface_2'
648 self.mut._finalize_physical_nics(dpdk_interfaces, dpdk_vars)
649 self.assertEqual(MockRunCommand.mock_run_command_finalization(),
650 [True, True, True, False, False, False])
652 @mock.patch('experimental_framework.common.run_command',
653 side_effect=MockRunCommand.mock_run_command_finalization)
654 def test__finalize_physical_nics_for_success_2(self, mock_run_command):
657 dpdk_vars[conf_file.CFSP_DPDK_DPDK_DIRECTORY] = 'dpdk_directory/'
658 dpdk_vars[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'pktgen_directory/'
659 dpdk_vars[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
660 dpdk_vars[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
661 dpdk_vars[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
662 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_1] = '1:00.0'
663 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_2] = '1:00.1'
664 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_1] = 'interface_1'
665 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_2] = 'interface_2'
666 self.mut._finalize_physical_nics(dpdk_interfaces, dpdk_vars)
667 self.assertEqual(MockRunCommand.mock_run_command_finalization(),
668 [True, True, True, True, True, True])
670 def test__finalize_physical_nics_for_failure(self):
673 self.assertRaises(ValueError, self.mut._finalize_physical_nics,
674 dpdk_interfaces, dpdk_vars)
676 def test__cores_configuration_for_success(self):
678 expected = '[2:1].0,[4:3].1'
679 output = mut.DpdkPacketGenerator._cores_configuration(coremask,
681 self.assertEqual(expected, output)
683 def test__cores_configuration_for_success_2(self):
685 expected = '2.0,[4:3].1'
686 output = mut.DpdkPacketGenerator._cores_configuration(coremask,
688 self.assertEqual(expected, output)
690 def test__cores_configuration_for_success_3(self):
692 expected = '[3:2].0,4.1'
693 output = mut.DpdkPacketGenerator._cores_configuration(coremask,
695 self.assertEqual(expected, output)
697 def test__cores_configuration_for_failure(self):
699 self.assertRaises(ValueError,
700 mut.DpdkPacketGenerator._cores_configuration,
703 @mock.patch('experimental_framework.common.LOG')
704 @mock.patch('experimental_framework.common.run_command')
705 def test__change_vlan_for_success(self, mock_run_command, mock_log):
706 mut.DpdkPacketGenerator._change_vlan('/directory/', 'pcap_file', '10')
707 expected_param = '/directory/vlan_tag.sh /directory/pcap_file 10'
708 mock_run_command.assert_called_with(expected_param)