Rev 5930: Fix spurious test test_server_exception_with_hook failure in file:///home/vila/src/bzr/bugs/789167-test-server/

Vincent Ladeuil v.ladeuil+lp at free.fr
Sat May 28 08:40:17 UTC 2011


At file:///home/vila/src/bzr/bugs/789167-test-server/

------------------------------------------------------------
revno: 5930
revision-id: v.ladeuil+lp at free.fr-20110528084017-1t8dsk8r10x5qu0u
parent: pqm at pqm.ubuntu.com-20110527171203-s50ymd0mviaw4c7k
fixes bug(s): https://launchpad.net/bugs/789167
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: 789167-test-server
timestamp: Sat 2011-05-28 10:40:17 +0200
message:
  Fix spurious test test_server_exception_with_hook failure 
-------------- next part --------------
=== modified file 'bzrlib/smart/server.py'
--- a/bzrlib/smart/server.py	2011-05-27 13:12:09 +0000
+++ b/bzrlib/smart/server.py	2011-05-28 08:40:17 +0000
@@ -136,10 +136,10 @@
 
     def serve(self, thread_name_suffix=''):
         self._should_terminate = False
+        self._started.set()
         # for hooks we are letting code know that a server has started (and
         # later stopped).
         self.run_server_started_hooks()
-        self._started.set()
         try:
             try:
                 while not self._should_terminate:

=== modified file 'bzrlib/tests/blackbox/test_serve.py'
--- a/bzrlib/tests/blackbox/test_serve.py	2011-05-27 13:12:23 +0000
+++ b/bzrlib/tests/blackbox/test_serve.py	2011-05-28 08:40:17 +0000
@@ -81,7 +81,8 @@
             'run_bzr_serve_then_func hook')
         # start a TCP server
         try:
-            out, err = self.run_bzr(['serve'] + list(serve_args), retcode=retcode)
+            out, err = self.run_bzr(['serve'] + list(serve_args),
+                                    retcode=retcode)
         except KeyboardInterrupt, e:
             out, err = e.args
         return out, err
@@ -102,9 +103,12 @@
         SmartTCPServer.hooks.install_named_hook(
             'server_exception', hook,
             'test_server_except_hook hook')
-        args = []
+        args = ['--port', 'localhost:0']
         out, err = self.run_bzr_serve_then_func(args, retcode=0)
-        self.assertEqual('listening on port: 4155\ncatching exception\n', err)
+        err_lines = err.splitlines()
+        self.assertLength(2, err_lines)
+        self.assertStartsWith(err_lines[0],'listening on port:')
+        self.assertEqual('catching exception', err_lines[1])
 
     def test_server_exception_no_hook(self):
         """test exception without hook returns error"""

=== modified file 'doc/en/release-notes/bzr-2.4.txt'
--- a/doc/en/release-notes/bzr-2.4.txt	2011-05-27 17:12:03 +0000
+++ b/doc/en/release-notes/bzr-2.4.txt	2011-05-28 08:40:17 +0000
@@ -36,6 +36,9 @@
 .. Fixes for situations where bzr would previously crash or give incorrect
    or undesirable results.
 
+* Fix a race condition for ``server_started`` hooks leading to a spurious
+  test failure. (Vincent Ladeuil, #789167)
+
 * Pass the ``build_mo`` command to the rest of the setup() calls in
   setup.py. The ``bdist_wininst`` and ``py2exe`` code paths were failing
   because ``build_mo`` became a required step that they didn't know about.



More information about the bazaar-commits mailing list