adjust file-size-estimation unittest; add an actual test to unittest
authorChristian Herdtweck <christian.herdtweck@intra2net.com>
Thu, 9 Jun 2016 09:09:41 +0000 (11:09 +0200)
committerChristian Herdtweck <christian.herdtweck@intra2net.com>
Wed, 15 Jun 2016 11:18:02 +0000 (13:18 +0200)
testing/test_multivol.py

index de7eaed..9896295 100644 (file)
@@ -174,7 +174,7 @@ class MultivolGnuFormatTest(BaseTest):
 
         # 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 = []
@@ -191,22 +191,23 @@ class MultivolGnuFormatTest(BaseTest):
         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
@@ -215,6 +216,8 @@ class MultivolGnuFormatTest(BaseTest):
                         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 '''