def __init__(self, size): "Initialize accumulator" self.size = size self.errors = DefaultBunch(int) self.total = DefaultBunch(int) self.min = DefaultBunch(int) self.max = DefaultBunch(int) self._basetime = time.time()
def average(self): "Calculate average" result = DefaultBunch(str) # Calculate average if possible if self.size: result.update( (key, '' if isinstance(val, basestring) else val / self.size) for key, val in self.total.items()) # Handle time fields #for key, fielddef in engine.FieldDefinition.FIELDS.items(): # if key in result and fielddef._matcher is matching.TimeFilter: # result[key] = '' #for key, fielddef in engine.FieldDefinition.FIELDS.items(): # if key in result and fielddef._matcher is matching.TimeFilter: # result[key] = engine._fmt_duration(result[key]) #print self.total #print result return result
class FieldStatistics(object): """ Collect statistical values for the fields of a search result. """ def __init__(self, size): "Initialize accumulator" self.size = size self.errors = DefaultBunch(int) self.total = DefaultBunch(int) self.min = DefaultBunch(int) self.max = DefaultBunch(int) self._basetime = time.time() def __nonzero__(self): "Truth" return bool(self.total) def add(self, field, val): "Add a sample" if engine.FieldDefinition.FIELDS[field]._matcher is matching.TimeFilter: val = self._basetime - val try: self.total[field] += val self.min[field] = min(self.min[field], val) if field in self.min else val self.max[field] = max(self.max[field], val) except (ValueError, TypeError): self.errors[field] += 1 @property def average(self): "Calculate average" result = DefaultBunch(str) # Calculate average if possible if self.size: result.update( (key, '' if isinstance(val, basestring) else val / self.size) for key, val in self.total.items() ) # Handle time fields #for key, fielddef in engine.FieldDefinition.FIELDS.items(): # if key in result and fielddef._matcher is matching.TimeFilter: # result[key] = '' #for key, fielddef in engine.FieldDefinition.FIELDS.items(): # if key in result and fielddef._matcher is matching.TimeFilter: # result[key] = engine._fmt_duration(result[key]) #print self.total #print result return result
def average(self): "Calculate average" result = DefaultBunch(str) # Calculate average if possible if self.size: result.update( (key, '' if isinstance(val, basestring) else val / self.size) for key, val in self.total.items() ) # Handle time fields #for key, fielddef in engine.FieldDefinition.FIELDS.items(): # if key in result and fielddef._matcher is matching.TimeFilter: # result[key] = '' #for key, fielddef in engine.FieldDefinition.FIELDS.items(): # if key in result and fielddef._matcher is matching.TimeFilter: # result[key] = engine._fmt_duration(result[key]) #print self.total #print result return result