diff options
author | Lars Wirzenius <liw@liw.fi> | 2011-05-18 08:58:33 +0100 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2011-05-18 08:58:33 +0100 |
commit | 5441318c2c3bf6fc92dd58e3abe23bc4e1814875 (patch) | |
tree | e991b90a6fb43ac62ad976d8c9b0988320fda916 /seivot | |
parent | 306e5bcbfc79b1f84f9d37d43136ca7ec7743ad7 (diff) | |
download | seivot-5441318c2c3bf6fc92dd58e3abe23bc4e1814875.tar.gz |
Extract repository I/O amounts from Obnam log file.
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) |