Fix compression related tests

Tests for chunked backup drivers are using a randomly generated file to
test the compression, which means that in most cases due to the
randomization the generated file is bigger than the original one, so we
end up doing a non compressed backup, which defeats the purpose of the
tests.  More so when you want to test the decompression, since the
backup won't be compressed and there won't be any decompression.

To fix this we generate, for those cases, a simple file that can always
be effectively compressed.

Change-Id: Idbfeeb2604bc84dc0a17c633b782000d94665bbe
This commit is contained in:
Gorka Eguileor
2018-01-16 12:42:30 +01:00
parent 335c55766f
commit 8f3dfd7299
3 changed files with 36 additions and 10 deletions
@@ -143,6 +143,12 @@ class GoogleBackupDriverTestCase(test.TestCase):
backup.create()
return backup
def _write_effective_compression_file(self, data_size):
"""Ensure file contents can be effectively compressed."""
self.volume_file.seek(0)
self.volume_file.write(bytes([65] * data_size))
self.volume_file.seek(0)
def setUp(self):
super(GoogleBackupDriverTestCase, self).setUp()
self.flags(backup_gcs_bucket='gcscinderbucket')
@@ -154,8 +160,10 @@ class GoogleBackupDriverTestCase(test.TestCase):
self.addCleanup(self.volume_file.close)
# Remove tempdir.
self.addCleanup(shutil.rmtree, self.temp_dir)
self.size_volume_file = 0
for _i in range(0, 64):
self.volume_file.write(os.urandom(units.Ki))
self.size_volume_file += 1024
@gcs_client
def test_backup(self):
@@ -183,7 +191,7 @@ class GoogleBackupDriverTestCase(test.TestCase):
backup = self._create_backup_db_entry(volume_id=volume_id)
self.flags(backup_compression_algorithm='bz2')
service = google_dr.GoogleBackupDriver(self.ctxt)
self.volume_file.seek(0)
self._write_effective_compression_file(self.size_volume_file)
service.backup(backup, self.volume_file)
@gcs_client
@@ -192,7 +200,7 @@ class GoogleBackupDriverTestCase(test.TestCase):
backup = self._create_backup_db_entry(volume_id=volume_id)
self.flags(backup_compression_algorithm='zlib')
service = google_dr.GoogleBackupDriver(self.ctxt)
self.volume_file.seek(0)
self._write_effective_compression_file(self.size_volume_file)
service.backup(backup, self.volume_file)
@gcs_client
@@ -143,6 +143,12 @@ class BackupNFSSwiftBasedTestCase(test.TestCase):
}
return db.backup_create(self.ctxt, backup)['id']
def _write_effective_compression_file(self, data_size):
"""Ensure file contents can be effectively compressed."""
self.volume_file.seek(0)
self.volume_file.write(bytes([65] * data_size))
self.volume_file.seek(0)
def setUp(self):
super(BackupNFSSwiftBasedTestCase, self).setUp()
@@ -162,8 +168,10 @@ class BackupNFSSwiftBasedTestCase(test.TestCase):
return_value=mock_remotefsclient)
# Remove tempdir.
self.addCleanup(shutil.rmtree, self.temp_dir)
self.size_volume_file = 0
for _i in range(0, 32):
self.volume_file.write(os.urandom(1024))
self.size_volume_file += 1024
def test_backup_uncompressed(self):
volume_id = fake.VOLUME_ID
@@ -179,7 +187,7 @@ class BackupNFSSwiftBasedTestCase(test.TestCase):
self._create_backup_db_entry(volume_id=volume_id)
self.flags(backup_compression_algorithm='bz2')
service = nfs.NFSBackupDriver(self.ctxt)
self.volume_file.seek(0)
self._write_effective_compression_file(self.size_volume_file)
backup = objects.Backup.get_by_id(self.ctxt, fake.BACKUP_ID)
service.backup(backup, self.volume_file)
@@ -188,7 +196,7 @@ class BackupNFSSwiftBasedTestCase(test.TestCase):
self._create_backup_db_entry(volume_id=volume_id)
self.flags(backup_compression_algorithm='zlib')
service = nfs.NFSBackupDriver(self.ctxt)
self.volume_file.seek(0)
self._write_effective_compression_file(self.size_volume_file)
backup = objects.Backup.get_by_id(self.ctxt, fake.BACKUP_ID)
service.backup(backup, self.volume_file)
@@ -569,10 +577,11 @@ class BackupNFSSwiftBasedTestCase(test.TestCase):
self._create_backup_db_entry(volume_id=volume_id)
self.flags(backup_compression_algorithm='bz2')
self.flags(backup_file_size=(1024 * 3))
file_size = 1024 * 3
self.flags(backup_file_size=file_size)
self.flags(backup_sha_block_size_bytes=1024)
service = nfs.NFSBackupDriver(self.ctxt)
self.volume_file.seek(0)
self._write_effective_compression_file(file_size)
backup = objects.Backup.get_by_id(self.ctxt, fake.BACKUP_ID)
service.backup(backup, self.volume_file)
@@ -587,10 +596,11 @@ class BackupNFSSwiftBasedTestCase(test.TestCase):
self._create_backup_db_entry(volume_id=volume_id)
self.flags(backup_compression_algorithm='zlib')
self.flags(backup_file_size=(1024 * 3))
file_size = 1024 * 3
self.flags(backup_file_size=file_size)
self.flags(backup_sha_block_size_bytes=1024)
service = nfs.NFSBackupDriver(self.ctxt)
self.volume_file.seek(0)
self._write_effective_compression_file(file_size)
backup = objects.Backup.get_by_id(self.ctxt, fake.BACKUP_ID)
service.backup(backup, self.volume_file)
@@ -91,6 +91,12 @@ class BackupSwiftTestCase(test.TestCase):
}
return db.backup_create(self.ctxt, backup)['id']
def _write_effective_compression_file(self, data_size):
"""Ensure file contents can be effectively compressed."""
self.volume_file.seek(0)
self.volume_file.write(bytes([65] * data_size))
self.volume_file.seek(0)
def setUp(self):
super(BackupSwiftTestCase, self).setUp()
service_catalog = [{u'type': u'object-store', u'name': u'swift',
@@ -111,8 +117,10 @@ class BackupSwiftTestCase(test.TestCase):
self.addCleanup(self.volume_file.close)
# Remove tempdir.
self.addCleanup(shutil.rmtree, self.temp_dir)
self.size_volume_file = 0
for _i in range(0, 64):
self.volume_file.write(os.urandom(1024))
self.size_volume_file += 1024
notify_patcher = mock.patch(
'cinder.volume.utils.notify_about_backup_usage')
@@ -303,7 +311,7 @@ class BackupSwiftTestCase(test.TestCase):
self._create_backup_db_entry(volume_id=volume_id)
self.flags(backup_compression_algorithm='bz2')
service = swift_dr.SwiftBackupDriver(self.ctxt)
self.volume_file.seek(0)
self._write_effective_compression_file(self.size_volume_file)
backup = objects.Backup.get_by_id(self.ctxt, fake.BACKUP_ID)
service.backup(backup, self.volume_file)
@@ -312,7 +320,7 @@ class BackupSwiftTestCase(test.TestCase):
self._create_backup_db_entry(volume_id=volume_id)
self.flags(backup_compression_algorithm='zlib')
service = swift_dr.SwiftBackupDriver(self.ctxt)
self.volume_file.seek(0)
self._write_effective_compression_file(self.size_volume_file)
backup = objects.Backup.get_by_id(self.ctxt, fake.BACKUP_ID)
service.backup(backup, self.volume_file)