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