From 53d0140bd523b404890dead6f42bffa30e6d4181 Mon Sep 17 00:00:00 2001 From: Marian Beermann Date: Sun, 21 Aug 2016 21:55:53 +0200 Subject: [PATCH] Repository: add compact_segments progress --- src/borg/repository.py | 5 +++++ src/borg/testsuite/archiver.py | 10 +++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/borg/repository.py b/src/borg/repository.py index 8b5f85db5..9eebd90e6 100644 --- a/src/borg/repository.py +++ b/src/borg/repository.py @@ -442,14 +442,17 @@ class Repository: unused = [] logger.debug('compaction started.') + pi = ProgressIndicatorPercent(total=len(self.compact), msg='Compacting segments %3.0f%%', step=1) for segment, freeable_space in sorted(self.compact.items()): if not self.io.segment_exists(segment): logger.warning('segment %d not found, but listed in compaction data', segment) del self.compact[segment] + pi.show() continue segment_size = self.io.segment_size(segment) if segment_size > 0.2 * self.max_segment_size and freeable_space < 0.15 * segment_size: logger.debug('not compacting segment %d (only %d bytes are sparse)', segment, freeable_space) + pi.show() continue segments.setdefault(segment, 0) logger.debug('compacting segment %d with usage count %d and %d freeable bytes', @@ -526,6 +529,8 @@ class Repository: segments.setdefault(new_segment, 0) assert segments[segment] == 0 unused.append(segment) + pi.show() + pi.finish() complete_xfer(intermediate=False) logger.debug('compaction completed.') diff --git a/src/borg/testsuite/archiver.py b/src/borg/testsuite/archiver.py index 45daceda0..d45d603f0 100644 --- a/src/borg/testsuite/archiver.py +++ b/src/borg/testsuite/archiver.py @@ -228,6 +228,8 @@ class ArchiverTestCaseBase(BaseTestCase): os.chdir(self._old_wd) # note: ignore_errors=True as workaround for issue #862 shutil.rmtree(self.tmpdir, ignore_errors=True) + # destroy logging configuration + logging.Logger.manager.loggerDict.clear() def cmd(self, *args, **kw): exit_code = kw.pop('exit_code', 0) @@ -1044,13 +1046,15 @@ class ArchiverTestCase(ArchiverTestCaseBase): manifest, key = Manifest.load(repository) self.assert_equal(len(manifest.archives), 0) - def test_progress(self): + def test_progress_on(self): self.create_regular_file('file1', size=1024 * 80) self.cmd('init', self.repository_location) - # progress forced on output = self.cmd('create', '--progress', self.repository_location + '::test4', 'input') self.assert_in("\r", output) - # progress forced off + + def test_progress_off(self): + self.create_regular_file('file1', size=1024 * 80) + self.cmd('init', self.repository_location) output = self.cmd('create', self.repository_location + '::test5', 'input') self.assert_not_in("\r", output)