commit 0bc21e19779e1e139aebf814fa067c581ff1e1ad Author: Matthew Finkel Matthew.Finkel@gmail.com Date: Wed Jul 10 19:30:20 2013 +0000
More bridge pool assignment debug output
Also more readable descriptor parser debug logging --- lib/bridgedb/Bridges.py | 37 +++++++++++++++++++++---------------- lib/bridgedb/Main.py | 3 +++ 2 files changed, 24 insertions(+), 16 deletions(-)
diff --git a/lib/bridgedb/Bridges.py b/lib/bridgedb/Bridges.py index 7dab6d9..cf46b3b 100644 --- a/lib/bridgedb/Bridges.py +++ b/lib/bridgedb/Bridges.py @@ -504,16 +504,16 @@ def parseExtraInfoFile(f): logging.debug("Parsing extra-info line") line = line[11:] (nickname, ID) = line.split() - logging.debug("Parsed Nickname: %s", nickname) + logging.debug(" Parsed Nickname: %s", nickname) if is_valid_fingerprint(ID): - logging.debug("Parsed fingerprint: %s", ID) + logging.debug(" Parsed fingerprint: %s", ID) ID = fromHex(ID) else: - logging.debug("Parsed invalid fingerprint: %s", ID) + logging.debug(" Parsed invalid fingerprint: %s", ID)
# get the transport line if ID and line.startswith("transport "): - logging.debug("Parsing transport line") + logging.debug(" Parsing transport line") fields = line[10:].split() # [ arglist ] field, optional if len(fields) >= 3: @@ -524,7 +524,7 @@ def parseExtraInfoFile(f): try: k,v = arg.split('=') except ValueError: continue argdict[k] = v - logging.debug("Parsing Argument: %s: %s", k, v) + logging.debug(" Parsing Argument: %s: %s", k, v)
# get the required fields, method name and address if len(fields) >= 2: @@ -536,8 +536,8 @@ def parseExtraInfoFile(f): m = regex.match(fields[1]) address = ipaddr.IPAddress(m.group(1)) port = int(m.group(2)) - logging.debug("Parsed Transport: %s", method_name) - logging.debug("Parsed Transport Address: %s:%d", address, port) + logging.debug(" Parsed Transport: %s", method_name) + logging.debug(" Parsed Transport Address: %s:%d", address, port) yield ID, method_name, address, port, argdict except (IndexError, ValueError, AttributeError): # skip this line @@ -553,6 +553,8 @@ def parseStatusFile(f): num_or_address_lines = 0 or_addresses = {} for line in f: + if not ID: + logging.debug("Parsing network status line") line = line.strip() if line.startswith("opt "): line = line[4:] @@ -563,37 +565,38 @@ def parseStatusFile(f): timestamp = time.mktime(time.strptime( " ".join(line.split()[4:6]), "%Y-%m-%d %H:%M:%S") ) - logging.debug("Timestamp: %s", timestamp) + logging.debug(" Fingerprint: %s", toHex(ID)) + logging.debug(" Timestamp: %s", timestamp) except binascii.Error: - logging.warn("Unparseable base64 ID %r", line.split()[2]) + logging.warn(" Unparseable base64 ID %r", line.split()[2]) except ValueError: timestamp = None - logging.debug("Timestamp; Invalid") + logging.debug(" Timestamp; Invalid")
elif ID and line.startswith("a "): if num_or_address_lines < 8: line = line[2:] try: address,portlist = parseORAddressLine(line) - logging.debug("Parsed address: %s", address) - logging.debug("Parsed port(s): %s", portlist) + logging.debug(" Parsed address: %s", address) + logging.debug(" Parsed port(s): %s", portlist) except ParseORAddressError: - logging.debug("Failed to Parsed address: %s", address) + logging.debug(" Failed to Parsed address: %s", address) try: or_addresses[address].add(portlist) except KeyError: or_addresses[address] = portlist else: - logging.warn("Skipping extra or-address line "\ + logging.warn(" Skipping extra or-address line "\ "from Bridge with ID %r" % ID) num_or_address_lines += 1
elif ID and timestamp and line.startswith("s "): flags = line.split() - logging.debug("Parsed Flags: %s", flags) + logging.debug(" Parsed Flags: %s", flags) yield ID, ("Running" in flags), ("Stable" in flags), or_addresses, timestamp timestamp = ID = None - logging.debug("Total: %d OR address lines", num_or_address_lines) + logging.debug(" Total: %d OR address lines", num_or_address_lines) num_or_address_lines = 0 or_addresses = {}
@@ -1026,6 +1029,8 @@ class FilteredBridgeSplitter(BridgeHolder): desc.append(g.description)
# add transports + logging.debug("%s supports %d transports" % (toHex(b.getID()), + len(b.transports))) for transport in b.transports: desc.append("transport=%s"%(transport.methodname))
diff --git a/lib/bridgedb/Main.py b/lib/bridgedb/Main.py index 621fcb9..f5ebc4e 100644 --- a/lib/bridgedb/Main.py +++ b/lib/bridgedb/Main.py @@ -232,8 +232,10 @@ def load(cfg, splitter, clear=False): for transport in Bridges.parseExtraInfoFile(f): ID, method_name, address, port, argdict = transport if bridges[ID].running: + logging.debug(" Appending transport to running bridge") bridges[ID].transports.append(Bridges.PluggableTransport(bridges[ID], method_name, address, port, argdict)) + assert bridges[ID].transports, "We added a transport but it disappeared!" logging.debug("Closing extra-info document") f.close() if hasattr(cfg, "COUNTRY_BLOCK_FILE"): @@ -417,6 +419,7 @@ def startup(cfg):
# Dump bridge pool assignments to disk. try: + logging.debug("Dumping pool assignments file") f = open(cfg.ASSIGNMENTS_FILE, 'a') f.write("bridge-pool-assignment %s\n" % time.strftime("%Y-%m-%d %H:%M:%S"))