示例#1
0
    class HostStats(object):
        """Storage for delay results"""

        def __init__(self, host, target, method="", baseline=None, measures=None, baselineMeasures=None):
            self.host = host
            self.target = target
            if measures is not None:
                self.measures = measures
            else:
                self.measures = []
            self.baseline = baseline
            self.baselineMeasures = baselineMeasures if baselineMeasures is not None else []
            self.method = method

        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 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 getPair(self):
            return self.host.name, self.target.name

        def getStrPair(self):
            return "%s,%s" % self.getPair()

        def printAll(self):
            return "\n%s -> %s\nbaseline for %s: \n   %s\nmeasures : \n   %s\n" % (
                self.host.name,
                self.target.name,
                self.method,
                self.baseline.printAll() if self.baseline is not None else "",
                "\n   ".join([m.printAll() for m in self.measures]),
            )

        def toDict(self):
            return {
                "host": self.host.name,
                "target": self.target.name,
                "baseline": self.baseline.toDict(),
                "baselineMeasures": [m.toDict() for m in self.baselineMeasures],
                "measures": [m.toDict() for m in self.measures],
            }
示例#2
0
    class HostStats(object):
        """Storage for delay results"""
        def __init__(self,
                     host,
                     target,
                     method='',
                     baseline=None,
                     measures=None,
                     baselineMeasures=None):
            self.host = host
            self.target = target
            if measures is not None:
                self.measures = measures
            else:
                self.measures = []
            self.baseline = baseline
            self.baselineMeasures = baselineMeasures if baselineMeasures is not None else []
            self.method = method

        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 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 getPair(self):
            return self.host.name, self.target.name

        def getStrPair(self):
            return "%s,%s" % self.getPair()

        def printAll(self):
            return "\n%s -> %s\nbaseline for %s: \n   %s\nmeasures : \n   %s\n" % (
                self.host.name, self.target.name, self.method,
                self.baseline.printAll() if self.baseline is not None else '',
                "\n   ".join([m.printAll() for m in self.measures]))

        def toDict(self):
            return {
                'host': self.host.name,
                'target': self.target.name,
                'baseline': self.baseline.toDict(),
                'baselineMeasures':
                [m.toDict() for m in self.baselineMeasures],
                'measures': [m.toDict() for m in self.measures]
            }