[tor-commits] [sbws/master] Pass state file path and scale constant

juga at torproject.org juga at torproject.org
Tue Sep 18 09:26:11 UTC 2018


commit cf9a55a359d8071a8bc2abdfeb1886804165c4bd
Author: juga0 <juga at riseup.net>
Date:   Wed Aug 29 15:01:38 2018 +0000

    Pass state file path and scale constant
    
    instead of conf and args, so that it's easier to test the method
    without creating ConfigParser and ArgumentParser objects.
---
 sbws/core/generate.py |  3 ++-
 sbws/lib/v3bwfile.py  | 18 ++++++++++--------
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/sbws/core/generate.py b/sbws/core/generate.py
index f10ecc1..777b05e 100644
--- a/sbws/core/generate.py
+++ b/sbws/core/generate.py
@@ -58,7 +58,8 @@ def main(args, conf):
         log.warning('No recent results, so not generating anything. (Have you '
                     'ran sbws scanner recently?)')
         return
-    bw_file = V3BWFile.from_arg_results(args, conf, results)
+    state_fpath = conf.getpath('paths', 'state_fname')
+    bw_file = V3BWFile.from_results(results, state_fpath, args.scale_constant)
     output = args.output or \
         conf.getpath('paths', 'v3bw_fname').format(now_fname())
     bw_file.write(output)
diff --git a/sbws/lib/v3bwfile.py b/sbws/lib/v3bwfile.py
index 576345e..ef9eadc 100644
--- a/sbws/lib/v3bwfile.py
+++ b/sbws/lib/v3bwfile.py
@@ -115,11 +115,11 @@ class V3BWHeader(object):
         return self.strv200
 
     @classmethod
-    def from_results(cls, conf, results):
+    def from_results(cls, results, state_fpath=''):
         kwargs = dict()
         latest_bandwidth = cls.latest_bandwidth_from_results(results)
         earliest_bandwidth = cls.earliest_bandwidth_from_results(results)
-        generator_started = cls.generator_started_from_file(conf)
+        generator_started = cls.generator_started_from_file(state_fpath)
         timestamp = str(latest_bandwidth)
         kwargs['latest_bandwidth'] = unixts_to_isodt_str(latest_bandwidth)
         kwargs['earliest_bandwidth'] = unixts_to_isodt_str(earliest_bandwidth)
@@ -159,12 +159,12 @@ class V3BWHeader(object):
         return self.from_lines_v110(text.split(LINE_SEP))
 
     @staticmethod
-    def generator_started_from_file(conf):
+    def generator_started_from_file(state_fpath):
         '''
         ISO formatted timestamp for the time when the scanner process most
         recently started.
         '''
-        state = State(conf.getpath('paths', 'state_fname'))
+        state = State(state_fpath)
         if 'scanner_started' in state:
             return state['scanner_started']
         else:
@@ -376,12 +376,14 @@ class V3BWFile(object):
                                            for bw_line in self.bw_lines])
 
     @classmethod
-    def from_arg_results(cls, args, conf, results):
+    def from_results(cls, results, state_fpath='',
+                     scale_constant=None):
         bw_lines = [V3BWLine.from_results(results[fp]) for fp in results]
         bw_lines = sorted(bw_lines, key=lambda d: d.bw, reverse=True)
-        if args.scale:
-            bw_lines = scale_lines(bw_lines, args.scale_constant)
-        header = V3BWHeader.from_results(conf, results)
+        if scale_constant:
+            bw_lines = cls.bw_sbws_scale(bw_lines, scale_constant)
+            cls.warn_if_not_accurate_enough(bw_lines, scale_constant)
+        header = V3BWHeader.from_results(results, state_fpath)
         f = cls(header, bw_lines)
         return f
 





More information about the tor-commits mailing list