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

isis at torproject.org isis at torproject.org
Sun Jan 12 06:06:35 UTC 2014


commit 5acdad9598c0e24619f212456da49463b97cac83
Author: Isis Lovecruft <isis at 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])





More information about the tor-commits mailing list