commit 2de77ba16992b8a967bfe68cebc2c17c2b3998fc Author: Isis Lovecruft isis@torproject.org Date: Tue Apr 21 02:33:08 2015 +0000
Rewrite testDistWithFilterBlockedCountriesAdvanced() in legacy_Tests. --- lib/bridgedb/test/legacy_Tests.py | 41 +------------------------------------ lib/bridgedb/test/test_Dist.py | 39 +++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 40 deletions(-)
diff --git a/lib/bridgedb/test/legacy_Tests.py b/lib/bridgedb/test/legacy_Tests.py index 2f1da67..95dc34e 100644 --- a/lib/bridgedb/test/legacy_Tests.py +++ b/lib/bridgedb/test/legacy_Tests.py @@ -183,44 +183,6 @@ class EmailBridgeDistTests(unittest.TestCase): {'example.com':'example.com'}, {'example.com':[]})
-class IPBridgeDistTests(unittest.TestCase): - - def testDistWithFilterBlockedCountriesAdvanced(self): - d = bridgedb.Dist.HTTPSDistributor(3, "Foo") - for _ in xrange(250): - d.insert(fakeBridge6(or_addresses=True, transports=True)) - d.insert(fakeBridge(or_addresses=True, transports=True)) - - for b in d.hashring.bridges: - # china blocks some transports - for pt in b.transports: - if random.choice(xrange(2)) > 0: - key = "%s:%s" % (pt.address, pt.port) - b.blockingCountries[key] = set(['cn']) - for address, portlist in b.or_addresses.items(): - # china blocks some transports - for port in portlist: - if random.choice(xrange(2)) > 0: - key = "%s:%s" % (address, port) - b.blockingCountries[key] = set(['cn']) - key = "%s:%s" % (b.ip, b.orport) - b.blockingCountries[key] = set(['cn']) - - # we probably will get at least one bridge back! - # it's pretty unlikely to lose a coin flip 250 times in a row - for i in xrange(5): - b = d.getBridges(randomIPString(), "x", - bridgeFilterRules=[ - filterBridgesByNotBlockedIn("cn"), - filterBridgesByTransport('obfs2'), - ]) - try: assert len(b) > 0 - except AssertionError: - print("epic fail") - b = d.getBridges(randomIPString(), "x", bridgeFilterRules=[ - filterBridgesByNotBlockedIn("us")]) - assert len(b) > 0 -
class SQLStorageTests(unittest.TestCase): def setUp(self): @@ -450,8 +412,7 @@ def testSuite(): suite = unittest.TestSuite() loader = unittest.TestLoader()
- for klass in [IPBridgeDistTests, SQLStorageTests, EmailBridgeDistTests, - BridgeStabilityTests]: + for klass in [SQLStorageTests, EmailBridgeDistTests, BridgeStabilityTests]: suite.addTest(loader.loadTestsFromTestCase(klass)) return suite
diff --git a/lib/bridgedb/test/test_Dist.py b/lib/bridgedb/test/test_Dist.py index e8a17e4..85c1b87 100644 --- a/lib/bridgedb/test/test_Dist.py +++ b/lib/bridgedb/test/test_Dist.py @@ -244,6 +244,45 @@ class HTTPSDistributorTests(unittest.TestCase): self.assertNotIn(b.fingerprint, blockedIR) self.assertGreater(len(bridges), 0)
+ def test_HTTPSDistributor_getBridges_with_varied_blocked_bridges(self): + dist = Dist.HTTPSDistributor(1, self.key) + bridges = self.bridges[:] + + for bridge in bridges: + # Pretend that China blocks all vanilla bridges: + bridge.setBlockedIn('cn', methodname='vanilla') + # Pretend that China blocks all obfs2: + bridge.setBlockedIn('cn', methodname='obfs2') + # Pretend that China blocks some obfs3: + if self.coinFlip(): + bridge.setBlockedIn('cn', methodname='obfs3') + + [dist.insert(bridge) for bridge in bridges] + + for i in xrange(5): + bridgeRequest1 = self.randomClientRequestForNotBlockedIn('cn') + bridgeRequest1.transports.append('obfs2') + bridgeRequest1.generateFilters() + # We shouldn't get any obfs2 bridges, since they're all blocked in + # China: + bridges = dist.getBridges(bridgeRequest1, "faketimestamp") + self.assertEqual(len(bridges), 0) + + bridgeRequest2 = self.randomClientRequestForNotBlockedIn('cn') + bridgeRequest2.transports.append('obfs3') + bridgeRequest2.generateFilters() + # We probably will get at least one bridge back! It's pretty + # unlikely to lose a coin flip 500 times in a row. + bridges = dist.getBridges(bridgeRequest2, "faketimestamp") + self.assertGreater(len(bridges), 0) + + bridgeRequest3 = self.randomClientRequestForNotBlockedIn('nl') + bridgeRequest3.transports.append('obfs3') + bridgeRequest3.generateFilters() + # We should get bridges, since obfs3 isn't blocked in netherlands: + bridges = dist.getBridges(bridgeRequest3, "faketimestamp") + self.assertGreater(len(bridges), 0) + def test_HTTPSDistributor_getBridges_with_proxy_and_nonproxy_users(self): """An HTTPSDistributor should give separate bridges to proxy users.""" proxies = ProxySet(['.'.join(['1.1.1', str(x)]) for x in range(1, 256)])
tor-commits@lists.torproject.org