# HG changeset patch # User timothy.murphy@nokia.com # Date 1271415448 -3600 # Node ID 926e968477c6da3d3fe07526f755d012309fbbaa # Parent 56adcb9bad984bb778efb50012166f45804d1243 fix: recipestats.py produces "correct" header line, also sorts by time to show recipe using the largest time first. diff -r 56adcb9bad98 -r 926e968477c6 sbsv2/raptor/bin/recipestats.py --- a/sbsv2/raptor/bin/recipestats.py Tue Apr 13 18:06:25 2010 +0100 +++ b/sbsv2/raptor/bin/recipestats.py Fri Apr 16 11:57:28 2010 +0100 @@ -18,8 +18,18 @@ # e.g. total times and so on. import time +import __future__ class RecipeStats(object): + def __init__(self, name, count, time): + self.name=name + self.count=count + self.time=time + + def add(self, duration): + self.time += duration + +class BuildStats(object): STAT_OK = 0 @@ -31,7 +41,7 @@ self.retryfails = 0 def add(self, starttime, duration, name, status): - if status != RecipeStats.STAT_OK: + if status != BuildStats.STAT_OK: self.failcount += 1 if name in self.failtypes: self.failtypes[name] += 1 @@ -43,15 +53,16 @@ return if name in self.stats: - (count, time) = self.stats[name] - self.stats[name] = (count + 1, time + duration) + r = self.stats[name] + r.add(duration) else: - self.stats[name] = (1,duration) + self.stats[name] = RecipeStats(name,1,duration) def recipe_csv(self): - s = "# name, time, count\n" - for (name,(count,time)) in self.stats.iteritems(): - s += '"%s",%s,%d\n' % (name, str(time), count) + s = '"name", "time", "count"\n' + l = sorted(self.stats.values(), key= lambda r: r.time, reverse=True) + for r in l: + s += '"%s",%s,%d\n' % (r.name, str(r.time), r.count) return s @@ -62,7 +73,7 @@ def main(): f = sys.stdin - st = RecipeStats() + st = BuildStats() recipe_re = re.compile(".*