Selaa lähdekoodia

Merge pull request #2759 from enkore/f/missing-tests

Add some missing tests
enkore 8 vuotta sitten
vanhempi
sitoutus
c9e71672bb
2 muutettua tiedostoa jossa 42 lisäystä ja 8 poistoa
  1. 18 8
      src/borg/archiver.py
  2. 24 0
      src/borg/testsuite/archiver.py

+ 18 - 8
src/borg/archiver.py

@@ -411,14 +411,22 @@ class Archiver:
             yield path
             shutil.rmtree(path)
 
-        for msg, count, size, random in [
-            ('Z-BIG', 10, 100000000, False),
-            ('R-BIG', 10, 100000000, True),
-            ('Z-MEDIUM', 1000, 1000000, False),
-            ('R-MEDIUM', 1000, 1000000, True),
-            ('Z-SMALL', 10000, 10000, False),
-            ('R-SMALL', 10000, 10000, True),
-        ]:
+        if '_BORG_BENCHMARK_CRUD_TEST' in os.environ:
+            tests = [
+                ('Z-TEST', 1, 1, False),
+                ('R-TEST', 1, 1, True),
+            ]
+        else:
+            tests = [
+                ('Z-BIG', 10, 100000000, False),
+                ('R-BIG', 10, 100000000, True),
+                ('Z-MEDIUM', 1000, 1000000, False),
+                ('R-MEDIUM', 1000, 1000000, True),
+                ('Z-SMALL', 10000, 10000, False),
+                ('R-SMALL', 10000, 10000, True),
+            ]
+
+        for msg, count, size, random in tests:
             with test_files(args.path, count, size, random) as path:
                 dt_create, dt_update, dt_extract, dt_delete = measurement_run(args.location.canonical_path(), path)
             total_size_MB = count * size / 1e06
@@ -430,6 +438,8 @@ class Archiver:
             print(fmt % ('U', msg, total_size_MB / dt_update, count, file_size_formatted, content, dt_update))
             print(fmt % ('D', msg, total_size_MB / dt_delete, count, file_size_formatted, content, dt_delete))
 
+        return 0
+
     @with_repository(fake='dry_run', exclusive=True, compatibility=(Manifest.Operation.WRITE,))
     def do_create(self, args, repository, manifest=None, key=None):
         """Create new archive"""

+ 24 - 0
src/borg/testsuite/archiver.py

@@ -2607,6 +2607,30 @@ id: 2 / e29442 3506da 4e1ea7 / 25f62a 5a3d41 - 02
         assert '_meta' in result
         assert '_items' in result
 
+    def test_debug_refcount_obj(self):
+        self.cmd('init', '--encryption=repokey', self.repository_location)
+        output = self.cmd('debug', 'refcount-obj', self.repository_location, '0' * 64).strip()
+        assert output == 'object 0000000000000000000000000000000000000000000000000000000000000000 not found [info from chunks cache].'
+
+        create_json = json.loads(self.cmd('create', '--json', self.repository_location + '::test', 'input'))
+        archive_id = create_json['archive']['id']
+        output = self.cmd('debug', 'refcount-obj', self.repository_location, archive_id).strip()
+        assert output == 'object ' + archive_id + ' has 1 referrers [info from chunks cache].'
+
+        # Invalid IDs do not abort or return an error
+        output = self.cmd('debug', 'refcount-obj', self.repository_location, '124', 'xyza').strip()
+        assert output == 'object id 124 is invalid.\nobject id xyza is invalid.'
+
+    def test_debug_info(self):
+        output = self.cmd('debug', 'info')
+        assert 'CRC implementation' in output
+        assert 'Python' in output
+
+    def test_benchmark_crud(self):
+        self.cmd('init', '--encryption=repokey', self.repository_location)
+        with environment_variable(_BORG_BENCHMARK_CRUD_TEST='YES'):
+            self.cmd('benchmark', 'crud', self.repository_location, self.input_path)
+
     requires_gnutar = pytest.mark.skipif(not have_gnutar(), reason='GNU tar must be installed for this test.')
     requires_gzip = pytest.mark.skipif(not shutil.which('gzip'), reason='gzip must be installed for this test.')