Exemple #1
0
    def set_up_all(self):
        """
        Run at the start of each test suite.
        """
        self.dut_ports = self.dut.get_ports(self.nic)
        self.verify(len(self.dut_ports) >= 2, "Insufficient ports")
        cores = self.dut.get_core_list("1S/4C/1T")
        self.coremask = utils.create_mask(cores)
        self.portmask = utils.create_mask(self.dut_ports)

        self.path = "./examples/link_status_interrupt/build/link_status_interrupt"

        # build sample app
        out = self.dut.build_dpdk_apps("./examples/link_status_interrupt")
        self.verify("Error" not in out, "compilation error 1")
        self.verify("No such file" not in out, "compilation error 2")
        # from kernel 4.8+, kernel will not support legacy intr mode.
        # detaile info:https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/drivers/pci/quirks.c?id=8bcf4525c5d43306c5fd07e132bc8650e3491aec
        if self.nic in [
                "fortville_eagle", "fortville_spirit",
                "fortville_spirt_single", "fortville_25g"
        ]:
            self.basic_intr_mode = ["msix"]
        else:
            self.basic_intr_mode = ["msix", "legacy"]
        if self.drivername == "vfio-pci":
            self.basic_intr_mode.append("msi")
Exemple #2
0
    def set_up_all(self):
        """
        Prerequisite steps for each test suit.
        """
        self.dut_ports = self.dut.get_ports()
        self.verify(len(self.dut_ports) >= 1, "Insufficient ports")
        self.rx_port = self.dut_ports[0]
        self.tx_port = self.dut_ports[0]

        cores = self.dut.get_core_list("1S/2C/1T")
        self.coremask = utils.create_mask(cores)

        self.port_mask = utils.create_mask([self.rx_port, self.tx_port])

        if self.kdriver == "fm10k":
            netobj = self.dut.ports_info[self.tx_port]['port']
            netobj.enable_jumbo(framesize=ETHER_JUMBO_FRAME_MTU)
            netobj = self.dut.ports_info[self.rx_port]['port']
            netobj.enable_jumbo(framesize=ETHER_JUMBO_FRAME_MTU)

        self.tester.send_expect(
            "ifconfig %s mtu %s" %
            (self.tester.get_interface(self.tester.get_local_port(
                self.rx_port)), ETHER_JUMBO_FRAME_MTU + 200), "# ")
        #        self.tester.send_expect("ifconfig %s mtu %s" % (self.tester.get_interface(self.tester.get_local_port(self.tx_port)), ETHER_JUMBO_FRAME_MTU + 200), "# ")

        self.pmdout = PmdOutput(self.dut)
    def test_reset_queues(self):
        """
        Reset RX/TX Queues.
        """
        testcorelist = self.dut.get_core_list("1S/8C/1T",
                                              socket=self.ports_socket)

        self.pmdout.start_testpmd(testcorelist,
                                  "--portmask=%s  --port-topology=loop" %
                                  utils.create_mask([self.ports[0]]),
                                  socket=self.ports_socket)
        fwdcoremask = utils.create_mask(testcorelist[-3:])

        self.dut.send_expect("port stop all", "testpmd> ", 100)
        self.dut.send_expect("port config all rxq 2", "testpmd> ")
        self.dut.send_expect("port config all txq 2", "testpmd> ")
        self.dut.send_expect("set coremask %s" % fwdcoremask, "testpmd> ")
        self.dut.send_expect("set fwd mac", "testpmd>")
        self.dut.send_expect("port start all", "testpmd> ", 100)
        out = self.dut.send_expect("show config rxtx", "testpmd> ")
        self.verify("RX queue number: 2" in out,
                    "RX queues not reconfigured properly")
        self.verify("Tx queue number: 2" in out,
                    "TX queues not reconfigured properly")
        self.dut.send_expect("start", "testpmd> ")
        self.check_forwarding()
        self.dut.send_expect("quit", "# ", 30)
Exemple #4
0
    def set_up_all(self):
        """
        Run at the start of each test suite.

        Vlan Prerequistites
        """
        global dutRxPortId
        global dutTxPortId

        # Based on h/w type, choose how many ports to use
        ports = self.dut.get_ports(self.nic)
        self.verify(len(ports) >= 2, "Insufficient ports")
        self.ports_socket = self.dut.get_numa_id(ports[0])

        cores = self.dut.get_core_list('1S/2C/2T')
        coreMask = utils.create_mask(cores)

        ports = self.dut.get_ports(self.nic)
        valports = [_ for _ in ports if self.tester.get_local_port(_) != -1]

        portMask = utils.create_mask(valports[:2])

        dutRxPortId = valports[0]
        dutTxPortId = valports[1]

        self.pmdout = PmdOutput(self.dut)
        self.pmdout.start_testpmd("Default", "--portmask=%s" % portMask, socket=self.ports_socket)

        if self.nic in ["fortville_eagle", "fortville_spirit", "fortville_spirit_single", "fortville_25g", "fortpark_TLV"]:
            self.dut.send_expect("vlan set filter on all", "testpmd> ")
            self.dut.send_expect("set promisc all off", "testpmd> ")

        out = self.dut.send_expect("set fwd mac", "testpmd> ")
        self.verify('Set mac packet forwarding mode' in out, "set fwd mac error")
        out = self.dut.send_expect("start", "testpmd> ", 120)
Exemple #5
0
    def set_up_all(self):
        """
        Run at the start of each test suite.
        """
        self.tester.extend_external_packet_generator(TestPVPVirtioMultiQueues,
                                                     self)
        self.frame_sizes = [64, 128, 256, 512, 1024, 1518]
        self.core_config = "1S/6C/1T"
        self.queue_number = 2
        self.port_number = 2
        self.dut_ports = self.dut.get_ports()
        self.verify(len(self.dut_ports) >= 1, "Insufficient ports for testing")
        self.ports_socket = self.dut.get_numa_id(self.dut_ports[0])
        self.cores_num = len([
            n for n in self.dut.cores if int(n['socket']) == self.ports_socket
        ])
        self.verify(self.cores_num >= 6,
                    "There has not enought cores to test this case")
        self.headers_size = HEADER_SIZE['eth'] + HEADER_SIZE['ip'] + \
            HEADER_SIZE['udp']
        self.core_list = self.dut.get_core_list(self.core_config,
                                                socket=self.ports_socket)
        self.core_list_user = self.core_list[0:3]
        self.core_list_host = self.core_list[3:6]
        self.core_mask_user = utils.create_mask(self.core_list_user)
        self.core_mask_host = utils.create_mask(self.core_list_host)
        self.dst_mac = self.dut.get_mac_address(self.dut_ports[0])

        self.logger.info("you can config packet_size in file %s.cfg," % self.suite_name + \
                        "in region 'suite' like packet_sizes=[64, 128, 256]")
        # get the frame_sizes from cfg file
        if 'packet_sizes' in self.get_suite_cfg():
            self.frame_sizes = self.get_suite_cfg()['packet_sizes']
Exemple #6
0
    def set_up_all(self):
        """
        Run at the start of each test suite.
        """
        # only one port is enought for this case
        self.dut_ports = self.dut.get_ports()
        self.verify(
            len(self.dut_ports) >= 1, "Not enough ports for " + self.nic)

        self.core_mask = utils.create_mask(self.dut.get_core_list("1S/4C/1T"))
        self.port_mask = utils.create_mask([self.dut_ports[0]])

        self.path = "./examples/l2fwd/build/app/l2fwd"

        # strip mempool size
        self.main_path = "./examples/l2fwd/main.c"
        out = self.dut.send_expect(
            "cat %s | grep \"#define NB_MBUF\"" % self.main_path, "# ")
        mp_str = utils.regexp(out, r"#define NB_MBUF   (\d+)")
        if mp_str is None:
            mp_size = 8192
        else:
            mp_size = int(mp_str)

        # make sure packets more than 2*mempool size
        self.pkts = mp_size * 2 + 1000
    def set_up_all(self):
        """
        Run at the start of each test suite.
        """
        self.works = 4
        self.packet_num = 96
        self.core_config = "1S/7C/1T"
        self.build_eventdev_app()

        self.dut_ports = self.dut.get_ports()
        self.verify(len(self.dut_ports) >= 1, "Insufficient ports for testing")

        self.ports_socket = self.dut.get_numa_id(self.dut_ports[0])
        self.core_list = self.dut.get_core_list(self.core_config,
                                                socket=self.ports_socket)
        self.core_list_rx = self.core_list[0:1]
        self.core_list_tx = self.core_list[1:2]
        self.core_list_sd = self.core_list[2:3]
        self.core_list_wk = self.core_list[3:7]
        self.core_mask_rx = utils.create_mask(self.core_list_rx)
        self.core_mask_tx = utils.create_mask(self.core_list_tx)
        self.core_mask_sd = utils.create_mask(self.core_list_sd)
        self.core_mask_wk = utils.create_mask(self.core_list_wk)

        self.core_list = ",".join(self.core_list)
        pre = int(self.core_list[0]) - 1
        self.core_list = str(pre) + "," + self.core_list

        self.rx_port = self.tester.get_local_port(self.dut_ports[0])
        self.tx_port = self.rx_port
        self.rx_interface = self.tester.get_interface(self.rx_port)
        self.tx_interface = self.tester.get_interface(self.tx_port)
        self.d_mac = self.dut.get_mac_address(self.dut_ports[0])
Exemple #8
0
    def test_l2fwd_integrity(self):
        print("***l2fwd integrity")
        """
        Check port forwarding.
        """
        # the cases use the first two ports
        port_mask = utils.create_mask([self.dut_ports[0], self.dut_ports[1]])
        print("***port mask", port_mask)
        core_mask = utils.create_mask(
            self.dut.get_core_list(self.core_config, socket=self.ports_socket))
        print("***core mask", core_mask)
        for queues in self.test_queues:

            command_line = "./examples/l2fwd/build/app/l2fwd -n %d -c %s -- -q %s -p %s &" % \
                (self.dut.get_memory_channels(), core_mask,
                 str(queues['queues']), port_mask)

            self.dut.send_expect(command_line, "L2FWD: entering main loop", 60)

            tgen_input = []
            tx_port = self.tester.get_local_port(self.dut_ports[0])
            rx_port = self.tester.get_local_port(self.dut_ports[1])
            tgen_input.append((tx_port, rx_port))

            result = self.tester.check_random_pkts(tgen_input,
                                                   allow_miss=False)
            self.verify(result != False, "Packet integrity check failed")

            self.quit_l2fwd()
Exemple #9
0
 def get_core_mask(self):
     """
     get the coremask about vhost and virito depend on the queue number
     """
     self.core_list_user = self.core_list[0:self.nb_cores + 1]
     self.core_list_host = self.core_list[self.nb_cores +
                                          1:2 * self.nb_cores + 2]
     self.core_mask_user = utils.create_mask(self.core_list_user)
     self.core_mask_host = utils.create_mask(self.core_list_host)
Exemple #10
0
    def cross_correlate(self,
                        image,
                        region1=None,
                        region2=None,
                        upsample_factor=100,
                        extended_output=False,
                        mask_cc=False):
        """
        Cross-correlates current instance of ``Image`` with another instance
        using phase correlation.

        :param image:
            Instance of image class.
        :param region1: (optional)
            Region to EXCLUDE in current instance of ``Image``.
            Or (blc[0], blc[1], trc[0], trc[1],) or (center[0], center[1], r,
            None,) or (center[0], center[1], bmaj, e, bpa). Default ``None``.
        :param region2: (optional)
            Region to EXCLUDE in other instance of ``Image``. Or (blc[0],
            blc[1], trc[0], trc[1],) or (center[0], center[1], r, None,) or
            (center[0], center[1], bmaj, e, bpa). Default ``None``.
        :param upsample_factor: (optional)
            Upsampling factor. Images will be registered to within
            ``1 / upsample_factor`` of a pixel. For example
            ``upsample_factor == 20`` means the images will be registered
            within 1/20th of a pixel. If ``1`` then no upsampling.
            (default: ``100``)
        :param extended_output: (optioinal)
            Output all information from ``register_translation``? (default:
            ``False``)
        :param mask_cc: (optional)
            If some of images is instance of ``CleanImage`` class - should we
            mask clean components instead of image array? (default: ``False``)

        :return:
            Array of shifts (subpixeled) in each direction or full information
            from ``register_translation`` depending on ``extended_output``.
        """
        image1 = self.image.copy()
        if region1 is not None:
            mask1 = create_mask(self.image.shape, region1)
            if mask_cc and isinstance(self, CleanImage):
                raise NotImplementedError()
            image1[mask1] = 0.
        image2 = image.image.copy()
        if region2 is not None:
            mask2 = create_mask(image.image.shape, region2)
            if mask_cc and isinstance(image, CleanImage):
                raise NotImplementedError()
            image2[mask2] = 0.
        # Cross-correlate images
        shift, error, diffphase = register_translation(image1, image2,
                                                       upsample_factor)
        result = shift
        if extended_output:
            result = (shift, error, diffphase)
        return result
 def test_create_mask(self):
   inputs = tf.constant([[1, 2], [2, 1], [3, 2]])
   masking_prob = {1: 1., 2: 0., 3: 0.8}
   self.assertAllEqual(
       tf.constant([[1, 0], [0, 1], [0, 0]]),
       utils.create_mask(inputs, masking_prob, seed=1))
   self.assertAllEqual(
       tf.constant([[1, 0], [0, 1], [1, 0]]),
       utils.create_mask(inputs, masking_prob, seed=2))
Exemple #12
0
    def benchmark(self, index, lcore, num_pthreads, size_list):
        """
        Just Test IPv4 Throughput for selected parameters.
        """

        Bps = dict()
        Pps = dict()
        Pct = dict()

        if int(lcore[0]) == 1:
            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))

        portmask = utils.create_mask([P0, P1])

        self.dut.send_expect("examples/ip_fragmentation/build/ip_fragmentation -c %s -n %d -- -p %s -q %s" % (
            core_mask, self.dut.get_memory_channels(), portmask, num_pthreads), "IP_FRAG:", 120)

        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),
                     '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, ','))

            # 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),
                     '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_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"))

            factor = (size + 1517) / 1518
            # wireSpd = 2 * 10000.0 / ((20 + size) * 8)
            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)

            result.append(Pps[str(size)])
            result.append(Pct[str(size)])

        self.result_table_add(result)

        self.dut.send_expect("^C", "#")
Exemple #13
0
    def _efd_perf_evaluate(self, node_num, flow_num):
        # extended flow number into etgen module
        self.tester.ixia_packet_gen.flow_num = flow_num

        # output port is calculated from overall ports number
        server_cmd_fmt = "%s -c %s -n %d -w %s -w %s -- -p 0x3 -n %d -f %s"
        node_cmd_fmt = "%s -c %s -n %d --proc-type=secondary -- -n %d"
        socket = self.dut.get_numa_id(self.dut_ports[0])

        self.tester.scapy_append(
            'wrpcap("efd.pcap", [Ether()/IP(src="0.0.0.0", dst="0.0.0.0")/("X"*26)])'
        )
        self.tester.scapy_execute()

        tgen_input = []
        rx_port = self.tester.get_local_port(self.dut_ports[0])
        tx_port = self.tester.get_local_port(self.dut_ports[1])

        tgen_input.append((tx_port, rx_port, "efd.pcap"))
        tgen_input.append((rx_port, tx_port, "efd.pcap"))

        cores = self.dut.get_core_list("1S/%dC/1T" % (node_num + 2), socket)

        self.verify(len(cores), "Can't find enough cores")

        server_cmd = server_cmd_fmt % (
            self.server_app, utils.create_mask(
                cores[0:2]), self.dut.get_memory_channels(),
            self.dut.get_port_pci(self.dut_ports[0]),
            self.dut.get_port_pci(self.dut_ports[1]), node_num, hex(flow_num))

        # create table may need few minutes
        self.dut.send_expect(server_cmd, "Finished Process Init", timeout=240)

        node_sessions = []
        for node in range(node_num):
            node_cmd = node_cmd_fmt % (self.node_app,
                                       utils.create_mask([cores[2 + node]]),
                                       self.dut.get_memory_channels(), node)
            node_session = self.dut.new_session(suite="node%d" % node)
            node_sessions.append(node_session)
            node_session.send_expect(node_cmd,
                                     "Finished Process Init",
                                     timeout=30)

        _, pps = self.tester.traffic_generator_throughput(tgen_input, delay=10)

        for node_session in node_sessions:
            node_session.send_expect("^C", "#")
            self.dut.close_session(node_session)

        self.dut.send_expect("^C", "#")

        pps /= 1000000.0
        return pps
Exemple #14
0
    def test_multiprocess_simple_mpapplicationstartup(self):
        """
        Test use of Auto for Application Startup.
        """

        # Send message from secondary to primary (auto process type)
        cores = self.dut.get_core_list('1S/2C/1T')
        coremask = utils.create_mask(cores)
        out = self.dut.send_expect(
            "./examples/multi_process/simple_mp/%s/simple_mp -n 1 -c %s --proc-type=auto "
            % (self.target, coremask), "Finished Process Init", 100)
        self.verify("EAL: Auto-detected process type: PRIMARY" in out,
                    "The type of process (PRIMARY) was not detected properly")
        time.sleep(20)
        coremask = hex(int(coremask, 16) * 0x100).rstrip("L")
        out = self.session_secondary.send_expect(
            "./examples/multi_process/simple_mp/%s/simple_mp -n 1 -c %s --proc-type=auto"
            % (self.target, coremask), "Finished Process Init", 100)
        self.verify(
            "EAL: Auto-detected process type: SECONDARY" in out,
            "The type of process (SECONDARY) was not detected properly")

        self.session_secondary.send_expect("send hello_primary", ">")
        out = self.dut.get_session_output()
        self.session_secondary.send_expect("quit", "# ")
        self.dut.send_expect("quit", "# ")
        self.verify("Received 'hello_primary'" in out,
                    "Message not received on primary process")

        # Send message from primary to secondary (auto process type)
        cores = self.dut.get_core_list('1S/2C/1T')
        coremask = utils.create_mask(cores)
        out = self.session_secondary.send_expect(
            "./examples/multi_process/simple_mp/%s/simple_mp -n 1 -c %s --proc-type=auto"
            % (self.target, coremask), "Finished Process Init", 100)
        self.verify("EAL: Auto-detected process type: PRIMARY" in out,
                    "The type of process (PRIMARY) was not detected properly")
        time.sleep(20)
        coremask = hex(int(coremask, 16) * 0x100).rstrip("L")
        out = self.dut.send_expect(
            "./examples/multi_process/simple_mp/%s/simple_mp -n 1 -c %s --proc-type=auto"
            % (self.target, coremask), "Finished Process Init", 100)
        self.verify(
            "EAL: Auto-detected process type: SECONDARY" in out,
            "The type of process (SECONDARY) was not detected properly")
        self.session_secondary.send_expect("send hello_secondary", ">", 100)
        out = self.dut.get_session_output()
        self.session_secondary.send_expect("quit", "# ")
        self.dut.send_expect("quit", "# ")

        self.verify("Received 'hello_secondary'" in out,
                    "Message not received on primary process")
Exemple #15
0
 def set_up_all(self):
     """
     Run at the start of each test suite.
     """
     self.frame_sizes = [64, 128, 256, 512, 1024, 1518]
     self.core_config = "1S/5C/1T"
     self.dut_ports = self.dut.get_ports()
     self.ports_socket = self.dut.get_numa_id(self.dut_ports[0])
     self.core_list = self.dut.get_core_list(self.core_config,
                                             socket=self.ports_socket)
     self.core_list_user = self.core_list[0:2]
     self.core_list_host = self.core_list[2:5]
     self.core_mask_user = utils.create_mask(self.core_list_user)
     self.core_mask_host = utils.create_mask(self.core_list_host)
Exemple #16
0
    def test_link_stats(self):
        """
        port link stats test
        """
        if self.kdriver == "fm10k":
            print utils.RED("RRC not support\n")
            return

        self.pmdout.start_testpmd("Default",
                                  "--portmask=%s --port-topology=loop" %
                                  utils.create_mask(self.ports),
                                  socket=self.ports_socket)
        self.dut.send_expect("set fwd mac", "testpmd>")
        self.dut.send_expect("start", "testpmd>")

        ports_num = len(self.ports)
        # link down test
        for i in range(ports_num):
            self.dut.send_expect("set link-down port %d" % i, "testpmd>")
        # leep few seconds for NIC link status update
        time.sleep(5)
        self.check_ports(status=False)

        # link up test
        for j in range(ports_num):
            self.dut.send_expect("set link-up port %d" % j, "testpmd>")
        time.sleep(5)
        self.check_ports(status=True)
        self.check_forwarding()
Exemple #17
0
    def test_change_numberrxdtxdaftercycle(self):
        """
        Change the Number of rxd/txd.
        """
        self.pmdout.start_testpmd("Default",
                                  "--portmask=%s --port-topology=loop" %
                                  utils.create_mask(self.ports),
                                  socket=self.ports_socket)

        self.dut.send_expect("port stop all", "testpmd> ", 100)
        self.dut.send_expect("port config all rxd 1024", "testpmd> ")
        self.dut.send_expect("port config all txd 1024", "testpmd> ")
        self.dut.send_expect("set fwd mac", "testpmd>")
        self.dut.send_expect("port start all", "testpmd> ", 100)
        out = self.dut.send_expect("show config rxtx", "testpmd> ")
        self.verify("RX desc=1024" in out,
                    "RX descriptor not reconfigured properly")
        self.verify("TX desc=1024" in out,
                    "TX descriptor not reconfigured properly")
        self.dut.send_expect("start", "testpmd> ")
        self.check_forwarding()

        self.dut.send_expect("stop", "testpmd> ")
        self.dut.send_expect("port stop all", "testpmd> ", 100)
        self.dut.send_expect("port start all", "testpmd> ", 100)
        out = self.dut.send_expect("show config rxtx", "testpmd> ")
        self.verify("RX desc=1024" in out,
                    "RX descriptor not reconfigured properly")
        self.verify("TX desc=1024" in out,
                    "TX descriptor not reconfigured properly")
        self.dut.send_expect("start", "testpmd> ")
        self.check_forwarding()
Exemple #18
0
    def test_stress_test(self):
        """
        Start/stop stress test.
        """
        stress_iterations = 10

        self.pmdout.start_testpmd("Default",
                                  "--portmask=%s  --port-topology=loop" %
                                  utils.create_mask(self.ports),
                                  socket=self.ports_socket)

        tgenInput = []
        for port in self.ports:
            dmac = self.dut.get_mac_address(port)
            self.tester.scapy_append(
                'wrpcap("test%d.pcap",[Ether(src="02:00:00:00:00:0%d",dst=%s)/IP()/UDP()/()])'
                % (port, port, dmac))
            tgenInput.append(
                (self.tester.get_local_port(port),
                 self.tester.get_local_port(port), "test%d.pcap" % port))
        for _ in range(stress_iterations):
            self.dut.send_expect("port stop all", "testpmd> ", 100)
            self.dut.send_expect("set fwd mac", "testpmd>")
            self.dut.send_expect("port start all", "testpmd> ", 100)
            self.dut.send_expect("start", "testpmd> ")
            self.check_forwarding()
            self.dut.send_expect("stop", "testpmd> ")

        self.dut.send_expect("quit", "# ")
Exemple #19
0
    def test_multiple_ports(self):
        """
        Check distributor app work fine with multiple ports
        """
        self.verify(len(self.dut_ports) >= 2, "Not enough ports")
        cmd_fmt = "%s -c %s -n %d -w %s -w %s -- -p 0x3"
        socket = self.dut.get_numa_id(self.dut_ports[0])
        cores = self.dut.get_core_list("1S/%dC/1T" % (2 + 4), socket)

        cmd = cmd_fmt % (self.app, utils.create_mask(cores),
                         self.dut.get_memory_channels(),
                         self.dut.get_port_pci(self.dut_ports[0]),
                         self.dut.get_port_pci(self.dut_ports[1]))

        self.dut.send_expect(cmd, "doing packet RX", timeout=30)

        tx_port = self.tester.get_local_port(self.dut_ports[0])
        rx_port = self.tester.get_local_port(self.dut_ports[1])
        tgen_input = [(tx_port, rx_port)]
        self.tester.check_random_pkts(tgen_input, pktnum=256, seq_check=True)

        tgen_input = [(rx_port, tx_port)]
        self.tester.check_random_pkts(tgen_input, pktnum=256, seq_check=True)

        self.dut.send_expect("^C", "#")
Exemple #20
0
    def loss(self, input_sequences, input_lengths, output_sequences, output_lengths, weight_decay):
        # Shift the presented output sequences by 1 position by prepending the last input token and removing the last output token
        last_inputs = input_sequences[input_lengths - 1, T.arange(input_sequences[0].shape[0])].reshape((1, input_sequences[0].shape[0]))
        presented_sequences = T.concatenate([last_inputs, output_sequences[:-1]])

        # Predict output sequence
        predicted_sequences = self.forward(input_sequences, input_lengths, presented_sequences)
        predicted_sequences_hard = T.argmax(predicted_sequences, -1)

        timesteps = predicted_sequences.shape[0]
        batch_size = predicted_sequences.shape[1]
        dimensionality = predicted_sequences.shape[2]

        # Create to masks to reshape the predictions and output sequences taking into account sentence lengths
        mask = utils.create_mask(output_lengths, timesteps, columns=False).T

        # reshape into vecor using mask
        reshaped_predictions = predicted_sequences[mask.nonzero()]
        reshaped_targets = output_sequences[mask.nonzero()]

        loss = self.loss_function(reshaped_predictions, reshaped_targets) + self.l2(weight_decay)

        accuracy = T.mean(T.eq(predicted_sequences_hard, output_sequences))

        return loss, accuracy
Exemple #21
0
    def test_send_packets_with_one_device(self):
        in_pcap = 'in_pmdpcap.pcap'
        out_pcap = '/tmp/out_pmdpcap.pcap'

        two_cores = self.dut.get_core_list("1S/2C/1T")
        core_mask = utils.create_mask(two_cores)

        self.create_pcap_file(in_pcap, TestPmdPcap.pcap_file_sizes[0])
        self.dut.session.copy_file_to(in_pcap)

        command = ("./{}/app/testpmd -c {} -n {} " +
                   "--vdev=eth_pcap0,rx_pcap={},tx_pcap={} " +
                   "-- -i --port-topology=chained --no-flush-rx")

        self.dut.send_expect(
            command.format(self.target, core_mask, self.memory_channel,
                           TestPmdPcap.dut_pcap_files_path + in_pcap,
                           out_pcap), 'testpmd> ', 15)

        self.dut.send_expect('start', 'testpmd> ')
        sleep(2)
        self.dut.send_expect('stop', 'testpmd> ')
        self.dut.send_expect('quit', '# ')

        self.check_pcap_files(TestPmdPcap.dut_pcap_files_path + in_pcap,
                              out_pcap, TestPmdPcap.pcap_file_sizes[0])
Exemple #22
0
    def set_up_all(self):
        """
        Run at the start of each test suite.
        Whitelist Prerequisites:
            Two Ports
            testpmd can normally started
        """
        self.frames_to_send = 1
        # Based on h/w type, choose how many ports to use
        self.dutPorts = self.dut.get_ports()
        # Verify that enough ports are available
        self.verify(len(self.dutPorts) >= 1, "Insufficient ports")
        portMask = utils.create_mask(self.dutPorts[:1])

        self.pmdout = PmdOutput(self.dut)
        self.pmdout.start_testpmd("Default", "--portmask=%s" % portMask)
        self.dut.send_expect("set verbose 1", "testpmd> ")
        self.dut.send_expect("set fwd rxonly", "testpmd> ")
        self.dut.send_expect("start", "testpmd> ")

        # get dest address from self.target port
        out = self.dut.send_expect("show port info %d" % self.dutPorts[0], "testpmd> ")

        self.dest = self.dut.get_mac_address(self.dutPorts[0])
        mac_scanner = r"MAC address: (([\dA-F]{2}:){5}[\dA-F]{2})"

        ret = utils.regexp(out, mac_scanner)
        self.verify(ret is not None, "MAC address not found")
        self.verify(cmp(ret.lower(), self.dest) == 0, "MAC address wrong")

        self.max_mac_addr = utils.regexp(out, "Maximum number of MAC addresses: ([0-9]+)")
Exemple #23
0
    def set_up_all(self):
        """
        Run at the start of each test suite.

        PMD prerequisites.
        """

        # Check for port availability
        self.needed_ports = {"niantic": 2,
                             "I217V": 1,
                             "I217LM": 1,
                             "I218V": 1,
                             "I218LM": 1}
        self.dut_ports = self.dut.get_ports()
        self.verify(len(self.dut_ports) >= self.needed_ports[self.nic],
                    "Insufficient ports for speed testing")

        out = self.dut.build_dpdk_apps("./examples/ip_pipeline")
        self.verify("Error" not in out, "Compilation error")

        self.ports_mask = utils.create_mask(
            [self.dut_ports[0], self.dut_ports[1]])
        self.coremask = "0x3e"  # IP Pipeline app requires FIVE cores

        self.dut.setup_memory(4096)
Exemple #24
0
    def test_multiprocess_simple_mploadtest(self):
        """
        Load test of Simple MP application.
        """

        cores = self.dut.get_core_list('1S/2C/1T')
        coremask = utils.create_mask(cores)
        self.session_secondary.send_expect(
            "./examples/multi_process/simple_mp/%s/simple_mp -n 1 -c %s --proc-type=primary"
            % (self.target, coremask), "Finished Process Init", 100)
        time.sleep(20)
        coremask = hex(int(coremask, 16) * 0x100).rstrip("L")
        self.dut.send_expect(
            "./examples/multi_process/simple_mp/%s/simple_mp -n 1 -c %s --proc-type=secondary"
            % (self.target, coremask), "Finished Process Init", 100)
        stringsSent = 0
        for line in open('/usr/share/dict/words', 'r').readlines():
            line = line.split('\n')[0]
            self.dut.send_expect("send %s" % line, ">")
            stringsSent += 1
            if stringsSent == 3:
                break

        time.sleep(5)
        self.dut.send_expect("quit", "# ")
        self.session_secondary.send_expect("quit", "# ")
 def set_up_all(self):
     """
     Run at the start of each test suite.
     Nothing to do here.
     """
     cores = self.dut.get_core_list("all")
     self.coremask = utils.create_mask(cores)
Exemple #26
0
 def launch_vhost_sample(self):
     #
     # Launch the vhost sample with different parameters
     #
     self.coremask = utils.create_mask(self.cores)
     self.vhostapp_testcmd = self.vhost_test % (
         self.coremask, self.memory_channel, self.jumbo, self.zero_copy,
         self.vm2vm)
     # Clean and prepare the vhost cuse modules
     self.dut.send_expect("rm -rf /dev/vhost-net", "#", 20)
     self.dut.send_expect("modprobe fuse", "#", 20)
     self.dut.send_expect("modprobe cuse", "#", 20)
     self.dut.send_expect("rmmod eventfd_link", "#", 20)
     self.dut.send_expect(
         "insmod lib/librte_vhost/eventfd_link/eventfd_link.ko", "#", 20)
     self.dut.send_expect(self.vhostapp_testcmd, "# ", 40)
     time.sleep(30)
     try:
         print "Launch vhost sample:"
         self.dut.session.copy_file_from("/root/dpdk/vhost.out")
         fp = open('./vhost.out', 'r')
         out = fp.read()
         fp.close()
         if "Error" in out:
             raise Exception("Launch vhost sample failed")
         else:
             print "Launch vhost sample finished"
     except Exception as e:
         print utils.RED("Failed to launch vhost sample: %s" % str(e))
Exemple #27
0
    def set_up_all(self):

        self.dut_ports = self.dut.get_ports(self.nic)
        self.verify(len(self.dut_ports) >= 1, "Insufficient ports")
        self.vm0 = None
        self.env_done = False

        self.port = self.dut_ports[0]
        self.vm_port = 0
        cores = self.dut.get_core_list("1S/1C/1T")
        self.port_mask = utils.create_mask([self.port])

        # set vf assign method and vf driver
        self.dut.send_expect('modprobe vfio-pci', '#')
        self.vf_driver = self.get_suite_cfg()['vf_driver']
        if self.vf_driver is None:
            self.vf_driver = 'pci-stub'
        self.verify(self.vf_driver in self.supported_vf_driver,
                    "Unspported vf driver")
        if self.vf_driver == 'pci-stub':
            self.vf_assign_method = 'pci-assign'
        else:
            self.vf_assign_method = 'vfio-pci'
            self.dut.send_expect('modprobe vfio-pci', '#')

        # enable tester mtu
        tester_port = self.tester.get_local_port(self.port)
        self.netobj = self.tester.ports_info[tester_port]['port']
        self.netobj.enable_jumbo(framesize=ETHER_JUMBO_FRAME_MTU + 100)
    def set_up_all(self):
        """
        Run at the start of each test suite.
        """
        self.dut_ports = self.dut.get_ports(self.nic)
        self.verify(len(self.dut_ports) >= 2, "Insufficient ports")
        cores = self.dut.get_core_list("1S/4C/1T")
        self.coremask = utils.create_mask(cores)
        self.portmask = utils.create_mask(self.dut_ports)

        self.path = "./examples/link_status_interrupt/build/link_status_interrupt"

        # build sample app
        out = self.dut.build_dpdk_apps("./examples/link_status_interrupt")
        self.verify("Error" not in out, "compilation error 1")
        self.verify("No such file" not in out, "compilation error 2")
Exemple #29
0
    def test_all_cores_coremask(self):
        """
        Check coremask parsing for all the cores at once.
        """

        available_max_lcore = self.get_available_max_lcore()

        core_mask = utils.create_mask(self.all_cores[:available_max_lcore - 1])

        first_core = self.all_cores[0]

        command = command_line % (self.target, core_mask, self.mem_channel)

        out = self.dut.send_expect(command, "RTE>>", 10)
        self.verify("EAL: Master lcore %s is ready" % first_core in out,
                    "Core %s not ready" % first_core)

        self.verify("EAL: Detected lcore %s as core" % first_core in out,
                    "Core %s not detected" % first_core)

        for core in self.all_cores[1:available_max_lcore - 1]:
            self.verify("EAL: lcore %s is ready" % core in out,
                        "Core %s not ready" % core)

            self.verify("EAL: Detected lcore %s as core" % core in out,
                        "Core %s not detected" % core)

        self.dut.send_expect("quit", "# ", 10)
Exemple #30
0
    def test_timer_callbacks_verify(self):
        """
        Timer callbacks running on targeted cores
        """

        # get the mask for the first core
        cores = self.dut.get_core_list('1S/1C/1T')
        coreMask = utils.create_mask(cores)

        # run timer on the background
        cmdline = "./examples/timer/build/app/timer -n 1 -c " + coreMask + " &"

        self.dut.send_expect(cmdline, "# ", 1)
        time.sleep(15)
        out = self.dut.get_session_output()
        self.dut.send_expect("killall timer", "# ", 5)

        # verify timer0
        utils.regexp(out, r'timer0_cb\(\) on lcore (\d+)')
        pat = re.compile(r'timer0_cb\(\) on lcore (\d+)')
        match = pat.findall(out)
        self.verify(match or match[0] == 0, "timer0 error")

        # verify timer1
        pat = re.compile(r'timer1_cb\(\) on lcore (\d+)')
        matchlist = sorted(pat.findall(out))
        self.verify(cmp(list(set(matchlist)), cores) == 0, "timer1 error")
Exemple #31
0
    def notest_port_testing(self):
        """
        Check port forwarding.
        """
        # the cases use the first two ports
        print("***set port_mask")
        port_mask = utils.create_mask([self.dut_ports[0], self.dut_ports[1]])
        print("***port_mask", port_mask)
        self.dut.send_expect(
            "./examples/l2fwd/build/app/l2fwd -n 1 -c f -- -q 8 -p %s  &" %
            port_mask, "L2FWD: entering main loop", 60)

        for i in [0, 1]:
            tx_port = self.tester.get_local_port(self.dut_ports[i])
            rx_port = self.tester.get_local_port(self.dut_ports[1 - i])

            tx_interface = self.tester.get_interface(tx_port)
            rx_interface = self.tester.get_interface(rx_port)

            self.tester.scapy_background()
            self.tester.scapy_append('p = sniff(iface="%s", count=1)' %
                                     rx_interface)
            self.tester.scapy_append('number_packets=len(p)')
            self.tester.scapy_append('RESULT = str(number_packets)')

            self.tester.scapy_foreground()
            self.tester.scapy_append(
                'sendp([Ether()/IP()/UDP()/("X"*46)], iface="%s")' %
                tx_interface)

            self.tester.scapy_execute()
            number_packets = self.tester.scapy_get_result()
            self.verify(number_packets == "1", "Failed to switch L2 frame")

        self.quit_l2fwd()