From: Christian Herdtweck Date: Wed, 8 Jun 2016 15:48:23 +0000 (+0200) Subject: created unittest for get_file_size X-Git-Tag: v2.2~35^2~33 X-Git-Url: http://developer.intra2net.com/git/?a=commitdiff_plain;h=9ce7426c6670296575333e572c1dad8772337680;p=python-delta-tar created unittest for get_file_size --- diff --git a/testing/test_multivol.py b/testing/test_multivol.py index fac6d61..0026881 100644 --- a/testing/test_multivol.py +++ b/testing/test_multivol.py @@ -168,6 +168,54 @@ class MultivolGnuFormatTest(BaseTest): assert os.path.exists(key) assert value == self.md5sum(key) + def test_get_file_size(self): + ''' test _Stream.get_file_size which is basis for multivol with compres + ''' + + # 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 + next_size = 1 + sizes = [] + file_names = [] + for exponents in range(n_sizes): + sizes.append(next_size) + new_name = 'size_test_{:08d}'.format(next_size) + file_names.append(new_name) + self.create_file(new_name, next_size) + next_size *= size_factor + + max_err = 0 + max_err_post = 0 + + 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: + 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() + tarobj.close() + estimate_post = tarobj.fileobj.get_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)) + os.unlink(tar_file_name) + if err > max_err: + max_err = err + err = abs(actual_size - estimate_post) + if err > max_err_post: + max_err_post = err + + print('max err is {}, post={}'.format(max_err, max_err_post)) + def test_volume_extract1(self): ''' Create a tar file with multiple volumes and one file and extract it