diff options
author | Lars Wirzenius <liw@liw.fi> | 2011-04-21 11:58:42 +0100 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2011-04-21 11:58:42 +0100 |
commit | 9471585980e11a65be9039e6ca259dfb781884ff (patch) | |
tree | bad9c59962cb7de2045521f5bddc3b502b3f9e0b /seivots-to-csv | |
parent | 556af7f77a94877e26862da459a9c3521a57ae5b (diff) | |
download | seivot-9471585980e11a65be9039e6ca259dfb781884ff.tar.gz |
Make seivots-to-csv output per-size CSV files.
Various other fixes, too.
Diffstat (limited to 'seivots-to-csv')
-rwxr-xr-x | seivots-to-csv | 54 |
1 files changed, 38 insertions, 16 deletions
diff --git a/seivots-to-csv b/seivots-to-csv index 552b21f..2f84471 100755 --- a/seivots-to-csv +++ b/seivots-to-csv @@ -18,36 +18,58 @@ import cliapp import ConfigParser import csv +import os class SeivotToCsv(cliapp.Application): + def add_settings(self): + self.settings.add_string_setting(['output-dir'], + 'write output files into DIR ' + '(default: %default)', + metavar='DIR', + default='.') + def process_args(self, args): seivots = [] for filename in args: seivots.append(self.read_seivot(filename)) - - def getkey(s): - return (s.get('meta', 'revision'), - s.get('meta', 'larch-revision')) - seivots.sort(key=getkey) - - for op in ['backup', 'restore', 'list_files', 'forget']: - f = open('%s.csv' % op, 'w') - writer = csv.writer(f) - writer.writerow(['obnam', 'larch', 'gen0 time (s)', - 'gen0 RAM (MiB)', 'slowest inc (s)', - 'largest RAM inc (MiB)']) - for seivot in seivots: - row = self.get_row_data(op, seivot) - writer.writerow(row) - f.close() + + sizes = self.find_initial_sizes(seivots) + for size in sorted(sizes): + group = self.find_seivots_in_size_group(seivots, size) + group.sort(key=self.getkey) + for op in ['backup', 'restore', 'list_files', 'forget']: + filename = os.path.join(self.settings['output-dir'], + '%s-%s.csv' % (op, size)) + f = open(filename, 'wb') + writer = csv.writer(f, lineterminator='\n') + writer.writerow(['obnam', 'larch', 'gen0 time (s)', + 'gen0 RAM (MiB)', 'slowest inc (s)', + 'largest RAM inc (MiB)']) + for seivot in group: + row = self.get_row_data(op, seivot) + writer.writerow(row) + f.close() def read_seivot(self, filename): cp = ConfigParser.ConfigParser() cp.read([filename]) return cp + def getkey(self, seivot): + return (seivot.get('meta', 'revision'), + seivot.get('meta', 'larch-revision')) + + def get_size(self, seivot): + return seivot.getint('0', 'backup.new-data') + + def find_initial_sizes(self, seivots): + return list(set(self.get_size(s) for s in seivots)) + + def find_seivots_in_size_group(self, seivots, size): + return [s for s in seivots if self.get_size(s) == size] + def get_row_data(self, op, seivot): row = ['r%s' % seivot.get('meta', 'revision'), 'r%s' % seivot.get('meta', 'larch-revision'), |