commit 0ab876d82f2a03861f3c4ce4a01a3a59fa38308c Author: Damian Johnson atagar@torproject.org Date: Sat Mar 14 20:19:10 2015 -0700
Use 'GETINFO bw-event-cache' to prepopulate bandwidth graph information
In #14128 added a new controller command that provided up to five minutes of bandwidth information. This... is awesome! Not only does it negate any need for reading tor's state file (a dirty hack), but it *greatly* improves our user experience since we don't need to swap to 15-minute interval graphs! --- seth/graph_panel.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-)
diff --git a/seth/graph_panel.py b/seth/graph_panel.py index 1f06890..b89c667 100644 --- a/seth/graph_panel.py +++ b/seth/graph_panel.py @@ -190,13 +190,25 @@ class BandwidthStats(GraphCategory): GraphCategory.__init__(self, clone)
if not clone: - # We both show our 'total' attributes and use it to determine our average. - # - # If we can get *both* our start time and the totals from tor (via 'GETINFO - # traffic/*') then that's ideal, but if not then just track the total for - # the time seth is run. + # fill in past bandwidth information
controller = tor_controller() + bw_entries, is_successful = controller.get_info('bw-event-cache', None), True + + if bw_entries: + for entry in bw_entries.split(): + entry_comp = entry.split(',') + + if len(entry_comp) != 2 or not entry_comp[0].isdigit() or not entry_comp[1].isdigit(): + log.warn("Tor's 'GETINFO bw-event-cache' provided malformed output: %s" % bw_entries) + is_successful = False + break + + self.primary.update(int(entry_comp[0])) + self.secondary.update(int(entry_comp[1])) + + if is_successful: + log.info('Bandwidth graph has information for the last %s' % str_tools.time_label(len(bw_entries.split()), is_long = True))
read_total = controller.get_info('traffic/read', None) write_total = controller.get_info('traffic/written', None)
tor-commits@lists.torproject.org