summaryrefslogtreecommitdiff
path: root/seivot
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2011-05-18 08:58:33 +0100
committerLars Wirzenius <liw@liw.fi>2011-05-18 08:58:33 +0100
commit5441318c2c3bf6fc92dd58e3abe23bc4e1814875 (patch)
treee991b90a6fb43ac62ad976d8c9b0988320fda916 /seivot
parent306e5bcbfc79b1f84f9d37d43136ca7ec7743ad7 (diff)
downloadseivot-5441318c2c3bf6fc92dd58e3abe23bc4e1814875.tar.gz
Extract repository I/O amounts from Obnam log file.
Diffstat (limited to 'seivot')
-rwxr-xr-xseivot21
1 files changed, 20 insertions, 1 deletions
diff --git a/seivot b/seivot
index d1347b6..b532229 100755
--- a/seivot
+++ b/seivot
@@ -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)