diff -r 1f5ab557c1d0 -r 4d8a8d0b17c0 sbsv2/raptor/bin/recipestats.py --- a/sbsv2/raptor/bin/recipestats.py Wed Apr 14 14:36:58 2010 +0100 +++ b/sbsv2/raptor/bin/recipestats.py Tue Apr 20 12:08:50 2010 +0100 @@ -1,6 +1,6 @@ #!/usr/bin/env python # -# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +# Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). # All rights reserved. # This component and the accompanying materials are made available # under the terms of the License "Eclipse Public License v1.0" @@ -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(".*