# create test files of different sizes
size_factor = 4
- n_sizes = 14 # 1,4,16,64...,1 MiB=2**20=4**10, 4MiB, 16MiB, 64MiB
+ n_sizes = 14 # 1,4,16,64,256,1KiB=4**5 ... 1MiB=4**10 ... 1GiB=4**15
next_size = 1
sizes = []
file_names = []
for mode in 'w|gz', 'w|bz2', 'w|xz', 'w#gz', 'w#gz.aes128', \
'w#gz.aes256', 'w#aes128':
tar_file_name = "size_test.tar." + mode[2:]
- for size_number in range(1,n_sizes):
- for order in 1,-1:
+ for size_number in range(4,n_sizes):
+ for order in 1,-1: # small files first or big files first
tarobj = TarFile.open(tar_file_name,
mode=mode,
format=self.tarfile_format,
password='test')
for file_name in file_names[:size_number][::order]:
tarobj.add(file_name)
- estimate = tarobj.fileobj.get_file_size()
+ estimate = tarobj.fileobj.estim_file_size()
tarobj.close()
- estimate_post = tarobj.fileobj.get_file_size()
+ estimate_post = tarobj.fileobj.estim_file_size()
actual_size = os.stat(tar_file_name).st_size
err = abs(actual_size - estimate)
- print('mode {}, {} files: estim={}, true={}, post={}, err={}'
- .format(mode, size_number, estimate, actual_size,
- estimate_post, err))
+ print('mode {:>11s}, {:2} files (up to size {:9}): '
+ 'estim={:9}, true={:9}, post={:9}, err={:5}'
+ .format(mode, size_number, sizes[size_number],
+ estimate, actual_size, estimate_post, err))
os.unlink(tar_file_name)
if err > max_err:
max_err = err
max_err_post = err
print('max err is {}, post={}'.format(max_err, max_err_post))
+ assert max_err < 13*1024
+ assert max_err_post == 0
def test_multivol_compress(self):
''' check creation of multiple volume when compression is on '''