def test_verify_checksum_invalid_json(self): img = {'container_format': 'ami', 'id': '42'} self.flags(checksum_base_images=True) with self._intercept_log_messages() as stream: with utils.tempdir() as tmpdir: self.flags(instances_path=tmpdir) self.flags(image_info_filename_pattern=('$instances_path/' '%(image)s.info')) fname, info_fname, testdata = self._make_checksum(tmpdir) # Checksum is invalid, and not json f = open(info_fname, 'w') f.write('banana') f.close() image_cache_manager = imagecache.ImageCacheManager() res = image_cache_manager._verify_checksum( img, fname, create_if_missing=False) self.assertFalse(res) log = stream.getvalue() # NOTE(mikal): this is a skip not a fail because the file is # present, but is not in valid json format and therefore is # skipped. self.assertNotEqual(log.find('image verification skipped'), -1)
def test_verify_checksum(self): testdata = ('OpenStack Software delivers a massively scalable cloud ' 'operating system.') img = {'container_format': 'ami', 'id': '42'} self.flags(checksum_base_images=True) with self._intercept_log_messages() as stream: with utils.tempdir() as tmpdir: self.flags(instances_path=tmpdir) self.flags(image_info_filename_pattern=('$instances_path/' '%(image)s.sha1')) fname = os.path.join(tmpdir, 'aaa') f = open(fname, 'w') f.write(testdata) f.close() # Checksum is valid f = open('%s.sha1' % fname, 'w') csum = hashlib.sha1() csum.update(testdata) f.write(csum.hexdigest()) f.close() image_cache_manager = imagecache.ImageCacheManager() res = image_cache_manager._verify_checksum(img, fname) self.assertTrue(res) # Checksum is invalid f = open('%s.sha1' % fname, 'w') f.write('banana') f.close() image_cache_manager = imagecache.ImageCacheManager() res = image_cache_manager._verify_checksum(img, fname) self.assertFalse(res) log = stream.getvalue() self.assertNotEqual(log.find('image verification failed'), -1) # Checksum file missing os.remove('%s.sha1' % fname) image_cache_manager = imagecache.ImageCacheManager() res = image_cache_manager._verify_checksum(img, fname) self.assertEquals(res, None) # Checksum requests for a file with no checksum now have the # side effect of creating the checksum self.assertTrue(os.path.exists('%s.sha1' % fname))
def test_verify_checksum(self): testdata = ('OpenStack Software delivers a massively scalable cloud ' 'operating system.') img = {'container_format': 'ami', 'id': '42'} self.flags(checksum_base_images=True) with self._intercept_log_messages() as stream: with utils.tempdir() as tmpdir: fname = os.path.join(tmpdir, 'aaa') f = open(fname, 'w') f.write(testdata) f.close() # Checksum is valid f = open('%s.sha1' % fname, 'w') csum = hashlib.sha1() csum.update(testdata) f.write(csum.hexdigest()) f.close() image_cache_manager = imagecache.ImageCacheManager() res = image_cache_manager._verify_checksum(img, fname) self.assertTrue(res) # Checksum is invalid f = open('%s.sha1' % fname, 'w') f.write('banana') f.close() image_cache_manager = imagecache.ImageCacheManager() res = image_cache_manager._verify_checksum(img, fname) self.assertFalse(res) log = stream.getvalue() self.assertNotEqual(log.find('image verification failed'), -1) # Checksum file missing os.remove('%s.sha1' % fname) image_cache_manager = imagecache.ImageCacheManager() res = image_cache_manager._verify_checksum(img, fname) self.assertEquals(res, None) # Checksum requests for a file with no checksum now have the # side effect of creating the checksum self.assertTrue(os.path.exists('%s.sha1' % fname))
def test_verify_checksum_invalid(self): img = {'container_format': 'ami', 'id': '42'} self.flags(checksum_base_images=True) with self._intercept_log_messages() as stream: with utils.tempdir() as tmpdir: self.flags(instances_path=tmpdir) self.flags(image_info_filename_pattern=('$instances_path/' '%(image)s.info')) fname, info_fname, testdata = self._make_checksum(tmpdir) # Checksum is invalid, but is in valid json f = open(info_fname, 'w') f.write('{"sha1": "banana"}') f.close() image_cache_manager = imagecache.ImageCacheManager() res = image_cache_manager._verify_checksum(img, fname) self.assertFalse(res) log = stream.getvalue() self.assertNotEqual(log.find('image verification failed'), -1)