> -        self.dut.send_expect("./%s/app/testpmd -c f -n 4 -- -i" % self.target,
> "testpmd> ", 120)
> +        self.dut.send_expect("./%s/app/testpmd -c %s -n 4 -- -i" %
> + (self.target, self.coremask), "testpmd> ", 120)

[Lijuan] Do you forget to change hardcode of memory channel?
>          out = self.dut.send_expect("create bonded device 3 0", "testpmd> ", 30)
>          bond_device_id = int(re.search("port \d+", out).group().split(" ")[-1].strip())

Hi all, 

Good point. 
Actually, the number of channels is a non mandatory EAL parameter, and in DTS it defaults to 1.
http://git.dpdk.org/tools/dts/tree/framework/dut.py#n565

In this module, the other invocations of testpmd were indeed with get_memory_channels().
In this occurrence it is hardcoded to 4.

The number of memory channels is merely an optimization, as you can see in the following thread:
https://dev.dpdk.narkive.com/78gtSXha/dpdk-dev-patch-eal-default-to-one-memory-channel-if-not-specified

According to it,
...
Obtaining the correct value of memory channels, especially from a
running system, can be anything from difficult to plain impossible.
...

Not sure what was the reason for hard coding it to 4 in this test case, but anyhow on this occasion maybe it is better to replace it with get_memory_channels() as with the rest of the module, for the sake of consistency.

Regards,
Rami Rosen