[tor-commits] [sbws/master] new: destination: Add configuration option

juga at torproject.org juga at torproject.org
Thu Mar 21 18:30:42 UTC 2019


commit 1667e592c82e2e4823986f3542bceb6ab6a2feff
Author: juga0 <juga at riseup.net>
Date:   Sat Mar 16 13:15:56 2019 +0000

    new: destination: Add configuration option
    
    for the maximum number of failures before the destination is
    not functional.
    
    Part of #29589.
---
 docs/source/examples/sbws.example.ini |  4 ++++
 sbws/lib/destination.py               | 10 +++++++++-
 sbws/util/config.py                   |  6 ++++--
 3 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/docs/source/examples/sbws.example.ini b/docs/source/examples/sbws.example.ini
index 5b9b756..1a2d6a4 100644
--- a/docs/source/examples/sbws.example.ini
+++ b/docs/source/examples/sbws.example.ini
@@ -25,6 +25,10 @@ verify = False
 # Use ZZ if the location is unknown (for instance, a CDN).
 country = ZZ
 
+# Number of consecutive times that a destination could not be used to measure
+# before stopping to try to use it for a while that by default is 3h.
+max_num_failures = 3
+
 ## The following logging options are set by default.
 ## There is no need to change them unless other options are prefered.
 ; [logging]
diff --git a/sbws/lib/destination.py b/sbws/lib/destination.py
index 59474a6..d2ffa84 100644
--- a/sbws/lib/destination.py
+++ b/sbws/lib/destination.py
@@ -286,7 +286,15 @@ class Destination:
         assert 'url' in conf_section
         url = conf_section['url']
         verify = _parse_verify_option(conf_section)
-        return Destination(url, max_dl, verify)
+        try:
+            max_num_failures = conf_section.getint('max_num_failures')
+        except ValueError:
+            log.warning("Configuration max_num_failures is wrong, ignoring.")
+            max_num_failures = None
+        if max_num_failures:
+            return Destination(url, max_dl, verify, max_num_failures)
+        else:
+            return Destination(url, max_dl, verify)
 
 
 class DestinationList:
diff --git a/sbws/util/config.py b/sbws/util/config.py
index 6622ba3..e1bc429 100644
--- a/sbws/util/config.py
+++ b/sbws/util/config.py
@@ -406,14 +406,16 @@ def _validate_destinations(conf):
     urls = {
         'url': {},
     }
-    all_valid_keys = list(urls.keys()) + ['verify', 'country']
+    all_valid_keys = list(urls.keys()) \
+        + ['verify', 'country', 'max_num_failures']
     for sec in dest_sections:
         if sec not in conf:
             errors.append('{} is an enabled destination but is not a '
                           'section in the config'.format(sec))
             continue
         errors.extend(_validate_section_keys(
-            conf, sec, all_valid_keys, err_tmpl, allow_missing=['verify']))
+            conf, sec, all_valid_keys, err_tmpl,
+            allow_missing=['verify', 'max_num_failures']))
         errors.extend(_validate_section_urls(conf, sec, urls, err_tmpl))
         errors.extend(_validate_country(conf, sec, 'country', err_tmpl))
     return errors





More information about the tor-commits mailing list