def dumpStats(self): for plugin_name, plugin_timers in self._handling_timers.iteritems(): for event_name, event_timers in plugin_timers.iteritems(): mean, stdv = meanstdv(event_timers) self.console.verbose("%s %s : (ms) min(%0.1f), max(%0.1f), mean(%0.1f), stddev(%0.1f)", plugin_name, event_name, min(event_timers), max(event_timers), mean, stdv) mean, stdv = meanstdv(self._queue_wait) self.console.verbose("wait in queue stats : (ms) min(%0.1f), max(%0.1f), mean(%0.1f), stddev(%0.1f)", min(self._queue_wait), max(self._queue_wait), mean, stdv)
def dumpStats(self): if self.console.log.isEnabledFor(VERBOSE): for plugin_name, plugin_timers in self._handling_timers.iteritems(): for event_name, event_timers in plugin_timers.iteritems(): mean, stdv = meanstdv(event_timers) if len(event_timers): self.console.verbose("%s %s : (ms) min(%0.1f), max(%0.1f), mean(%0.1f), stddev(%0.1f)", plugin_name, event_name, min(event_timers), max(event_timers), mean, stdv) if self.console.log.isEnabledFor(DEBUG): mean, stdv = meanstdv(self._queue_wait) if len(self._queue_wait): self.console.debug("Events waiting in queue stats : (ms) min(%0.1f), max(%0.1f), mean(%0.1f), stddev(%0.1f)", min(self._queue_wait), max(self._queue_wait), mean, stdv)
def dumpStats(self): if self.console.log.isEnabledFor(VERBOSE): for plugin_name, plugin_timers in self._handling_timers.iteritems( ): for event_name, event_timers in plugin_timers.iteritems(): mean, stdv = meanstdv(event_timers) if len(event_timers): self.console.verbose( "%s %s : (ms) min(%0.1f), max(%0.1f), mean(%0.1f), stddev(%0.1f)", plugin_name, event_name, min(event_timers), max(event_timers), mean, stdv) if self.console.log.isEnabledFor(DEBUG): mean, stdv = meanstdv(self._queue_wait) if len(self._queue_wait): self.console.debug( "Events waiting in queue stats : (ms) min(%0.1f), max(%0.1f), mean(%0.1f), stddev(%0.1f)", min(self._queue_wait), max(self._queue_wait), mean, stdv)
def test_meanstdv(self): for test_data, expected in { (5,): (5.0, 0), (10,): (10.0, 0), (): (0, 0) }.items(): result = functions.meanstdv(test_data) if expected != result: self.fail("%r, expecting '%s' but got '%s'" % (test_data, expected, result))
def test_meanstdv(self): for test_data, expected in { (5, ): (5.0, 0), (10, ): (10.0, 0), (): (0, 0) }.items(): result = functions.meanstdv(test_data) if expected != result: self.fail("%r, expecting '%s' but got '%s'" % (test_data, expected, result))
def dump_stats(self): """ Print event stats in the log file. """ self.console.info('***** Event Stats *****') for plugin_name, plugin_timers in self._handling_timers.items(): for event_name, event_timers in plugin_timers.items(): if event_timers: mean, stdv = meanstdv(event_timers) self.console.info( "%s %s : min(%0.4f), max(%0.4f), mean(%0.4f), stddev(%0.4f)", plugin_name, event_name, min(event_timers), max(event_timers), mean, stdv)
def cmd_metabanssync(self, data=None, client=None, cmd=None): """\ send all active bans and tempbans found on your database to Metabans.com """ MAX_BANS_PER_CALL = 50 def chunks(l, n): for i in range(0, len(l), n): yield l[i:i+n] active_bans = self._getAllActiveBans() if len(active_bans) == 0: client.message("no active ban found") return client.message("will now send %s bans to metabans.com" % len(active_bans)) try: for bans in chunks(active_bans, MAX_BANS_PER_CALL): oks, fails, stats = self._send_bans(bans) nb_ban_sent = 0 for v in oks: if v['request']['action'] == 'mb_assess_player': nb_ban_sent += 1 client.message("%s bans sent" % nb_ban_sent) for k in stats: mean, stdv = meanstdv(stats[k]) self.debug("%s (%s calls): (ms) min(%0.1f), max(%0.1f), mean(%0.1f), stddev(%0.1f)", k, len(stats[k]), min(stats[k]), max(stats[k]), mean, stdv) client.message("all active bans sent to metabans.com") except MetabansAuthenticationError: self.error("bad METABANS username or api_key. Disabling Metaban plugin") client.message("bad METABANS username or api_key. Disabling Metaban plugin") self.disable() except MetabansError, err: self.error(err) client.message("Metabans replied with error %s" % err)