コード例 #1
0
    def base_test(self, cl, agfi, afi, install_edma_driver, slots_to_test,
                  option_tag):
        if len(slots_to_test):
            # Make sure that the requested slots are valid for this instance type
            for slot in slots_to_test:
                assert slot >= 0 and slot < self.num_slots
        else:
            slots_to_test = range(self.num_slots)

        # Make sure that the test can be built first
        logger.info("Building runtime software")
        (rc, stdout_lines, stderr_lines) = self.run_cmd(
            "cd {}/hdk/cl/examples/{}/software/runtime && make -f Makefile SDK_DIR={}/sdk"
            .format(self.WORKSPACE, cl, self.WORKSPACE))
        assert rc == 0, "Runtime software build failed."

        # Load the AFI onto all available FPGAs
        # This is required for the EDMA driver to correctly install for all slots
        # We do this because otherwise installation on slots 1-7 doesn't seem to work.
        logger.info("Loading the AFI into all slots")
        for slot in slots_to_test:
            self.load_agfi(cl, agfi, afi, slot)

        if install_edma_driver:
            aws_fpga_test_utils.install_edma_driver()

        for slot in slots_to_test:
            logger.info("Running runtime software on slot {}".format(slot))
            self.check_runtime_software(cl, slot)

        for slot in slots_to_test:
            self.fpga_clear_local_image(slot)
コード例 #2
0
 def test_unittest(self, driver_mode):
     aws_fpga_test_utils.install_edma_driver(mode=driver_mode)
     assert aws_fpga_test_utils.edma_driver_installed() == True
     (rc, stdout_lines, stderr_lines) = self.run_cmd(
         "cd {}/sdk/linux_kernel_drivers/edma/unit-test && ./run_unit_test.sh"
         .format(self.WORKSPACE),
         echo=True)
     assert rc == 0
コード例 #3
0
 def test_perftest(self):
     self.load_msix_workaround(slot=0)
     self.fpga_load_local_image(self.cl_dram_dma_agfi, 0)
     aws_fpga_test_utils.install_edma_driver()
     assert aws_fpga_test_utils.edma_driver_installed() == True
     (rc, stdout_lines, stderr_lines) = self.run_cmd(
         "cd {}/sdk/linux_kernel_drivers/edma/unit-test && ./run_perf_test.sh"
         .format(self.WORKSPACE),
         echo=True)
     assert rc == 0
コード例 #4
0
    def base_test(self, cl, agfi, afi, install_edma_driver, slots_to_test,
                  option_tag):
        if len(slots_to_test):
            # Make sure that the requested slots are valid for this instance type
            for slot in slots_to_test:
                assert slot >= 0 and slot < self.num_slots
        else:
            slots_to_test = range(self.num_slots)

        # Make sure that the test can be built first
        logger.info("Building runtime software")
        (rc, stdout_lines, stderr_lines) = self.run_cmd(
            "cd {}/hdk/cl/examples/{}/software/runtime && make -f Makefile SDK_DIR={}/sdk"
            .format(self.WORKSPACE, cl, self.WORKSPACE))
        assert rc == 0, "Runtime software build failed."

        if install_edma_driver:
            # Uninstall drivers just in case a previous test left them installed
            aws_fpga_test_utils.remove_edma_driver()
            aws_fpga_test_utils.remove_xdma_driver()

            # Load the AFI onto all available FPGAs
            # This is required for the EDMA driver to correctly installfor all slots
            # We do this because otherwise installation on slots 1-7 doesn't seem to work.
            logger.info(
                "Loading the AFI into all slots before installing EDMA driver")
            for slot in range(self.num_slots):
                self.load_agfi(cl, agfi, afi, slot)

            aws_fpga_test_utils.install_edma_driver()
            # Make sure that driver was installed on all slots
            for slot in range(self.num_slots):
                device_name = "/dev/edma{}_queue_0".format(slot)
                assert os.path.exists(
                    device_name
                ), "EDMA driver not installed on slot {}".format(slot)
        else:
            # Load the AFI onto all the slots to be tested
            for slot in slots_to_test:
                self.load_agfi(cl, agfi, afi, slot)

        for slot in slots_to_test:
            logger.info("Running runtime software on slot {}".format(slot))
            self.check_runtime_software(cl, slot)

        if install_edma_driver:
            logger.info("Removing EDMA driver")
            aws_fpga_test_utils.remove_edma_driver()

            for slot in range(self.num_slots):
                self.fpga_clear_local_image(slot)
        else:
            for slot in slots_to_test:
                self.fpga_clear_local_image(slot)
コード例 #5
0
    def test_fio_read_benchmark(self, driver_mode):
        aws_fpga_test_utils.install_edma_driver(mode=driver_mode)
        assert aws_fpga_test_utils.edma_driver_installed() == True

        (rc, stdout_lines, stderr_lines) = self.run_cmd("sudo {} {}".format(
            self.get_fio_tool_run_script(),
            self.get_fio_read_benchmark_script(driver='edma')),
                                                        echo=True,
                                                        check=False)
        if rc != 0:
            logger.error("FIO edma read benchmark test failed")
            # Create some diagnostic information
            # Debug is problematic for intermittent problems because the instance is terminated when the tests finish.
            self.run_cmd("sudo fpga-describe-local-image-slots",
                         check=False,
                         echo=True)
            for slot in range(self.num_slots):
                self.run_cmd(
                    "sudo fpga-describe-local-image -S {} -M".format(slot),
                    check=False,
                    echo=True)
        assert rc == 0