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 @mock.patch('experimental_framework.packet_generators.dpdk_packet_generator.time')
363 class TestDpdkPacketGenOthers(unittest.TestCase):
366 self.mut = mut.DpdkPacketGenerator()
371 @mock.patch('experimental_framework.packet_generators.'
372 'dpdk_packet_generator.DpdkPacketGenerator.'
373 '_cores_configuration')
374 def test__get_core_nics_for_failure(self, mock_cores_configuration, mock_time):
375 mock_cores_configuration.return_value = None
376 self.assertRaises(ValueError, mut.DpdkPacketGenerator._get_core_nics,
379 @mock.patch('experimental_framework.packet_generators.'
380 'dpdk_packet_generator.DpdkPacketGenerator.'
381 '_cores_configuration')
382 def test__get_core_nics_one_nic_for_success(self,
383 mock_cores_configuration, mock_time):
384 mock_cores_configuration.return_value = 'ret_val'
386 output = mut.DpdkPacketGenerator._get_core_nics(1, 'coremask')
387 self.assertEqual(expected, output)
388 mock_cores_configuration.assert_called_once_with('coremask', 1, 2, 0)
390 @mock.patch('experimental_framework.packet_generators.'
391 'dpdk_packet_generator.DpdkPacketGenerator.'
392 '_cores_configuration')
393 def test__get_core_nics_two_nics_for_success(self,
394 mock_cores_configuration, mock_time):
395 mock_cores_configuration.return_value = 'ret_val'
397 output = mut.DpdkPacketGenerator._get_core_nics(2, 'coremask')
398 self.assertEqual(expected, output)
399 mock_cores_configuration.assert_called_once_with('coremask', 1, 2, 2)
401 @mock.patch('os.path.isfile')
402 def test__init_input_validation_for_success(self, mock_is_file, mock_time):
403 mock_is_file.return_value = True
405 pcap_file_0 = 'pcap_file_0'
406 pcap_file_1 = 'pcap_file_1'
407 lua_script = 'lua_script'
408 pcap_directory = 'pcap_directory'
409 lua_directory = 'lua_directory'
412 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
413 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
414 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
415 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
417 self.assertEqual(mut.DpdkPacketGenerator._init_input_validation(
418 pcap_file_0, pcap_file_1,
419 lua_script, pcap_directory, lua_directory,
422 @mock.patch('os.path.isfile')
423 def test__init_input_validation_for_failure(self, mock_is_file, mock_time):
424 mock_is_file.return_value = True
426 pcap_file_0 = 'pcap_file_0'
427 pcap_file_1 = 'pcap_file_1'
428 lua_script = 'lua_script'
429 pcap_directory = 'pcap_directory'
430 lua_directory = 'lua_directory'
433 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
434 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
435 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
436 # variables[common.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
438 self.assertRaises(ValueError,
439 mut.DpdkPacketGenerator.
440 _init_input_validation, pcap_file_0, pcap_file_1,
441 lua_script, pcap_directory, lua_directory, variables)
443 @mock.patch('os.path.isfile')
444 def test__init_input_validation_for_failure_2(self, mock_is_file, mock_time):
445 mock_is_file.return_value = True
447 pcap_directory = None
448 pcap_file_0 = 'pcap_file_0'
449 pcap_file_1 = 'pcap_file_1'
450 lua_script = 'lua_script'
451 lua_directory = 'lua_directory'
454 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
455 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
456 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
457 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
459 self.assertRaises(ValueError,
460 mut.DpdkPacketGenerator.
461 _init_input_validation, pcap_file_0, pcap_file_1,
462 lua_script, pcap_directory, lua_directory, variables)
464 @mock.patch('os.path.isfile')
465 def test__init_input_validation_for_failure_3(self, mock_is_file, mock_time):
466 mock_is_file.return_value = True
468 pcap_directory = 'directory'
470 pcap_file_1 = 'pcap_file_1'
471 lua_script = 'lua_script'
472 lua_directory = 'lua_directory'
475 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
476 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
477 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
478 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
480 self.assertRaises(ValueError,
481 mut.DpdkPacketGenerator.
482 _init_input_validation, pcap_file_0, pcap_file_1,
483 lua_script, pcap_directory, lua_directory, variables)
485 @mock.patch('os.path.isfile')
486 def test__init_input_validation_for_failure_4(self, mock_is_file, mock_time):
487 mock_is_file.return_value = True
489 pcap_directory = 'directory'
490 pcap_file_0 = 'pcap_file_0'
492 lua_script = 'lua_script'
493 lua_directory = 'lua_directory'
496 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
497 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
498 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
499 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
501 self.assertRaises(ValueError,
502 mut.DpdkPacketGenerator.
503 _init_input_validation, pcap_file_0, pcap_file_1,
504 lua_script, pcap_directory, lua_directory, variables)
506 @mock.patch('os.path.isfile')
507 def test__init_input_validation_for_failure_5(self, mock_is_file, mock_time):
508 mock_is_file.return_value = True
510 pcap_directory = 'directory'
511 pcap_file_0 = 'pcap_file_0'
512 pcap_file_1 = 'pcap_file_1'
514 lua_directory = 'lua_directory'
517 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
518 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
519 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
520 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
522 self.assertRaises(ValueError,
523 mut.DpdkPacketGenerator.
524 _init_input_validation, pcap_file_0, pcap_file_1,
525 lua_script, pcap_directory, lua_directory, variables)
527 @mock.patch('os.path.isfile', side_effect=[False])
528 def test__init_input_validation_for_failure_6(self, mock_is_file, mock_time):
529 # mock_is_file.return_value = False
531 pcap_directory = 'directory'
532 pcap_file_0 = 'pcap_file_0'
533 pcap_file_1 = 'pcap_file_1'
534 lua_script = 'lua_script'
535 lua_directory = 'lua_directory'
538 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
539 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
540 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
541 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
543 self.assertRaises(ValueError,
544 mut.DpdkPacketGenerator.
545 _init_input_validation, pcap_file_0, pcap_file_1,
546 lua_script, pcap_directory, lua_directory, variables)
548 @mock.patch('os.path.isfile', side_effect=[True, False])
549 def test__init_input_validation_for_failure_7(self, mock_is_file, mock_time):
550 pcap_directory = 'directory'
551 pcap_file_0 = 'pcap_file_0'
552 pcap_file_1 = 'pcap_file_1'
553 lua_script = 'lua_script'
554 lua_directory = 'lua_directory'
557 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
558 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
559 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
560 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
562 self.assertRaises(ValueError,
563 mut.DpdkPacketGenerator.
564 _init_input_validation, pcap_file_0, pcap_file_1,
565 lua_script, pcap_directory, lua_directory, variables)
567 @mock.patch('os.path.isfile', side_effect=[True, True, False])
568 def test__init_input_validation_for_failure_8(self, mock_is_file, mock_time):
569 pcap_directory = 'directory'
570 pcap_file_0 = 'pcap_file_0'
571 pcap_file_1 = 'pcap_file_1'
572 lua_script = 'lua_script'
573 lua_directory = 'lua_directory'
576 variables[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'directory'
577 variables[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
578 variables[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
579 variables[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
581 self.assertRaises(ValueError,
582 mut.DpdkPacketGenerator.
583 _init_input_validation, pcap_file_0, pcap_file_1,
584 lua_script, pcap_directory, lua_directory, variables)
586 @mock.patch('os.chdir')
587 def test__chdir_for_success(self, mock_os_chdir, mock_time):
588 mut.DpdkPacketGenerator._chdir('directory')
589 mock_os_chdir.assert_called_once_with('directory')
591 @mock.patch('experimental_framework.common.run_command',
592 side_effect=MockRunCommand.mock_run_command)
593 def test__init_physical_nics_for_success(self, mock_run_command, mock_time):
597 dpdk_vars[conf_file.CFSP_DPDK_DPDK_DIRECTORY] = 'dpdk_directory/'
598 dpdk_vars[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'pktgen_directory/'
599 dpdk_vars[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
600 dpdk_vars[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
601 dpdk_vars[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
602 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_1] = '1:00.0'
603 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_2] = '1:00.1'
604 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_1] = 'interface_1'
605 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_2] = 'interface_2'
606 self.mut._init_physical_nics(dpdk_interfaces, dpdk_vars)
607 self.assertEqual(MockRunCommand.mock_run_command(),
608 [True, True, True, False, False, False])
610 @mock.patch('experimental_framework.common.run_command',
611 side_effect=MockRunCommand.mock_run_command)
612 def test__init_physical_nics_for_success_2(self, mock_run_command, mock_time):
616 dpdk_vars[conf_file.CFSP_DPDK_DPDK_DIRECTORY] = 'dpdk_directory/'
617 dpdk_vars[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'pktgen_directory/'
618 dpdk_vars[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
619 dpdk_vars[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
620 dpdk_vars[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
621 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_1] = '1:00.0'
622 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_2] = '1:00.1'
623 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_1] = 'interface_1'
624 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_2] = 'interface_2'
625 self.mut._init_physical_nics(dpdk_interfaces, dpdk_vars)
626 self.assertEqual(MockRunCommand.mock_run_command(),
627 [True, True, True, True, True, True])
629 @mock.patch('experimental_framework.common.run_command')
630 def test__init_physical_nics_for_failure(self, mock_run_command, mock_time):
633 self.assertRaises(ValueError, self.mut._init_physical_nics,
634 dpdk_interfaces, dpdk_vars)
636 @mock.patch('experimental_framework.common.run_command',
637 side_effect=MockRunCommand.mock_run_command_finalization)
638 def test__finalize_physical_nics_for_success(self, mock_run_command, mock_time):
641 dpdk_vars[conf_file.CFSP_DPDK_DPDK_DIRECTORY] = 'dpdk_directory/'
642 dpdk_vars[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'pktgen_directory/'
643 dpdk_vars[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
644 dpdk_vars[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
645 dpdk_vars[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
646 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_1] = '1:00.0'
647 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_2] = '1:00.1'
648 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_1] = 'interface_1'
649 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_2] = 'interface_2'
650 self.mut._finalize_physical_nics(dpdk_interfaces, dpdk_vars)
651 self.assertEqual(MockRunCommand.mock_run_command_finalization(),
652 [True, True, True, False, False, False])
654 @mock.patch('experimental_framework.common.run_command',
655 side_effect=MockRunCommand.mock_run_command_finalization)
656 def test__finalize_physical_nics_for_success_2(self, mock_run_command, mock_time):
659 dpdk_vars[conf_file.CFSP_DPDK_DPDK_DIRECTORY] = 'dpdk_directory/'
660 dpdk_vars[conf_file.CFSP_DPDK_PKTGEN_DIRECTORY] = 'pktgen_directory/'
661 dpdk_vars[conf_file.CFSP_DPDK_PROGRAM_NAME] = 'program_name'
662 dpdk_vars[conf_file.CFSP_DPDK_COREMASK] = 'coremask'
663 dpdk_vars[conf_file.CFSP_DPDK_MEMORY_CHANNEL] = 'memory_channels'
664 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_1] = '1:00.0'
665 dpdk_vars[conf_file.CFSP_DPDK_BUS_SLOT_NIC_2] = '1:00.1'
666 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_1] = 'interface_1'
667 dpdk_vars[conf_file.CFSP_DPDK_NAME_IF_2] = 'interface_2'
668 self.mut._finalize_physical_nics(dpdk_interfaces, dpdk_vars)
669 self.assertEqual(MockRunCommand.mock_run_command_finalization(),
670 [True, True, True, True, True, True])
672 def test__finalize_physical_nics_for_failure(self, mock_time):
675 self.assertRaises(ValueError, self.mut._finalize_physical_nics,
676 dpdk_interfaces, dpdk_vars)
678 def test__cores_configuration_for_success(self, mock_time):
680 expected = '[2:1].0,[4:3].1'
681 output = mut.DpdkPacketGenerator._cores_configuration(coremask,
683 self.assertEqual(expected, output)
685 def test__cores_configuration_for_success_2(self, mock_time):
687 expected = '2.0,[4:3].1'
688 output = mut.DpdkPacketGenerator._cores_configuration(coremask,
690 self.assertEqual(expected, output)
692 def test__cores_configuration_for_success_3(self, mock_time):
694 expected = '[3:2].0,4.1'
695 output = mut.DpdkPacketGenerator._cores_configuration(coremask,
697 self.assertEqual(expected, output)
699 def test__cores_configuration_for_failure(self, mock_time):
701 self.assertRaises(ValueError,
702 mut.DpdkPacketGenerator._cores_configuration,
705 @mock.patch('experimental_framework.common.LOG')
706 @mock.patch('experimental_framework.common.run_command')
707 def test__change_vlan_for_success(self, mock_run_command, mock_log, mock_time):
708 mut.DpdkPacketGenerator._change_vlan('/directory/', 'pcap_file', '10')
709 expected_param = '/directory/vlan_tag.sh /directory/pcap_file 10'
710 mock_run_command.assert_called_with(expected_param)