def updateStats(self, current, stats): # Gather specific information and aggregate into our persistent stats adjustedMethod = getAdjustedMethodName(stats) adjustedClient = getAdjustedClientName(stats) if current["requests"] == 0: current["cpu"] = 0.0 current["requests"] += 1 current["method"][adjustedMethod] += 1 current["method-t"][adjustedMethod] += stats.get("t", 0.0) current["uid"][stats["uid"]] += 1 current["user-agent"][adjustedClient] += 1 if stats["statusCode"] >= 500: current["500"] += 1 elif stats["statusCode"] == 401: current["401"] += 1 current["t"] += stats.get("t", 0.0) current["t-resp-wr"] += stats.get("t-resp-wr", 0.0) current["slots"] += stats.get("outstandingRequests", 0) current["max-slots"] = max( current["max-slots"], self.limiter.maxOutstandingRequests if hasattr(self, "limiter") else 0) current["cpu"] += self.systemStats.items["cpu use"] def histogramUpdate(t, key): if t >= 60000.0: current[key][">60s"] += 1 elif t >= 30000.0: current[key]["30s<->60s"] += 1 elif t >= 10000.0: current[key]["10s<->30s"] += 1 elif t >= 1000.0: current[key]["1s<->10s"] += 1 elif t >= 100.0: current[key]["100ms<->1s"] += 1 elif t >= 10.0: current[key]["10ms<->100ms"] += 1 else: current[key]["<10ms"] += 1 if t >= 1000.0: current[key]["Over 1s"] += 1 elif t >= 10000.0: current[key]["Over 10s"] += 1 t = stats.get("t", None) if t is not None: histogramUpdate(t, "T") current["T-MAX"] = max(current["T-MAX"], t) t = stats.get("t-resp-wr", None) if t is not None: histogramUpdate(t, "T-RESP-WR")
def updateStats(self, current, stats): # Gather specific information and aggregate into our persistent stats adjustedMethod = getAdjustedMethodName(stats) adjustedClient = getAdjustedClientName(stats) if current["requests"] == 0: current["cpu"] = 0.0 current["requests"] += 1 current["method"][adjustedMethod] += 1 current["method-t"][adjustedMethod] += stats.get("t", 0.0) current["uid"][stats["uid"]] += 1 current["user-agent"][adjustedClient] += 1 if stats["statusCode"] >= 500: current["500"] += 1 current["t"] += stats.get("t", 0.0) current["t-resp-wr"] += stats.get("t-resp-wr", 0.0) current["slots"] += stats.get("outstandingRequests", 0) current["cpu"] += self.systemStats.items["cpu use"] def histogramUpdate(t, key): if t >= 60000.0: current[key][">60s"] += 1 elif t >= 30000.0: current[key]["30s<->60s"] += 1 elif t >= 10000.0: current[key]["10s<->30s"] += 1 elif t >= 1000.0: current[key]["1s<->10s"] += 1 elif t >= 100.0: current[key]["100ms<->1s"] += 1 elif t >= 10.0: current[key]["10ms<->100ms"] += 1 else: current[key]["<10ms"] += 1 if t >= 1000.0: current[key]["Over 1s"] += 1 elif t >= 10000.0: current[key]["Over 10s"] += 1 t = stats.get("t", None) if t is not None: histogramUpdate(t, "T") current["T-MAX"] = max(current["T-MAX"], t) t = stats.get("t-resp-wr", None) if t is not None: histogramUpdate(t, "T-RESP-WR")
def test_getAdjustedClientName(self): """ L{getAdjustedClientName} returns the appropriate method. """ data = ( ("Mac OS X/10.8.2 (12C60) CalendarAgent/55", "Mac OS X/10.8.2 CalendarAgent",), ("CalendarStore/5.0.3 (1204.2); iCal/5.0.3 (1605.4); Mac OS X/10.7.5 (11G63b)", "Mac OS X/10.7.5 iCal",), ("DAVKit/5.0 (767); iCalendar/5.0 (79); iPhone/4.2.1 8C148", "iPhone/4.2.1",), ("iOS/6.0 (10A405) Preferences/1.0", "iOS/6.0 Preferences",), ("iOS/6.0.1 (10A523) dataaccessd/1.0", "iOS/6.0.1 dataaccessd",), ("InterMapper/5.4.3", "InterMapper",), ("Mac OS X/10.8.2 (12C60) AddressBook/1167", "Mac OS X/10.8.2 AddressBook",), ) for ua, result in data: self.assertEqual(getAdjustedClientName({"userAgent": ua}), result, "Failed getAdjustedClientName: %s" % (ua,))
def test_getAdjustedClientName(self): """ L{getAdjustedClientName} returns the appropriate method. """ data = ( ("Mac OS X/10.8.2 (12C60) CalendarAgent/55", "Mac OS X/10.8.2 CalendarAgent",), ("CalendarStore/5.0.3 (1204.2); iCal/5.0.3 (1605.4); Mac OS X/10.7.5 (11G63b)", "Mac OS X/10.7.5 iCal",), ("DAVKit/5.0 (767); iCalendar/5.0 (79); iPhone/4.2.1 8C148", "iPhone/4.2.1",), ("iOS/6.0 (10A405) Preferences/1.0", "iOS/6.0 Preferences",), ("iOS/6.0.1 (10A523) dataaccessd/1.0", "iOS/6.0.1 dataaccessd",), ("InterMapper/5.4.3", "InterMapper",), ("Mac OS X/10.8.2 (12C60) AddressBook/1167", "Mac OS X/10.8.2 AddressBook",), ) for ua, result in data: self.assertEqual(getAdjustedClientName({"userAgent": ua}), result, "Failed getAdjustedClientName: %s" % (ua,))