commit 98cf68d778480aa005e5914cac47164f169b87b9 Author: Isis Lovecruft isis@torproject.org Date: Thu Apr 16 20:37:24 2015 +0000
Fix Filters.filterBridgesByNotBlockedIn to work with new Bridge class. --- lib/bridgedb/Filters.py | 37 +++++++++++++++++-------------------- lib/bridgedb/bridgerequest.py | 4 +--- lib/bridgedb/test/legacy_Tests.py | 2 +- 3 files changed, 19 insertions(+), 24 deletions(-)
diff --git a/lib/bridgedb/Filters.py b/lib/bridgedb/Filters.py index 94d4325..41df297 100644 --- a/lib/bridgedb/Filters.py +++ b/lib/bridgedb/Filters.py @@ -92,28 +92,25 @@ def filterBridgesByTransport(methodname, addressClass=None): funcs[ruleset] = _filterByTransport return _filterByTransport
-def filterBridgesByNotBlockedIn(countryCode, addressClass=None, methodname=None): - """ if at least one address:port of the selected addressClass and - (optional) transport type is not blocked in countryCode, return True +def filterBridgesByNotBlockedIn(countryCode): + """Return ``True`` if at least one of a bridge's (transport) bridgelines isn't + known to be blocked in **countryCode**. + + :param str countryCode: A two-letter country code. + :rtype: bool + :returns: ``True`` if at least one address of the bridge isn't blocked. + ``False`` otherwise. """ - # default to IPv4 if not specified - if addressClass is None: addressClass = IPv4Address - assert (addressClass) in (IPv4Address, IPv6Address) - ruleset = frozenset([countryCode, addressClass, methodname]) + countryCode = countryCode.lower() + ruleset = frozenset([countryCode]) try: return funcs[ruleset] except KeyError: - def f(bridge): - if bridge.isBlocked(countryCode, addressClass, methodname): - if addressClass is IPv4Address: ac = "IPv4" - else: ac = "IPv6" - logmsg = "Removing %s from set of results for country" - logmsg += " '%s' with address class %s and transport %s" - logging.debug(logmsg % ( bridge.fingerprint, countryCode, ac, - methodname)) + def _filterByNotBlockedIn(bridge): + if bridge.isBlockedIn(countryCode): return False - return True # not blocked - f.__name__ = "filterBridgesNotBlockedIn(%s,%s,%s)" % \ - (countryCode,methodname,addressClass) - funcs[ruleset] = f - return f + return True + _filterByNotBlockedIn.__name__ = "filterBridgesByNotBlockedIn(%s)" % countryCode + setattr(_filterByNotBlockedIn, "description", "unblocked=%s" % countryCode) + funcs[ruleset] = _filterByNotBlockedIn + return _filterByNotBlockedIn diff --git a/lib/bridgedb/bridgerequest.py b/lib/bridgedb/bridgerequest.py index f4eaaa4..532558d 100644 --- a/lib/bridgedb/bridgerequest.py +++ b/lib/bridgedb/bridgerequest.py @@ -182,6 +182,4 @@ class BridgeRequestBase(object): self.addFilter(Filters.filterBridgesByTransport(transport, self.addressClass)) for country in self.notBlockedIn: - self.addFilter(Filters.filterBridgesByNotBlockedIn(country.lower(), - self.addressClass, - transport)) + self.addFilter(Filters.filterBridgesByNotBlockedIn(country.lower())) diff --git a/lib/bridgedb/test/legacy_Tests.py b/lib/bridgedb/test/legacy_Tests.py index cc1ba6d..5621515 100644 --- a/lib/bridgedb/test/legacy_Tests.py +++ b/lib/bridgedb/test/legacy_Tests.py @@ -357,7 +357,7 @@ class IPBridgeDistTests(unittest.TestCase): for i in xrange(5): b = d.getBridges(randomIPString(), "x", 1, bridgeFilterRules=[ - filterBridgesByNotBlockedIn("cn", methodname='obfs2'), + filterBridgesByNotBlockedIn("cn"), filterBridgesByTransport('obfs2'), ]) try: assert len(b) > 0
tor-commits@lists.torproject.org