[bridgedb/master] Only test fakeBridges with valid IPs in Tests.py.

commit 5acdad9598c0e24619f212456da49463b97cac83 Author: Isis Lovecruft <isis@torproject.org> Date: Fri Dec 20 03:47:24 2013 +0000 Only test fakeBridges with valid IPs in Tests.py. The random IP address generation in these old unittests would mean that some tests would unreproducibly fail due to their fakeBridge()s using invalid IP addresses. --- lib/bridgedb/Tests.py | 49 +++++++++++++++++++++++++++++++++++-------------- 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/lib/bridgedb/Tests.py b/lib/bridgedb/Tests.py index 5c48cc4..1d4679a 100644 --- a/lib/bridgedb/Tests.py +++ b/lib/bridgedb/Tests.py @@ -31,6 +31,7 @@ from bridgedb.Filters import filterBridgesByNotBlockedIn from bridgedb.Stability import BridgeHistory +from bridgedb.parse import addr from bridgedb.parse import networkstatus from math import log @@ -112,16 +113,24 @@ def fakeBridge(orport=8080, running=True, stable=True, or_addresses=False, b = bridgedb.Bridges.Bridge(nn,ip,orport,fingerprint=fp) b.setStatus(running, stable) + oraddrs = [] if or_addresses: for i in xrange(8): - address,portlist = networkstatus.parseALine( - "%s:%s" % (randomIPString(), randomPortSpec())) - try: - portlist.add(b.or_addresses[address]) - except KeyError: - pass - finally: - b.or_addresses[address] = portlist + # Only add or_addresses if they are valid. Otherwise, the test + # will randomly fail if an invalid address is chosen: + address = randomIP4String() + portlist = addr.PortList(randomPortSpec()) + if addr.isValidIP(address): + oraddrs.append((address, portlist,)) + + for address, portlist in oraddrs: + networkstatus.parseALine("{0}:{1}".format(address, portlist)) + try: + portlist.add(b.or_addresses[address]) + except KeyError: + pass + finally: + b.or_addresses[address] = portlist if transports: for i in xrange(0,8): @@ -138,13 +147,25 @@ def fakeBridge6(orport=8080, running=True, stable=True, or_addresses=False, b = bridgedb.Bridges.Bridge(nn,ip,orport,fingerprint=fp) b.setStatus(running, stable) + oraddrs = [] if or_addresses: - for i in xrange(0,8): - address, portlist = networkstatus.parseALine("a %s:%s" % ( - randomIPString(), randomPortSpec())) - - self.assertIsNotNone(address, "fakeBridge6(): Got null address!") - self.assertIsNotNone(address, "fakeBridge6(): Got null portlist!") + for i in xrange(8): + # Only add or_addresses if they are valid. Otherwise, the test + # will randomly fail if an invalid address is chosen: + address = randomIP6() + portlist = addr.PortList(randomPortSpec()) + if addr.isValidIP(address): + address = bracketIP6(address) + oraddrs.append((address, portlist,)) + + for address, portlist in oraddrs: + networkstatus.parseALine("{0}:{1}".format(address, portlist)) + try: + portlist.add(b.or_addresses[address]) + except KeyError: + pass + finally: + b.or_addresses[address] = portlist try: portlist.add(b.or_addresses[address])
participants (1)
-
isis@torproject.org