summaryrefslogtreecommitdiff
path: root/seivots-to-csv
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2011-04-21 11:58:42 +0100
committerLars Wirzenius <liw@liw.fi>2011-04-21 11:58:42 +0100
commit9471585980e11a65be9039e6ca259dfb781884ff (patch)
treebad9c59962cb7de2045521f5bddc3b502b3f9e0b /seivots-to-csv
parent556af7f77a94877e26862da459a9c3521a57ae5b (diff)
downloadseivot-9471585980e11a65be9039e6ca259dfb781884ff.tar.gz
Make seivots-to-csv output per-size CSV files.
Various other fixes, too.
Diffstat (limited to 'seivots-to-csv')
-rwxr-xr-xseivots-to-csv54
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'),