def test_gauge_update(self): potatoes = [100.0] @stats.gauge("stew") def _stew(): potatoes[0] += 1.0 return potatoes[0] self.assertEquals({"stew": 101.0}, stats.get_gauge_stats()) self.assertEquals({"stew": 102.0}, stats.get_gauge_stats()) self.assertEquals({"stew": 103.0}, stats.get_gauge_stats())
def test_gauge_report(self): @stats.gauge("pi") def _pi(): return math.pi stats.make_gauge("e", lambda: math.e) self.assertEquals({"e": math.e, "pi": math.pi}, stats.get_gauge_stats())
def collect(self): def get_or_add(key, new=0, d=self.hourly): value = d.get(key) if value is None: value = TimeSeries(60, new) d[key] = value return value for k, v in stats.get_gauge_stats().items(): get_or_add("gauge:%s" % k).add(v) for k, v in self.stats.get_counter_stats(reset=True).items(): get_or_add("counter:%s" % k).add(v) for k, v in self.stats.get_timing_stats(reset=True).items(): get_or_add("timing:%s" % k, None, d=self.hourly_timings).add(v) self.last_collection = time.time()