[tor-commits] [compass/master] Added support for using a custom named datafile.

karsten at torproject.org karsten at torproject.org
Wed Jan 16 15:09:56 UTC 2013


commit 809e93455d5f80b213d8b2a4fbcf585422f4ecb6
Author: Chris Wacek <cwacek at cs.georgetown.edu>
Date:   Tue Jan 15 15:40:41 2013 -0500

    Added support for using a custom named datafile.
---
 app.py     |    6 +++++-
 compass.py |   13 ++++++++-----
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/app.py b/app.py
index 45217a6..d68c5b9 100644
--- a/app.py
+++ b/app.py
@@ -120,7 +120,11 @@ def index():
 def json_result():
     options = Opt(dict(request.args.items()))
 
-    stats = compass.RelayStats(options)
+    if "TESTING_DATAFILE" in app.config and "TESTING" in app.config:
+      stats = compass.RelayStats(options,app.config['TESTING_DATAFILE'])
+    else:
+      stats = compass.RelayStats(options)
+
     results = stats.select_relays(stats.relays, options)
 
     relays = stats.sort_and_reduce(results,
diff --git a/compass.py b/compass.py
index 1f8d171..18e7c8c 100755
--- a/compass.py
+++ b/compass.py
@@ -184,17 +184,18 @@ class InverseFilter(BaseFilter):
         return inverse_relays
 
 class RelayStats(object):
-    def __init__(self, options):
+    def __init__(self, options, custom_datafile="details.json"):
         self._data = None
         self._filters = self._create_filters(options)
         self._get_group = self._get_group_function(options)
         self._relays = None
+        self._datafile_name = custom_datafile
 
     @property
     def data(self):
-        if not self._data:
-            self._data = json.load(file(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'details.json')))
-        return self._data
+      if not self._data:
+        self._data = json.load(file(os.path.join(os.path.dirname(os.path.abspath(__file__)), self._datafile_name)))
+      return self._data
 
     @property
     def relays(self):
@@ -495,6 +496,8 @@ def create_option_parser():
                      help="cut the length of the line output at 70 chars")
     group.add_option("-j", "--json", action="store_true",
                      help="output in JSON rather than human-readable format")
+    group.add_option("--datafile", default="details.json",
+                     help="use a custom datafile (Default: 'details.json')")
     parser.add_option_group(group)
     return parser
 
@@ -551,7 +554,7 @@ if '__main__' == __name__:
     if not os.path.exists(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'details.json')):
         parser.error("Did not find details.json.  Re-run with --download.")
 
-    stats = RelayStats(options)
+    stats = RelayStats(options,options.datafile)
     results = stats.select_relays(stats.relays,options)
 
     sorted_results = stats.sort_and_reduce(results,options)





More information about the tor-commits mailing list