Ejemplo n.º 1
0
    def test_multiple_uploads():
        """ Test to make sure FDs are being closed """
        # Create image
        filename = random_file(1024)
        image = TestImage(filename, "RAW")

        for _ in xrange(2048):
            image.render_to_simg(0, 0)

        os.remove(filename)
Ejemplo n.º 2
0
    def test_multiple_uploads():
        """ Test to make sure FDs are being closed """
        # Create image
        filename = random_file(1024)
        image = TestImage(filename, "RAW")

        for _ in xrange(2048):
            image.render_to_simg(0, 0)

        os.remove(filename)
Ejemplo n.º 3
0
    def test_render_to_simg(self):
        """ Test image creation and upload """
        imglen = 1024
        priority = 1
        daddr = 12345

        # Create image
        filename = random_file(imglen)
        contents = open(filename).read()
        image = TestImage(filename, "RAW")

        # Render and examine image
        filename = image.render_to_simg(priority, daddr)
        simg = open(filename).read()
        header = get_simg_header(simg)
        self.assertEqual(header.priority, priority)
        self.assertEqual(header.imglen, imglen)
        self.assertEqual(header.daddr, daddr)
        self.assertEqual(simg[header.imgoff:], contents)
Ejemplo n.º 4
0
    def test_render_to_simg(self):
        """ Test image creation and upload """
        imglen = 1024
        priority = 1
        daddr = 12345

        # Create image
        filename = random_file(imglen)
        contents = open(filename).read()
        image = TestImage(filename, "RAW")

        # Render and examine image
        filename = image.render_to_simg(priority, daddr)
        simg = open(filename).read()
        header = get_simg_header(simg)
        self.assertEqual(header.priority, priority)
        self.assertEqual(header.imglen, imglen)
        self.assertEqual(header.daddr, daddr)
        self.assertEqual(simg[header.imgoff:], contents)
Ejemplo n.º 5
0
    def test_is_updatable(self):
        """ Test node.is_updatable method """
        for node in self.nodes:
            max_size = 12288 - 60
            filename = random_file(max_size)
            images = [
                TestImage(filename, "SOC_ELF"),
                TestImage(filename, "CDB"),
                TestImage(filename, "UBOOTENV")
            ]

            # should pass
            package = FirmwarePackage()
            package.images = images
            self.assertTrue(node.is_updatable(package))

            # should fail if the firmware version is wrong
            package = FirmwarePackage()
            package.images = images
            package.version = "ECX-31415-v0.0.0"
            self.assertFalse(node.is_updatable(package))

            # should fail if we specify a socman version
            package = FirmwarePackage()
            package.images = images
            package.required_socman_version = "0.0.1"
            self.assertFalse(node.is_updatable(package))

            # should fail if we try to upload a slot2
            package = FirmwarePackage()
            package.images = images
            package.config = "slot2"
            self.assertFalse(node.is_updatable(package))

            # should fail if we upload an image that's too large
            package = FirmwarePackage()
            package.images = [TestImage(random_file(max_size + 1), "UBOOTENV")]
            self.assertFalse(node.is_updatable(package))

            # should fail if we upload to a CDB partition that's in use
            package = FirmwarePackage()
            package.images = images
            self.assertFalse(node.is_updatable(package, partition_arg="ACTIVE"))
Ejemplo n.º 6
0
    def test_update_firmware(self):
        """ Test node.update_firmware method """
        filename = "%s/%s" % (self.work_dir, "image.bin")
        open(filename, "w").write("")

        package = FirmwarePackage()
        package.images = [
            TestImage(filename, "SOC_ELF"),
            TestImage(filename, "CDB"),
            TestImage(filename, "UBOOTENV")
        ]
        package.version = "0.0.1"

        for node in self.nodes:
            node.update_firmware(package)

            partitions = node.bmc.partitions
            unchanged_partitions = [partitions[x] for x in [0, 1, 4]]
            changed_partitions = [partitions[x] for x in [2, 3, 6]]
            ubootenv_partition = partitions[5]

            for partition in unchanged_partitions:
                self.assertEqual(partition.updates, 0)
                self.assertEqual(partition.retrieves, 0)
                self.assertEqual(partition.checks, 0)
                self.assertEqual(partition.activates, 0)

            for partition in changed_partitions:
                self.assertEqual(partition.updates, 1)
                self.assertEqual(partition.retrieves, 0)
                self.assertEqual(partition.checks, 2)
                self.assertEqual(partition.activates, 1)

            self.assertEqual(ubootenv_partition.updates, 1)
            self.assertEqual(ubootenv_partition.retrieves, 1)
            self.assertEqual(ubootenv_partition.checks, 2)
            self.assertEqual(ubootenv_partition.activates, 1)

            node.bmc.set_firmware_version.assert_called_once_with("0.0.1")