Exemplo n.º 1
0
    def test_clear_local_image(self):
        for slot in range(self.num_slots):
            # Test clearing already cleared
            self.fpga_clear_local_image(slot)
            (rc, stdout, stderr) = self.run_cmd("sudo fpga-clear-local-image -S {}".format(slot), echo=True)
            assert len(stdout) == 3
            assert len(stderr) == 1
            assert stdout[0] == 'AFI          {}       none                    cleared           1        ok               0       {}'.format(slot, self.shell_version)
            assert stdout[1] == 'AFIDEVICE    {}       0x1d0f      0x1042      {}'.format(slot, self.slot2device[slot])

            # -A (async)
            (rc, stdout, stderr) = self.run_cmd("sudo fpga-clear-local-image -S {} -A".format(slot), echo=True)
            assert len(stdout) == 1
            assert len(stderr) == 1

            # Clear again immediately. It should fail because busy
            (rc, stdout, stderr) = self.run_cmd("sudo fpga-clear-local-image -S {} -A".format(slot), echo=True, check=False)
            assert rc != 0
            assert len(stdout) == 2
            assert len(stderr) == 1
            assert stdout[0] == 'Error: (3) busy'

            # Poll for cleared
            while True:
                fpgaLocalImage = aws_fpga_test_utils.fpga_describe_local_image(slot)
                logger.info('status={}'.format(fpgaLocalImage.statusName))
                if fpgaLocalImage.statusName != 'cleared':
                    time.sleep(1)
                    continue
                (rc, stdout, stderr) = self.run_cmd("sudo fpga-describe-local-image -S {}".format(slot), echo=True)
                assert len(stdout) == 3
                assert len(stderr) == 1
                assert stdout[0] == 'AFI          {}       none                    cleared           1        ok               0       {}'.format(slot, self.shell_version)
                assert stdout[1] == 'AFIDEVICE    {}       0x1d0f      0x1042      {}'.format(slot, self.slot2device[slot])
                break
Exemplo n.º 2
0
 def check_fpga_afi_loaded(agfi, slot):
     fpgaLocalImage = aws_fpga_test_utils.fpga_describe_local_image(slot)
     assert fpgaLocalImage.statusName == 'loaded', "{} FPGA StatusName != loaded: {}".format(agfi, fpgaLocalImage.statusName)
     assert fpgaLocalImage.statusCode == '0', "{} status code != 0: {}".format(agfi, fpgaLocalImage.statusCode)
     assert fpgaLocalImage.errorName == 'ok', "{} FPGA ErrorName != ok: {}".format(agfi, fpgaLocalImage.ErrorName)
     assert fpgaLocalImage.errorCode == '0', "{} ErrorCode != 0: {}".format(agfi, fpgaLocalImage.errorCode)
     assert fpgaLocalImage.agfi == agfi, "Expected {}, actual {}".format(agfi, fpgaLocalImage.agfi)
     return fpgaLocalImage
Exemplo n.º 3
0
    def test_load_local_image(self):
        for slot in range(self.num_slots):
            (rc, stdout, stderr) = self.run_cmd("sudo fpga-load-local-image -S {} -I {}".format(slot, self.cl_hello_world_agfi), echo=True)
            assert len(stdout) == 3
            assert len(stderr) == 1
            assert stdout[0] == "AFI          {}       {}  loaded            0        ok               0       {}".format(slot, self.cl_hello_world_agfi, self.shell_version)
            assert stdout[1] == 'AFIDEVICE    {}       0x1d0f      0xf000      {}'.format(slot, self.slot2device[slot])
            self.fpga_clear_local_image(slot)

            # -A
            (rc, stdout, stderr) = self.run_cmd("sudo fpga-load-local-image -S {} -I {} -A".format(slot, self.cl_hello_world_agfi), echo=True)
            assert len(stdout) == 1
            assert len(stderr) == 1
            # Poll for it to be loaded
            while True:
                fpgaLocalImage = aws_fpga_test_utils.fpga_describe_local_image(slot)
                logger.info('status={}'.format(fpgaLocalImage.statusName))
                if fpgaLocalImage.statusName != 'loaded':
                    time.sleep(1)
                    continue
                (rc, stdout, stderr) = self.run_cmd("sudo fpga-describe-local-image -S {}".format(slot), echo=True)
                assert len(stdout) == 3
                assert len(stderr) == 1
                assert stdout[0] == "AFI          {}       {}  loaded            0        ok               0       {}".format(slot, self.cl_hello_world_agfi, self.shell_version)
                assert stdout[1] == 'AFIDEVICE    {}       0x1d0f      0xf000      {}'.format(slot, self.slot2device[slot])
                break
            self.fpga_clear_local_image(slot)

            # -H
            (rc, stdout, stderr) = self.run_cmd("sudo fpga-load-local-image -S {} -I {} -H".format(slot, self.cl_hello_world_agfi), echo=True)
            assert len(stdout) == 5
            assert len(stderr) == 1
            assert stdout[0] == 'Type  FpgaImageSlot  FpgaImageId             StatusName    StatusCode   ErrorName    ErrorCode   ShVersion'
            assert stdout[1] == "AFI          {}       {}  loaded            0        ok               0       {}".format(slot, self.cl_hello_world_agfi, self.shell_version)
            assert stdout[2] == 'Type  FpgaImageSlot  VendorId    DeviceId    DBDF'
            assert stdout[3] == 'AFIDEVICE    {}       0x1d0f      0xf000      {}'.format(slot, self.slot2device[slot])
            self.fpga_clear_local_image(slot)

            # -F
            (rc, stdout, stderr) = self.run_cmd("sudo fpga-load-local-image -S {} -I {} -F".format(slot, self.cl_hello_world_agfi), echo=True)
            assert len(stdout) == 3
            assert len(stderr) == 1
            assert stdout[0] == "AFI          {}       {}  loaded            0        ok               0       {}".format(slot, self.cl_hello_world_agfi, self.shell_version)
            assert stdout[1] == 'AFIDEVICE    {}       0x1d0f      0xf000      {}'.format(slot, self.slot2device[slot])
            self.fpga_clear_local_image(slot)