From 44902c51522839ed4ce343f854a30c758ff2e23c Mon Sep 17 00:00:00 2001
From: Zooko O'Whielacronx <zooko@zooko.com>
Date: Wed, 23 May 2007 15:08:55 -0700
Subject: [PATCH] add unit test for "advertised_ip_addresses" feature and fix
 bug in that feature uncovered by this unit test

---
 src/allmydata/node.py           |  2 +-
 src/allmydata/test/test_node.py | 43 +++++++++++++++++++++++++++++++++
 2 files changed, 44 insertions(+), 1 deletion(-)
 create mode 100644 src/allmydata/test/test_node.py

diff --git a/src/allmydata/node.py b/src/allmydata/node.py
index 750e61fb..c55fd413 100644
--- a/src/allmydata/node.py
+++ b/src/allmydata/node.py
@@ -111,7 +111,7 @@ class Node(service.MultiService):
                     (addr, dummy, aportnum,) = mo.groups()
                     if aportnum is None:
                         aportnum = portnum
-                    addresses.append("%s:%d" % (addr, aportnum,))
+                    addresses.append("%s:%d" % (addr, int(aportnum),))
         except EnvironmentError:
             pass
 
diff --git a/src/allmydata/test/test_node.py b/src/allmydata/test/test_node.py
new file mode 100644
index 00000000..ad223a82
--- /dev/null
+++ b/src/allmydata/test/test_node.py
@@ -0,0 +1,43 @@
+
+from twisted.trial import unittest
+from twisted.internet import defer, reactor
+from twisted.python import log
+
+from foolscap import Tub, Referenceable
+from foolscap.eventual import flushEventualQueue
+from twisted.application import service
+from allmydata.node import Node
+from allmydata.util import idlib, testutil
+
+class LoggingMultiService(service.MultiService):
+    def log(self, msg):
+        pass
+
+class TestNode(Node):
+    CERTFILE='DEFAULT_CERTFILE_BLANK'
+    PORTNUMFILE='DEFAULT_PORTNUMFILE_BLANK'
+
+class TestCase(unittest.TestCase, testutil.SignalMixin):
+    def setUp(self):
+        self.parent = LoggingMultiService()
+        self.parent.startService()
+    def tearDown(self):
+        log.msg("%s.tearDown" % self.__class__.__name__)
+        d = defer.succeed(None)
+        d.addCallback(lambda res: self.parent.stopService())
+        d.addCallback(flushEventualQueue)
+        return d
+
+    def test_advertised_ip_addresses(self):
+        open('advertised_ip_addresses','w').write('1.2.3.4:5')
+
+        n = TestNode()
+        n.setServiceParent(self.parent)
+        d = n.when_tub_ready()
+
+        def _check_addresses(ignored_result):
+            self.failUnless("1.2.3.4:5" in n.tub.registerReference(n), n.tub.registerReference(n))
+
+        d.addCallback(_check_addresses)
+        return d
+
-- 
2.45.2