[Checkins] SVN: zc.zkzopeserver/trunk/s Fixed: servers were registered with the host information returned by

Jim Fulton jim at zope.com
Wed Feb 1 18:16:50 UTC 2012


Log message for revision 124277:
  Fixed: servers were registered with the host information returned by
  socket.getsockname(), which was unhelpful.
  
  Added more tests.
  

Changed:
  U   zc.zkzopeserver/trunk/setup.py
  U   zc.zkzopeserver/trunk/src/zc/zkzopeserver/README.txt
  U   zc.zkzopeserver/trunk/src/zc/zkzopeserver/__init__.py
  U   zc.zkzopeserver/trunk/src/zc/zkzopeserver/tests.py

-=-
Modified: zc.zkzopeserver/trunk/setup.py
===================================================================
--- zc.zkzopeserver/trunk/setup.py	2012-02-01 14:41:55 UTC (rev 124276)
+++ zc.zkzopeserver/trunk/setup.py	2012-02-01 18:16:49 UTC (rev 124277)
@@ -16,7 +16,7 @@
 install_requires = ['setuptools', 'zc.zk', 'zope.server']
 extras_require = dict(
     test=['zope.testing', 'zc.zk [static,test]', 'zc.monitor',
-          'zc.zservertracelog']
+          'zc.zservertracelog', 'mock', 'netifaces']
     )
 
 entry_points = """

Modified: zc.zkzopeserver/trunk/src/zc/zkzopeserver/README.txt
===================================================================
--- zc.zkzopeserver/trunk/src/zc/zkzopeserver/README.txt	2012-02-01 14:41:55 UTC (rev 124276)
+++ zc.zkzopeserver/trunk/src/zc/zkzopeserver/README.txt	2012-02-01 18:16:49 UTC (rev 124277)
@@ -107,7 +107,7 @@
 would look something like::
 
     /providers
-      /0.0.0.0:61181
+      /1.2.3.4:61181
         monitor = u'127.0.0.1:61182'
         pid = 4525
 
@@ -136,7 +136,8 @@
     >>> import re, zope.testing.renormalizing
     >>> checker = zope.testing.renormalizing.RENormalizing([
     ...     (re.compile('pid = \d+'), 'pid = 999'),
-    ...     (re.compile('(0\.0\.[01]):\d+'), '\1:99999'),
+    ...     (re.compile('1.2.3.4:\d+'), '1.2.3.4:99999'),
+    ...     (re.compile('127.0.0.1:\d+'), '1.2.3.4:99999'),
     ...     ])
     >>> actual_tree = zk.export_tree('/fooservice/providers', True)
     >>> checker.check_output(expected_tree.strip(), actual_tree.strip(), 0)
@@ -219,6 +220,12 @@
 Change History
 ==============
 
+0.2.1 (2012-02-??)
+------------------
+
+- Fixed: servers were registered with the host information returned by
+  socket.getsockname(), which was unhelpful.
+
 0.2.0 (2012-01-18)
 ------------------
 

Modified: zc.zkzopeserver/trunk/src/zc/zkzopeserver/__init__.py
===================================================================
--- zc.zkzopeserver/trunk/src/zc/zkzopeserver/__init__.py	2012-02-01 14:41:55 UTC (rev 124276)
+++ zc.zkzopeserver/trunk/src/zc/zkzopeserver/__init__.py	2012-02-01 18:16:49 UTC (rev 124277)
@@ -60,15 +60,15 @@
 
     props = {}
     if monitor_server:
-        host, port = monitor_server.rsplit(':', 1)
+        mhost, mport = monitor_server.rsplit(':', 1)
         global zc
         import zc.monitor
-        props['monitor'] = "%s:%s" % zc.monitor.start((host, int(port)))
+        props['monitor'] = "%s:%s" % zc.monitor.start((mhost, int(mport)))
 
     server.ZooKeeper = zc.zk.ZooKeeper(
         zookeeper, session_timeout and int(session_timeout))
     server.ZooKeeper.register_server(
-        path, "%s:%s" % server.socket.getsockname(), **props)
+        path, "%s:%s" % (host, server.socket.getsockname()[1]), **props)
 
     map = asyncore.socket_map
     poll_fun = asyncore.poll

Modified: zc.zkzopeserver/trunk/src/zc/zkzopeserver/tests.py
===================================================================
--- zc.zkzopeserver/trunk/src/zc/zkzopeserver/tests.py	2012-02-01 14:41:55 UTC (rev 124276)
+++ zc.zkzopeserver/trunk/src/zc/zkzopeserver/tests.py	2012-02-01 18:16:49 UTC (rev 124277)
@@ -11,11 +11,13 @@
 # FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
+from zope.testing import setupstack
 import asyncore
 import doctest
 import manuel.capture
 import manuel.doctest
 import manuel.testing
+import mock
 import re
 import time
 import unittest
@@ -54,7 +56,7 @@
     ...         zookeeper='zookeeper.example.com:2181',
     ...         path='/fooservice/providers',
     ...         session_timeout='4242',
-    ...         host='127.0.0.1',
+    ...         host='localhost',
     ...         port='3042',
     ...         threads='3',
     ...         )
@@ -67,9 +69,11 @@
 
     >>> zk.print_tree('/fooservice/providers')
     /providers
-      /127.0.0.1:3042
+      /localhost:3042
         pid = 3699
 
+    Note that localhost didn't get resolved!
+
     How many can we do at once? Should be 3
 
     >>> [url] = [('http://%s/' % addr)
@@ -104,7 +108,43 @@
     >>> zk.close()
     """
 
+def test_monitor_server_w_empty_host():
+    r"""
 
+    >>> @zc.thread.Thread
+    ... def server():
+    ...     zc.zkzopeserver.run(
+    ...         slow_app, {},
+    ...         zookeeper='zookeeper.example.com:2181',
+    ...         path='/fooservice/providers',
+    ...         monitor_server=':0',
+    ...         )
+
+    >>> import zc.zkzopeserver
+    >>> zc.zkzopeserver.event_for_testing.wait(1)
+    >>> zk = zc.zk.ZooKeeper('zookeeper.example.com:2181')
+
+    >>> zk.export_tree('/fooservice/providers', ephemeral=True
+    ...    ).strip().split('\n')[-2].strip().split(':')[0]
+    u"monitor = u'"
+
+    >>> zc.zkzopeserver.stop_for_testing(server)
+    >>> zk.close()
+
+    """
+
+def readmesetup(test):
+    zc.zk.testing.setUp(test)
+    setupstack.context_manager(
+        test, mock.patch('netifaces.interfaces')).return_value = 'iface'
+    setupstack.context_manager(
+        test, mock.patch('netifaces.ifaddresses')
+        ).return_value = {2: [dict(addr='1.2.3.4')]}
+
+def readmeteardown(test):
+    setupstack.tearDown(test)
+    zc.zk.testing.tearDown(test)
+
 def test_suite():
     checker = zope.testing.renormalizing.RENormalizing([
         (re.compile('pid = \d+'), 'pid = 9999'),
@@ -115,7 +155,7 @@
         manuel.testing.TestSuite(
             manuel.doctest.Manuel(checker=checker) + manuel.capture.Manuel(),
             'README.txt',
-            setUp=zc.zk.testing.setUp, tearDown=zc.zk.testing.tearDown,
+            setUp=readmesetup, tearDown=readmeteardown,
             ),
         doctest.DocTestSuite(
             setUp=zc.zk.testing.setUp, tearDown=zc.zk.testing.tearDown,



More information about the checkins mailing list