diff options
Diffstat (limited to 'seivot')
-rwxr-xr-x | seivot | 21 |
1 files changed, 20 insertions, 1 deletions
@@ -18,6 +18,7 @@ import cliapp import ConfigParser import logging import os +import re import shutil import subprocess import tempfile @@ -150,8 +151,10 @@ class Obnam(BackupProgram): return revno.strip() def _run(self, args, nth_gen, **kwargs): + fd, logfile = tempfile.mkstemp() + os.close(fd) cmd = [self._cmd, - '--log', '/dev/null', + '--log', logfile, '--repository', self.repo, '--weak-random'] env = dict(os.environ) @@ -175,8 +178,24 @@ class Obnam(BackupProgram): runcmd(['viewprof', env['OBNAM_PROFILE'], order], stdout=f) f.close() os.remove(env['OBNAM_PROFILE']) + + self.extract_repository_io(result[0], logfile) + return result + def extract_repository_io(self, measurement, logfile): + + pat = re.compile(r' VFS: __del__: baseurl=.* ' + r'read=(?P<read>\d+) written=(?P<written>\d+)') + + f = open(logfile) + for line in f: + m = pat.search(line) + if m and self.repo in line: + measurement.repo_bytes_written = long(m.group('written')) + measurement.repo_bytes_read = long(m.group('read')) + f.close() + def prepare(self): if self._branch: logging.info('Building obnam in %s' % self._branch) |