def render_lease_last_cycle_results(self, ctx, data): lc = self.storage.lease_checker h = lc.get_state()["history"] if not h: return "" last = h[max(h.keys())] start, end = last["cycle-start-finish-times"] ctx.tag["Last complete cycle (which took %s and finished %s ago)" " recovered: " % (abbreviate_time(end-start), abbreviate_time(time.time() - end)), self.format_recovered(last["space-recovered"], "actual") ] p = T.ul() def add(*pieces): p[T.li[pieces]] saw = self.format_recovered(last["space-recovered"], "examined") add("and saw a total of ", saw) if not last["expiration-enabled"]: rec = self.format_recovered(last["space-recovered"], "configured") add("but expiration was not enabled. If it had been, " "it would have recovered: ", rec) if last["corrupt-shares"]: add("Corrupt shares:", T.ul[ [T.li[ ["SI %s shnum %d" % corrupt_share for corrupt_share in last["corrupt-shares"] ] ]]]) return ctx.tag[p]
def format_crawler_progress(self, p): cycletime = p["estimated-time-per-cycle"] cycletime_s = "" if cycletime is not None: cycletime_s = " (estimated cycle time %s)" % abbreviate_time( cycletime) if p["cycle-in-progress"]: pct = p["cycle-complete-percentage"] soon = p["remaining-sleep-time"] eta = p["estimated-cycle-complete-time-left"] eta_s = "" if eta is not None: eta_s = " (ETA %ds)" % eta return [ "Current crawl %.1f%% complete" % pct, eta_s, " (next work in %s)" % abbreviate_time(soon), cycletime_s, ] else: soon = p["remaining-wait-time"] return ["Next crawl in %s" % abbreviate_time(soon), cycletime_s]
def server_timings(self, req, tag): per_server = self._publish_status.timings.get("send_per_server") if not per_server: return tag() l = tags.ul() for server in sorted(per_server.keys(), key=lambda s: s.get_name()): times_s = ", ".join( [abbreviate_time(t) for t in per_server[server]]) l(tags.li("[%s]: %s" % (server.get_name(), times_s))) return tags.li("Per-Server Response Times: ", l)
def server_timings(self, req, tag): per_server = self._update_status.timings.get("per_server") if not per_server: return tag("") l = tags.ul() for server in sorted(per_server.keys(), key=lambda s: s.get_name()): times = [] for op, started, t in per_server[server]: #times.append("%s/%.4fs/%s/%s" % (op, # started, # self.render_time(None, started - self.update_status.get_started()), # self.render_time(None,t))) if op == "query": times.append(abbreviate_time(t)) elif op == "late": times.append("late(" + abbreviate_time(t) + ")") else: times.append("privkey(" + abbreviate_time(t) + ")") times_s = ", ".join(times) l(tags.li("[%s]: %s" % (server.get_name(), times_s))) return tags.li("Per-Server Response Times: ", l)
def test_abbreviate_time(self): self.failUnlessReallyEqual(common.abbreviate_time(None), "") self.failUnlessReallyEqual(common.abbreviate_time(1.234), "1.23s") self.failUnlessReallyEqual(common.abbreviate_time(0.123), "123ms") self.failUnlessReallyEqual(common.abbreviate_time(0.00123), "1.2ms") self.failUnlessReallyEqual(common.abbreviate_time(0.000123), "123us") self.failUnlessReallyEqual(common.abbreviate_time(-123000), "-123000000000us")
def lease_last_cycle_results(self, req, tag): lc = self._storage.lease_checker h = lc.get_state()["history"] if not h: return "" biggest = str(max(int(k) for k in h.keys())) last = h[biggest] start, end = last["cycle-start-finish-times"] tag( "Last complete cycle (which took %s and finished %s ago)" " recovered: " % (abbreviate_time(end - start), abbreviate_time(time.time() - end)), self.format_recovered(last["space-recovered"], "actual")) p = T.ul() def add(*pieces): p(T.li(pieces)) saw = self.format_recovered(last["space-recovered"], "examined") add("and saw a total of ", saw) if not last["expiration-enabled"]: rec = self.format_recovered(last["space-recovered"], "configured") add( "but expiration was not enabled. If it had been, " "it would have recovered: ", rec) if last["corrupt-shares"]: add( "Corrupt shares:", T.ul((T.li([ "SI %s shnum %d" % (si, shnum) for si, shnum in last["corrupt-shares"] ])))) return tag(p)
def render_lease_last_cycle_results(self, ctx, data): lc = self.storage.lease_checker h = lc.get_state()["history"] if not h: return "" last = h[max(h.keys())] start, end = last["cycle-start-finish-times"] ctx.tag["Last complete cycle (which took %s and finished %s ago)" " recovered: " % (abbreviate_time(end - start), abbreviate_time(time.time() - end)), self.format_recovered(last["space-recovered"], "actual")] p = T.ul() def add(*pieces): p[T.li[pieces]] saw = self.format_recovered(last["space-recovered"], "examined") add("and saw a total of ", saw) if not last["expiration-enabled"]: rec = self.format_recovered(last["space-recovered"], "configured") add( "but expiration was not enabled. If it had been, " "it would have recovered: ", rec) if last["corrupt-shares"]: add( "Corrupt shares:", T.ul[[ T.li[[ "SI %s shnum %d" % corrupt_share for corrupt_share in last["corrupt-shares"] ]] ]]) return ctx.tag[p]
def format_crawler_progress(self, p): cycletime = p["estimated-time-per-cycle"] cycletime_s = "" if cycletime is not None: cycletime_s = " (estimated cycle time %s)" % abbreviate_time(cycletime) if p["cycle-in-progress"]: pct = p["cycle-complete-percentage"] soon = p["remaining-sleep-time"] eta = p["estimated-cycle-complete-time-left"] eta_s = "" if eta is not None: eta_s = " (ETA %ds)" % eta return ["Current crawl %.1f%% complete" % pct, eta_s, " (next work in %s)" % abbreviate_time(soon), cycletime_s, ] else: soon = p["remaining-wait-time"] return ["Next crawl in %s" % abbreviate_time(soon), cycletime_s]
def render_lease_expiration_mode(self, ctx, data): lc = self.storage.lease_checker if lc.mode == "age": if lc.override_lease_duration is None: ctx.tag["Leases will expire naturally, probably 31 days after " "creation or renewal."] else: ctx.tag["Leases created or last renewed more than %s ago " "will be considered expired." % abbreviate_time(lc.override_lease_duration)] else: assert lc.mode == "cutoff-date" localizedutcdate = time.strftime("%d-%b-%Y", time.gmtime(lc.cutoff_date)) isoutcdate = time_format.iso_utc_date(lc.cutoff_date) ctx.tag["Leases created or last renewed before %s (%s) UTC " "will be considered expired." % (isoutcdate, localizedutcdate, )] if len(lc.mode) > 2: ctx.tag[" The following sharetypes will be expired: ", " ".join(sorted(lc.sharetypes_to_expire)), "."] return ctx.tag
def render_lease_expiration_mode(self, ctx, data): lc = self.storage.lease_checker if lc.mode == "age": if lc.override_lease_duration is None: ctx.tag["Leases will expire naturally, probably 31 days after " "creation or renewal."] else: ctx.tag["Leases created or last renewed more than %s ago " "will be considered expired." % abbreviate_time(lc.override_lease_duration)] else: assert lc.mode == "cutoff-date" localizedutcdate = time.strftime("%d-%b-%Y", time.gmtime(lc.cutoff_date)) isoutcdate = time_format.iso_utc_date(lc.cutoff_date) ctx.tag["Leases created or last renewed before %s (%s) UTC " "will be considered expired." % ( isoutcdate, localizedutcdate, )] if len(lc.mode) > 2: ctx.tag[" The following sharetypes will be expired: ", " ".join(sorted(lc.sharetypes_to_expire)), "."] return ctx.tag
def render_time(self, ctx, data): return abbreviate_time(data)
def test_abbreviate_time(self): self.failUnlessReallyEqual(common.abbreviate_time(None), "") self.failUnlessReallyEqual(common.abbreviate_time(1.234), "1.23s") self.failUnlessReallyEqual(common.abbreviate_time(0.123), "123ms") self.failUnlessReallyEqual(common.abbreviate_time(0.00123), "1.2ms") self.failUnlessReallyEqual(common.abbreviate_time(0.000123), "123us") self.failUnlessReallyEqual(common.abbreviate_time(-123000), "-123000000000us") self.failUnlessReallyEqual(common.abbreviate_time(2.5), "2.50s") self.failUnlessReallyEqual(common.abbreviate_time(0.25), "250ms") self.failUnlessReallyEqual(common.abbreviate_time(0.0021), "2.1ms") self.failUnlessReallyEqual(common.abbreviate_time(None), "") self.failUnlessReallyEqual(common.abbreviate_time(2.5), "2.50s") self.failUnlessReallyEqual(common.abbreviate_time(0.25), "250ms") self.failUnlessReallyEqual(common.abbreviate_time(0.0021), "2.1ms") self.failUnlessReallyEqual(common.abbreviate_time(0.000123), "123us") self.failUnlessReallyEqual(common.abbreviate_rate(None), "") self.failUnlessReallyEqual(common.abbreviate_rate(2500000), "2.50MBps") self.failUnlessReallyEqual(common.abbreviate_rate(30100), "30.1kBps") self.failUnlessReallyEqual(common.abbreviate_rate(123), "123Bps")
def _get_update_status_timing(self, name, tag): res = self._update_status.timings.get(name) if not res: return tag("0") return tag(abbreviate_time(res))