class TestGlanceSyncImageCompare(unittest.TestCase): """Class to test compare_with_masterregion under different conditions""" def setUp(self): self.name = name = 'image1' self.owner = owner = 'owner1' size = 300000 checksum = 'fac084184af34b' self.id1 = id = '0001' self.props1 = p = {'nid': 5043, 'type': 6043, 'localprop': 8888} self.master_images = dict() self.master_images[name] = GlanceSyncImage( name, id, 'Valladolid', owner, True, checksum, size, 'active', p) self.owner2 = owner = 'owner2' self.id2 = id = '000A' self.props1 = p = {'nid': 5043, 'type': 6043, 'localprop': 8889} self.image = GlanceSyncImage( name, id, 'Burgos', owner, True, checksum, size, 'active', p) def test_compare_with_props(self): """check that images are synchronised, although some properties differ, the ones included in the set are matching""" rslt = self.image.compare_with_masterregion(self.master_images, None) self.assertEquals(rslt, '#') prop_eval = set(['nid', 'type']) r = self.image.compare_with_masterregion(self.master_images, prop_eval) self.assertEquals(r, '') def test_compare_with_ami(self): """checks with kernel_id and ramdisk_id""" prop_eval = set(['nid', 'type']) self.master_images[self.name].user_properties['kernel_id'] = 350 self.master_images[self.name].user_properties['ramdisk_id'] = 351 r = self.image.compare_with_masterregion(self.master_images, prop_eval) self.assertEquals(r, '#') # Different values of kernel_id and ramdisk_id is OK self.image.user_properties['kernel_id'] = 450 self.image.user_properties['ramdisk_id'] = 451 r = self.image.compare_with_masterregion(self.master_images, prop_eval) self.assertEquals(r, '') def test_compare_missing(self): """test when the image is missing""" self.image.name = 'image2' r = self.image.compare_with_masterregion(self.master_images, None) self.assertEquals(r, '+') def test_compare_private_region(self): """test when image exists but it is private in the region""" self.image.is_public = False r = self.image.compare_with_masterregion(self.master_images, None) self.assertEquals(r, '_') def test_compare_private_master(self): """test when image exists and is private in the master, public in region""" self.master_images[self.name].is_public = False r = self.image.compare_with_masterregion(self.master_images, None) self.assertEquals(r, '-') def test_compare_checksum(self): """test when the checksum differs""" self.image.checksum = '000000000000000' r = self.image.compare_with_masterregion(self.master_images, None) self.assertEquals(r, '!') def test_compare_status(self): """test when the image is in a wrong status""" self.image.status = 'pending' r = self.image.compare_with_masterregion(self.master_images, None) self.assertEquals(r, '$')