[dts] [PATCH V2] fix ipfrag failed on freebsd

Liu, Yong yong.liu at intel.com
Thu Sep 7 04:31:55 CEST 2017


Gang, one comment below. I knowing that you are fixing all PEP issues in the suite. 
But for some one line commands, it will be more readable to keep its original format.
You can skip this error by adding "--ignore E501" between pep8 command.

Thanks,
Marvin

> -----Original Message-----
> From: dts [mailto:dts-bounces at dpdk.org] On Behalf Of xu,gang
> Sent: Wednesday, September 06, 2017 5:06 PM
> To: dts at dpdk.org
> Cc: Xu, GangX <gangx.xu at intel.com>
> Subject: [dts] [PATCH V2] fix ipfrag failed on freebsd
> 
> modify command can;t work on freebsd, so do it on tester
> 
> Signed-off-by: xu,gang <gangx.xu at intel.com>
> ---
>  tests/TestSuite_ipfrag.py | 125 +++++++++++++++++++++++++++++++----------
> -----
>  1 file changed, 86 insertions(+), 39 deletions(-)
> 
> diff --git a/tests/TestSuite_ipfrag.py b/tests/TestSuite_ipfrag.py
> index f23dbe1..c80594a 100644
> --- a/tests/TestSuite_ipfrag.py
> +++ b/tests/TestSuite_ipfrag.py
> @@ -84,7 +84,6 @@ class TestIpfrag(TestCase):
> 
>          # Based on h/w type, choose how many ports to use
>          ports = self.dut.get_ports()
> -        print ports
> 
>          # Verify that enough ports are available
>          self.verify(len(ports) >= 2, "Insufficient ports for testing")
> @@ -109,16 +108,28 @@ l3fwd_ipv4_route_array[] = {\\\n"
>              rtLpmTbl[idx] = pat.sub(self.portRepl, rtLpmTbl[idx])
>              lpmStr_ipv4 = lpmStr_ipv4 + ' ' * 4 + rtLpmTbl[idx] + ",\\\n"
>          lpmStr_ipv4 = lpmStr_ipv4 + "};"
> -        print lpmStr_ipv4
>          lpmStr_ipv6 = "static struct l3fwd_ipv6_route
> l3fwd_ipv6_route_array[] = {\\\n"
>          rtLpmTbl = list(lpm_table_ipv6)
>          for idx in range(len(rtLpmTbl)):
>              rtLpmTbl[idx] = pat.sub(self.portRepl, rtLpmTbl[idx])
>              lpmStr_ipv6 = lpmStr_ipv6 + ' ' * 4 + rtLpmTbl[idx] + ",\\\n"
>          lpmStr_ipv6 = lpmStr_ipv6 + "};"
> -        print lpmStr_ipv6
> -        self.dut.send_expect(r"sed -i
> '/l3fwd_ipv4_route_array\[\].*{/,/^\}\;/c\\%s'
> examples/ip_fragmentation/main.c" % lpmStr_ipv4, "# ")
> -        self.dut.send_expect(r"sed -i
> '/l3fwd_ipv6_route_array\[\].*{/,/^\}\;/c\\%s'
> examples/ip_fragmentation/main.c" % lpmStr_ipv6, "# ")
> +        if self.dut.get_os_type() == 'freebsd':
> +            self.dut.session.copy_file_from(
> +                '/root/dpdk/examples/ip_fragmentation/main.c', '/tmp')
> +            self.tester.send_expect(
> +                r"sed -i '/l3fwd_ipv4_route_array\[\].*{/,/^\}\;/c\\%s'
> /tmp/main.c" % lpmStr_ipv4, "# ")
> +            self.tester.send_expect(
> +                r"sed -i '/l3fwd_ipv6_route_array\[\].*{/,/^\}\;/c\\%s'
> /tmp/main.c" % lpmStr_ipv6, "# ")
> +            self.dut.session.copy_file_to(
> +                '/tmp/main.c', '/root/dpdk/examples/ip_fragmentation/')
> +

Gang, why not just do it in DUT?

> +        else:
> +            self.dut.send_expect(
> +                r"sed -i '/l3fwd_ipv4_route_array\[\].*{/,/^\}\;/c\\%s'
> examples/ip_fragmentation/main.c" % lpmStr_ipv4, "# ")
> +            self.dut.send_expect(
> +                r"sed -i '/l3fwd_ipv6_route_array\[\].*{/,/^\}\;/c\\%s'
> examples/ip_fragmentation/main.c" % lpmStr_ipv6, "# ")
> +
>          # make application
>          out = self.dut.build_dpdk_apps("examples/ip_fragmentation")
>          self.verify("Error" not in out, "compilation error 1")
> @@ -148,7 +159,8 @@ l3fwd_ipv4_route_array[] = {\\\n"
>              # simulate to set TG properties
>              if flag == 'frag':
>                  # do fragment, each packet max length 1518 - 18 - 20 =
> 1480
> -                expPkts = (size - HEADER_SIZE['eth'] - HEADER_SIZE['ip'])
> / 1480
> +                expPkts = (
> +                    size - HEADER_SIZE['eth'] - HEADER_SIZE['ip']) / 1480
>                  if (size - HEADER_SIZE['eth'] - HEADER_SIZE['ip']) % 1480:
>                      expPkts += 1
>                  val = 0
> @@ -165,12 +177,15 @@ l3fwd_ipv4_route_array[] = {\\\n"
>                  pkt_size = pkt_sizes[pkt_sizes.index(size) + times]
>                  pkt = Packet(pkt_type='UDP', pkt_len=pkt_size)
>                  pkt.config_layer('ether', {'dst': self.dmac})
> -                pkt.config_layer('ipv4', {'dst': '100.10.0.1', 'src':
> '1.2.3.4', 'flags': val})
> +                pkt.config_layer(
> +                    'ipv4', {'dst': '100.10.0.1', 'src': '1.2.3.4',
> 'flags': val})
>                  pkt.send_pkt(tx_port=self.txItf)
> 
> -            # verify normal packet just by number, verify fragment packet
> by all elements
> +            # verify normal packet just by number, verify fragment packet
> by
> +            # all elements
>              pkts = load_sniff_packets(inst)
> -            self.verify(len(pkts) == expPkts, "Failed on forward packet
> size " + str(size))
> +            self.verify(
> +                len(pkts) == expPkts, "Failed on forward packet size " +
> str(size))
>              if flag == 'frag':
>                  idx = 1
>                  for pkt in pkts:
> @@ -178,19 +193,23 @@ l3fwd_ipv4_route_array[] = {\\\n"
>                      pkt_id = pkt.strip_element_layer3("id")
>                      if idx == 1:
>                          prev_idx = pkt_id
> -                    self.verify(prev_idx == pkt_id, "Fragmented packets
> index not match")
> +                    self.verify(
> +                        prev_idx == pkt_id, "Fragmented packets index not
> match")
>                      prev_idx = pkt_id
> 
>                      # last flags should be 0
>                      flags = pkt.strip_element_layer3("flags")
>                      if idx == expPkts:
> -                        self.verify(flags == 0, "Fragmented last packet
> flags not match")
> +                        self.verify(
> +                            flags == 0, "Fragmented last packet flags not
> match")
>                      else:
> -                        self.verify(flags == 1, "Fragmented packets flags
> not match")
> +                        self.verify(
> +                            flags == 1, "Fragmented packets flags not
> match")
> 
>                      # fragment offset should be correct
>                      frag = pkt.strip_element_layer3("frag")
> -                    self.verify((frag == ((idx - 1) * 185)), "Fragment
> packet frag not match")
> +                    self.verify(
> +                        (frag == ((idx - 1) * 185)), "Fragment packet
> frag not match")
>                      idx += 1
> 
>      def functional_check_ipv6(self, pkt_sizes, burst=1, flag=None,
> funtion=None):
> @@ -200,8 +219,10 @@ l3fwd_ipv4_route_array[] = {\\\n"
>          for size in pkt_sizes[::burst]:
>              # simulate to set TG properties
>              if flag == 'frag':
> -                # each packet max len: 1518 - 18 (eth) - 40 (ipv6) - 8
> (ipv6 ext hdr) = 1452
> -                expPkts = (size - HEADER_SIZE['eth'] -
> HEADER_SIZE['ipv6']) / 1452
> +                # each packet max len: 1518 - 18 (eth) - 40 (ipv6) - 8
> (ipv6
> +                # ext hdr) = 1452
> +                expPkts = (
> +                    size - HEADER_SIZE['eth'] - HEADER_SIZE['ipv6']) /
> 1452
>                  if (size - HEADER_SIZE['eth'] - HEADER_SIZE['ipv6']) %
> 1452:
>                      expPkts += 1
>                  val = 0
> @@ -215,12 +236,15 @@ l3fwd_ipv4_route_array[] = {\\\n"
>                  pkt_size = pkt_sizes[pkt_sizes.index(size) + times]
>                  pkt = Packet(pkt_type='IPv6_UDP', pkt_len=pkt_size)
>                  pkt.config_layer('ether', {'dst': self.dmac})
> -                pkt.config_layer('ipv6', {'dst':
> '101:101:101:101:101:101:101:101', 'src':
> 'ee80:ee80:ee80:ee80:ee80:ee80:ee80:ee80'})
> +                pkt.config_layer(
> +                    'ipv6', {'dst': '101:101:101:101:101:101:101:101',
> 'src': 'ee80:ee80:ee80:ee80:ee80:ee80:ee80:ee80'})
>                  pkt.send_pkt(tx_port=self.txItf)
> 
> -            # verify normal packet just by number, verify fragment packet
> by all elements
> +            # verify normal packet just by number, verify fragment packet
> by
> +            # all elements
>              pkts = load_sniff_packets(inst)
> -            self.verify(len(pkts) == expPkts, "Failed on forward packet
> size " + str(size))
> +            self.verify(
> +                len(pkts) == expPkts, "Failed on forward packet size " +
> str(size))
>              if flag == 'frag':
>                  idx = 1
>                  for pkt in pkts:
> @@ -228,27 +252,33 @@ l3fwd_ipv4_route_array[] = {\\\n"
>                      pkt_id = pkt.strip_element_layer4("id")
>                      if idx == 1:
>                          prev_idx = pkt_id
> -                    self.verify(prev_idx == pkt_id, "Fragmented packets
> index not match")
> +                    self.verify(
> +                        prev_idx == pkt_id, "Fragmented packets index not
> match")
>                      prev_idx = pkt_id
> 
>                      # last flags should be 0
>                      flags = pkt.strip_element_layer4("m")
>                      if idx == expPkts:
> -                        self.verify(flags == 0, "Fragmented last packet
> flags not match")
> +                        self.verify(
> +                            flags == 0, "Fragmented last packet flags not
> match")
>                      else:
> -                        self.verify(flags == 1, "Fragmented packets flags
> not match")
> +                        self.verify(
> +                            flags == 1, "Fragmented packets flags not
> match")
> 
>                      # fragment offset should be correct
>                      frag = pkt.strip_element_layer4("offset")
> -                    self.verify((frag == int((idx - 1) * 181.5)),
> "Fragment packet frag not match")
> +                    self.verify(
> +                        (frag == int((idx - 1) * 181.5)), "Fragment
> packet frag not match")
>                      idx += 1
> 
>      def set_up(self):
>          """
>          Run before each test case.
>          """
> -        self.tester.send_expect("ifconfig %s mtu 9200" %
> self.tester.get_interface(self.tester.get_local_port(P0)), "#")
> -        self.tester.send_expect("ifconfig %s mtu 9200" %
> self.tester.get_interface(self.tester.get_local_port(P1)), "#")
> +        self.tester.send_expect("ifconfig %s mtu 9200" %
> +
> self.tester.get_interface(self.tester.get_local_port(P0)), "#")
> +        self.tester.send_expect("ifconfig %s mtu 9200" %
> +
> self.tester.get_interface(self.tester.get_local_port(P1)), "#")
> 
>      def test_ipfrag_normalfwd(self):
>          """
> @@ -290,7 +320,8 @@ l3fwd_ipv4_route_array[] = {\\\n"
>          Pct = dict()
> 
>          if int(lcore[0]) == 1:
> -            core_mask = utils.create_mask(self.dut.get_core_list(lcore,
> socket=self.ports_socket))
> +            core_mask = utils.create_mask(
> +                self.dut.get_core_list(lcore, socket=self.ports_socket))
>          else:
>              core_mask = utils.create_mask(self.dut.get_core_list(lcore))
> 
> @@ -302,29 +333,42 @@ l3fwd_ipv4_route_array[] = {\\\n"
>          result = [2, lcore, num_pthreads]
>          for size in size_list:
>              dmac = self.dut.get_mac_address(P0)
> -            flows = ['Ether(dst="%s")/IP(src="1.2.3.4", dst="100.10.0.1",
> flags=0)/("X"*%d)' % (dmac, size - 38),
> -                     'Ether(dst="%s")/IP(src="1.2.3.4", dst="100.20.0.1",
> flags=0)/("X"*%d)' % (dmac, size - 38),
> -
> 'Ether(dst="%s")/IPv6(dst="101:101:101:101:101:101:101:101",src="ee80:ee80
> :ee80:ee80:ee80:ee80:ee80:ee80")/Raw(load="X"*%d)' % (dmac, size - 58),
> +            flows = [
> +                'Ether(dst="%s")/IP(src="1.2.3.4", dst="100.10.0.1",
> flags=0)/("X"*%d)' % (
> +                    dmac, size - 38),
> +                     'Ether(dst="%s")/IP(src="1.2.3.4", dst="100.20.0.1",
> flags=0)/("X"*%d)' % (
> +                         dmac, size - 38),
> +
> 'Ether(dst="%s")/IPv6(dst="101:101:101:101:101:101:101:101",src="ee80:ee80
> :ee80:ee80:ee80:ee80:ee80:ee80")/Raw(load="X"*%d)' % (
> +                         dmac, size - 58),
> 
> 'Ether(dst="%s")/IPv6(dst="201:101:101:101:101:101:101:101",src="ee80:ee80
> :ee80:ee80:ee80:ee80:ee80:ee80")/Raw(load="X"*%d)' % (dmac, size - 58)]
> -            self.tester.scapy_append('wrpcap("test1.pcap", [%s])' %
> string.join(flows, ','))
> +            self.tester.scapy_append(
> +                'wrpcap("test1.pcap", [%s])' % string.join(flows, ','))
> 
>              # reserved for rx/tx bidirection test
>              dmac = self.dut.get_mac_address(P1)
> -            flows = ['Ether(dst="%s")/IP(src="1.2.3.4", dst="100.30.0.1",
> flags=0)/("X"*%d)' % (dmac, size - 38),
> -                     'Ether(dst="%s")/IP(src="1.2.3.4", dst="100.40.0.1",
> flags=0)/("X"*%d)' % (dmac, size - 38),
> -
> 'Ether(dst="%s")/IPv6(dst="301:101:101:101:101:101:101:101",src="ee80:ee80
> :ee80:ee80:ee80:ee80:ee80:ee80")/Raw(load="X"*%d)' % (dmac, size - 58),
> +            flows = [
> +                'Ether(dst="%s")/IP(src="1.2.3.4", dst="100.30.0.1",
> flags=0)/("X"*%d)' % (
> +                    dmac, size - 38),
> +                     'Ether(dst="%s")/IP(src="1.2.3.4", dst="100.40.0.1",
> flags=0)/("X"*%d)' % (
> +                         dmac, size - 38),
> +
> 'Ether(dst="%s")/IPv6(dst="301:101:101:101:101:101:101:101",src="ee80:ee80
> :ee80:ee80:ee80:ee80:ee80:ee80")/Raw(load="X"*%d)' % (
> +                         dmac, size - 58),
> 
> 'Ether(dst="%s")/IPv6(dst="401:101:101:101:101:101:101:101",src="ee80:ee80
> :ee80:ee80:ee80:ee80:ee80:ee80")/Raw(load="X"*%d)' % (dmac, size - 58)]
> -            self.tester.scapy_append('wrpcap("test2.pcap", [%s])' %
> string.join(flows, ','))
> +            self.tester.scapy_append(
> +                'wrpcap("test2.pcap", [%s])' % string.join(flows, ','))
> 
>              self.tester.scapy_execute()
> 
>              tgenInput = []
> -            tgenInput.append((self.tester.get_local_port(P0),
> self.tester.get_local_port(P1), "test1.pcap"))
> -            tgenInput.append((self.tester.get_local_port(P1),
> self.tester.get_local_port(P0), "test2.pcap"))
> +            tgenInput.append(
> +                (self.tester.get_local_port(P0),
> self.tester.get_local_port(P1), "test1.pcap"))
> +            tgenInput.append(
> +                (self.tester.get_local_port(P1),
> self.tester.get_local_port(P0), "test2.pcap"))
> 
>              factor = (size + 1517) / 1518
>              # wireSpd = 2 * 10000.0 / ((20 + size) * 8)
> -            Bps[str(size)], Pps[str(size)] =
> self.tester.traffic_generator_throughput(tgenInput)
> +            Bps[str(size)], Pps[
> +                str(size)] =
> self.tester.traffic_generator_throughput(tgenInput)
>              self.verify(Pps[str(size)] > 0, "No traffic detected")
>              Pps[str(size)] *= 1.0 / factor / 1000000
>              Pct[str(size)] = (1.0 * Bps[str(size)] * 100) / (2 *
> 10000000000)
> @@ -349,7 +393,8 @@ l3fwd_ipv4_route_array[] = {\\\n"
> 
>          self.result_table_create(tblheader)
> 
> -        lcores = [("1S/1C/1T", 2), ("1S/1C/2T", 2), ("1S/2C/1T", 2),
> ("2S/1C/1T", 2)]
> +        lcores = [("1S/1C/1T", 2), ("1S/1C/2T", 2),
> +                  ("1S/2C/1T", 2), ("2S/1C/1T", 2)]
>          index = 1
>          for (lcore, numThr) in lcores:
>              self.benchmark(index, lcore, numThr, sizes)
> @@ -361,8 +406,10 @@ l3fwd_ipv4_route_array[] = {\\\n"
>          """
>          Run after each test case.
>          """
> -        self.tester.send_expect("ifconfig %s mtu 1500" %
> self.tester.get_interface(self.tester.get_local_port(P0)), "#")
> -        self.tester.send_expect("ifconfig %s mtu 1500" %
> self.tester.get_interface(self.tester.get_local_port(P1)), "#")
> +        self.tester.send_expect("ifconfig %s mtu 1500" %
> +
> self.tester.get_interface(self.tester.get_local_port(P0)), "#")
> +        self.tester.send_expect("ifconfig %s mtu 1500" %
> +
> self.tester.get_interface(self.tester.get_local_port(P1)), "#")
> 
>      def tear_down_all(self):
>          """
> --
> 1.9.3



More information about the dts mailing list