13. How create_eal_parameters and start_testpmd methods use in DPDK Test Suite

13.1. create_eal_parameters

This method used to create EAL parameters character string in DPDK Test Suite. for example: -l 1,2 -w 0000:88:00.0 -w 0000:88:00.1 –file-prefix=dpdk_1112_20190809143420.

define: create_eal_parameters(self, fixed_prefix=False, socket=-1, **config)

usage and example:
     no user parameters:
         param = self.dut.create_eal_parameters()
         output:
             param = '-l 1,2 -n 4 -w 0000:1a:00.0 -w 0000:1a:00.1 --file-prefix=dpdk_397938_20191105143309'

     user parameters:
         1. usage for port and port options, there are two methods for them.
             param = self.dut.create_eal_parameters(cores='1S/4C/1T', ports=[0,1], port_options={0: "proto_xtr=vlan"})
             or
             param = self.dut.create_eal_parameters(cores='1S/4C/1T', ports=['0000:1a:00.0', '0000:1a:00.1'], port_options={'0000:1a:00.0': "proto_xtr=vlan"})
             output:
                 param = '-l 1,2,3,4 -n 4 -w 0000:1a:00.0,proto_xtr=vlan -w 0000:1a:00.1  --file-prefix=dpdk_399214_20191105155446'

         2. usage for b_ports.
             param = self.dut.create_eal_parameters(cores='1S/4C/1T', b_ports=[0])
             or
             param = self.dut.create_eal_parameters(cores='1S/4C/1T', b_ports=['0000:1a:00.0'])
             output:
                 param = '-l 1,2,3,4 -n 4  -b 0000:1a:00.0 --file-prefix=dpdk_399214_20191105155446'

         3. usage for no-pci.
             param = self.dut.create_eal_parameters(cores='1S/4C/1T', no_pci=True)
             output:
                 param = '-l 1,2,3,4 -n 4 --file-prefix=dpdk_399214_20191105155446 --no-pci'

         4. usage for prefix, if fixed_prefix = True, the file-prefix will use the value of prefix, or the value is dpdk_pid_timestamp.
             param = self.dut.create_eal_parameters(cores='1S/4C/1T', ports=[0, 1], port_options={0: "proto_xtr=vlan"}, fixed_prefix=True, prefix='user_defined')
             output:
                 param = '-l 1,2,3,4 -n 4 -w 0000:1a:00.0,proto_xtr=vlan -w 0000:1a:00.1  --file-prefix=user_defined'

         5. usege for vdevs.
             param_vdev = self.dut.create_eal_parameters(cores='1S/4C/1T', no_pci=True, vdevs=[r"net_virtio_user0,mac=%s,path=./vhost-net,queues=1"])
             output:
                 param = '-l 1,2,3,4 -n 4   --file-prefix=dpdk_399214_20191105155446 --no-pci --vdev net_virtio_user0,mac=%s,path=./vhost-net,queues=1'

create_eal_parameters function supports the following parameters:

parameter description Default Value
fixed_prefix Indicate use default prefix or user define prefix False
socket socket of system -1
cores set core list 1S/2C/1T
ports PCI list or PCI ID list  
port_options other port options  
b_ports PCI device in black list  
no_pci Disable PCI bug  
prefix Use a different shared data file prefix for a DPDK process  
vdevs Add a virtual device  

13.2. start_testpmd

The method use to start testpmd application.

define: start_testpmd(self, cores='default', param='', eal_param='', socket=0, fixed_prefix=False, **config)

usage and example:
     no user parameters:
         out = self.pmdout.start_testpmd()
     user parameters:
         1. Those two parameters param and eal_param are used for current test suites.
             for example:
                 In current test suite TestSuite_runtime_vf_queue_number, the eal parameters are wrote as a line string as below.
                     eal_param = '-w %s,queue-num-per-vf=%d --file-prefix=test1 --socket-mem 1024,1024' % (self.pf_pci, invalid_qn)
                 then you can call start_testpmd like this.
                     out = self.pmdout.start_testpmd(self.pmdout.default_cores, param='', eal_param=eal_param)

                 Another usage in current test suite like below:
                     self.pmdout.start_testpmd("Default", "--portmask=%s " %(self.portMask) + " --enable-rx-cksum " + "--port-topology=loop", socket=self.ports_socket)

         2. If you will write a new test suite and need to call start_testpmd method,
             The usage of other parameters such as cores, socket, fixed_prefix and **config are the same as create_eal_parameters.