def loadResults(cls, jsonFile): """Load results from json file :param jsonFile : json format file to load from""" ms = json.load(open(jsonFile, 'r')) methods = {} class Host(object): def __init__(self, name): self.name = name for name, method_data in ms.iteritems(): methods[name] = {} methods[name]['pairs'] = [] methods[name]['real_steps'] = method_data['real_steps'] for pairdata in method_data['pairs']: s = cls.HostStats( method=name, host=Host(pairdata['host']), target=Host(pairdata['target']), baseline=DelayStats(**pairdata['baseline']), baselineMeasures=[ DelayStats(**m) for m in pairdata['baselineMeasures'] ], measures=[DelayStats(**m) for m in pairdata['measures']]) methods[name]['pairs'].append(s) info("Loading delay results done\n") return methods
def computeBaseline(self): sent = 0 received = 0 rttmin = 0 rttavg = 0 rttmax = 0 rttdev = 0 for measure in self.baselineMeasures: sent += measure.sent received += measure.received rttmin = min( rttmin, measure.rttmin) if rttmin is not 0 else measure.rttmin rttmax = max(rttmax, measure.rttmax) rttavg += measure.rttavg rttdev += measure.rttdev**2 rttdev = math.sqrt(rttdev / len(self.baselineMeasures)) rttavg /= len(self.baselineMeasures) self.baseline = DelayStats(sent=sent, received=received, rttmin=rttmin, rttavg=rttavg, rttmax=rttmax, rttdev=rttdev)
def subtrackBaseline(self, ping): return DelayStats(ping.timestamp, ping.step, ping.sent, ping.received, ping.rttmin - self.baseline.rttmin, ping.rttavg - self.baseline.rttavg, ping.rttmax - self.baseline.rttmax, ping.rttdev)
def subtrackBaseline(self, sample): """Remove baseline from sample :param sample : sample to correct """ return DelayStats(sample.timestamp, sample.step, sample.sent, sample.received, sample.bw - self.baseline.bw)