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