mirror of
https://github.com/borgbackup/borg.git
synced 2025-03-10 06:03:38 +00:00
fix ChunkerParams validator and tests
(cherry picked from commit 6d38530ff1
)
This commit is contained in:
parent
d1ddd57eaf
commit
067e36bccc
2 changed files with 20 additions and 14 deletions
|
@ -98,7 +98,7 @@ def ChunkerParams(s):
|
|||
params = s.strip().split(',')
|
||||
count = len(params)
|
||||
if count == 0:
|
||||
raise ValueError('no chunker params given')
|
||||
raise argparse.ArgumentTypeError('no chunker params given')
|
||||
algo = params[0].lower()
|
||||
if algo == CH_FIXED and 2 <= count <= 3: # fixed, block_size[, header_size]
|
||||
block_size = int(params[1])
|
||||
|
@ -109,9 +109,11 @@ def ChunkerParams(s):
|
|||
# or in-memory chunk management.
|
||||
# choose the block (chunk) size wisely: if you have a lot of data and you cut
|
||||
# it into very small chunks, you are asking for trouble!
|
||||
raise ValueError('block_size must not be less than 64 Bytes')
|
||||
raise argparse.ArgumentTypeError('block_size must not be less than 64 Bytes')
|
||||
if block_size > MAX_DATA_SIZE or header_size > MAX_DATA_SIZE:
|
||||
raise ValueError('block_size and header_size must not exceed MAX_DATA_SIZE [%d]' % MAX_DATA_SIZE)
|
||||
raise argparse.ArgumentTypeError(
|
||||
'block_size and header_size must not exceed MAX_DATA_SIZE [%d]' % MAX_DATA_SIZE
|
||||
)
|
||||
return algo, block_size, header_size
|
||||
if algo == 'default' and count == 1: # default
|
||||
return CHUNKER_PARAMS
|
||||
|
@ -119,14 +121,18 @@ def ChunkerParams(s):
|
|||
if algo == CH_BUZHASH and count == 5 or count == 4: # [buzhash, ]chunk_min, chunk_max, chunk_mask, window_size
|
||||
chunk_min, chunk_max, chunk_mask, window_size = (int(p) for p in params[count - 4:])
|
||||
if not (chunk_min <= chunk_mask <= chunk_max):
|
||||
raise ValueError('required: chunk_min <= chunk_mask <= chunk_max')
|
||||
raise argparse.ArgumentTypeError('required: chunk_min <= chunk_mask <= chunk_max')
|
||||
if chunk_min < 6:
|
||||
# see comment in 'fixed' algo check
|
||||
raise ValueError('min. chunk size exponent must not be less than 6 (2^6 = 64B min. chunk size)')
|
||||
raise argparse.ArgumentTypeError(
|
||||
'min. chunk size exponent must not be less than 6 (2^6 = 64B min. chunk size)'
|
||||
)
|
||||
if chunk_max > 23:
|
||||
raise ValueError('max. chunk size exponent must not be more than 23 (2^23 = 8MiB max. chunk size)')
|
||||
raise argparse.ArgumentTypeError(
|
||||
'max. chunk size exponent must not be more than 23 (2^23 = 8MiB max. chunk size)'
|
||||
)
|
||||
return CH_BUZHASH, chunk_min, chunk_max, chunk_mask, window_size
|
||||
raise ValueError('invalid chunker params')
|
||||
raise argparse.ArgumentTypeError('invalid chunker params')
|
||||
|
||||
|
||||
def FilesCacheMode(s):
|
||||
|
|
|
@ -348,19 +348,19 @@ def test_chunkerparams():
|
|||
assert ChunkerParams('fixed,4096') == ('fixed', 4096, 0)
|
||||
assert ChunkerParams('fixed,4096,200') == ('fixed', 4096, 200)
|
||||
# invalid values checking
|
||||
with pytest.raises(ValueError):
|
||||
with pytest.raises(ArgumentTypeError):
|
||||
ChunkerParams('crap,1,2,3,4') # invalid algo
|
||||
with pytest.raises(ValueError):
|
||||
with pytest.raises(ArgumentTypeError):
|
||||
ChunkerParams('buzhash,5,7,6,4095') # too small min. size
|
||||
with pytest.raises(ValueError):
|
||||
with pytest.raises(ArgumentTypeError):
|
||||
ChunkerParams('buzhash,19,24,21,4095') # too big max. size
|
||||
with pytest.raises(ValueError):
|
||||
with pytest.raises(ArgumentTypeError):
|
||||
ChunkerParams('buzhash,23,19,21,4095') # violates min <= mask <= max
|
||||
with pytest.raises(ValueError):
|
||||
with pytest.raises(ArgumentTypeError):
|
||||
ChunkerParams('fixed,63') # too small block size
|
||||
with pytest.raises(ValueError):
|
||||
with pytest.raises(ArgumentTypeError):
|
||||
ChunkerParams('fixed,%d,%d' % (MAX_DATA_SIZE + 1, 4096)) # too big block size
|
||||
with pytest.raises(ValueError):
|
||||
with pytest.raises(ArgumentTypeError):
|
||||
ChunkerParams('fixed,%d,%d' % (4096, MAX_DATA_SIZE + 1)) # too big header size
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue