1
0
Fork 0
mirror of https://github.com/borgbackup/borg.git synced 2025-03-04 10:39:50 +00:00

Merge pull request #7410 from snsmac/backport/autocompressortests

"auto" compressor tests: don't assume a specific size (backport to 1.2-maint)
This commit is contained in:
TW 2023-03-05 17:22:45 +01:00 committed by GitHub
commit ca1fea37a6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2521,21 +2521,11 @@ class ArchiverTestCase(ArchiverTestCaseBase):
def test_compression_zlib_compressible(self): def test_compression_zlib_compressible(self):
size, csize = self._get_sizes('zlib', compressible=True) size, csize = self._get_sizes('zlib', compressible=True)
assert csize < size * 0.1 assert csize < size * 0.1
assert csize == 35
def test_compression_zlib_uncompressible(self): def test_compression_zlib_uncompressible(self):
size, csize = self._get_sizes('zlib', compressible=False) size, csize = self._get_sizes('zlib', compressible=False)
assert csize >= size assert csize >= size
def test_compression_auto_compressible(self):
size, csize = self._get_sizes('auto,zlib', compressible=True)
assert csize < size * 0.1
assert csize == 35 # same as compression 'zlib'
def test_compression_auto_uncompressible(self):
size, csize = self._get_sizes('auto,zlib', compressible=False)
assert csize == size + 3 # same as compression 'none'
def test_compression_lz4_compressible(self): def test_compression_lz4_compressible(self):
size, csize = self._get_sizes('lz4', compressible=True) size, csize = self._get_sizes('lz4', compressible=True)
assert csize < size * 0.1 assert csize < size * 0.1
@ -2560,6 +2550,28 @@ class ArchiverTestCase(ArchiverTestCaseBase):
size, csize = self._get_sizes('zstd', compressible=False) size, csize = self._get_sizes('zstd', compressible=False)
assert csize == size + 3 # same as compression 'none' assert csize == size + 3 # same as compression 'none'
def test_compression_auto_compressible(self):
# this is testing whether the "auto" meta-compressor behaves as expected:
# - it checks whether the data is compressible (detector is the lz4 compressor)
# - as the data is compressible, it runs the "expensive" zlib compression on it
# - it returns whatever is shortest, either the lz4 compressed data or the zlib compressed data.
auto_size, auto_csize = self._get_sizes('auto,zlib', compressible=True)
self.cmd('delete', self.repository_location)
zlib_size, zlib_csize = self._get_sizes('zlib', compressible=True)
self.cmd('delete', self.repository_location)
lz4_size, lz4_csize = self._get_sizes('lz4', compressible=True)
assert auto_size == zlib_size == lz4_size
assert auto_csize < auto_size * 0.1 # it did compress!
smallest_csize = min(zlib_csize, lz4_csize)
assert auto_csize == smallest_csize
def test_compression_auto_uncompressible(self):
# this is testing whether the "auto" meta-compressor chooses the "none" compression (storing the
# data "as is" with just the 3 bytes header) if all else would result in something bigger.
size, csize = self._get_sizes('auto,zlib', compressible=False)
assert csize >= size
assert csize == size + 3 # same as compression 'none'
def test_change_passphrase(self): def test_change_passphrase(self):
self.cmd('init', '--encryption=repokey', self.repository_location) self.cmd('init', '--encryption=repokey', self.repository_location)
os.environ['BORG_NEW_PASSPHRASE'] = 'newpassphrase' os.environ['BORG_NEW_PASSPHRASE'] = 'newpassphrase'