[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [arm/master] Use 'GETINFO bw-event-cache' to prepopulate bandwidth graph information
commit 0ab876d82f2a03861f3c4ce4a01a3a59fa38308c
Author: Damian Johnson <atagar@xxxxxxxxxxxxxx>
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 mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits