From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Sat, 9 Feb 2019 17:53:51 +0000 (-0800) Subject: Make sure the BaseManager in test_multiprocessing is cleaned up correctly (GH-11653) X-Git-Tag: v3.7.3rc1~90 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6f0f764820d28a6a232634bd74906225c879a437;p=thirdparty%2FPython%2Fcpython.git Make sure the BaseManager in test_multiprocessing is cleaned up correctly (GH-11653) (cherry picked from commit 7b2a37b728b37e7da6d3f48c24c93a9dd0daa0fc) Co-authored-by: Pablo Galindo --- diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py index 487ad4b4ec0d..e76c20e9d935 100644 --- a/Lib/test/_test_multiprocessing.py +++ b/Lib/test/_test_multiprocessing.py @@ -2779,6 +2779,7 @@ class _TestRemoteManager(BaseTestCase): address=(test.support.HOST, 0), authkey=authkey, serializer=SERIALIZER ) manager.start() + self.addCleanup(manager.shutdown) p = self.Process(target=self._putter, args=(manager.address, authkey)) p.daemon = True @@ -2798,7 +2799,6 @@ class _TestRemoteManager(BaseTestCase): # Make queue finalizer run before the server is stopped del queue - manager.shutdown() class _TestManagerRestart(BaseTestCase): @@ -2814,25 +2814,29 @@ class _TestManagerRestart(BaseTestCase): authkey = os.urandom(32) manager = QueueManager( address=(test.support.HOST, 0), authkey=authkey, serializer=SERIALIZER) - srvr = manager.get_server() - addr = srvr.address - # Close the connection.Listener socket which gets opened as a part - # of manager.get_server(). It's not needed for the test. - srvr.listener.close() - manager.start() + try: + srvr = manager.get_server() + addr = srvr.address + # Close the connection.Listener socket which gets opened as a part + # of manager.get_server(). It's not needed for the test. + srvr.listener.close() + manager.start() - p = self.Process(target=self._putter, args=(manager.address, authkey)) - p.start() - p.join() - queue = manager.get_queue() - self.assertEqual(queue.get(), 'hello world') - del queue - manager.shutdown() + p = self.Process(target=self._putter, args=(manager.address, authkey)) + p.start() + p.join() + queue = manager.get_queue() + self.assertEqual(queue.get(), 'hello world') + del queue + finally: + if hasattr(manager, "shutdown"): + manager.shutdown() manager = QueueManager( address=addr, authkey=authkey, serializer=SERIALIZER) try: manager.start() + self.addCleanup(manager.shutdown) except OSError as e: if e.errno != errno.EADDRINUSE: raise @@ -2841,7 +2845,8 @@ class _TestManagerRestart(BaseTestCase): time.sleep(1.0) manager = QueueManager( address=addr, authkey=authkey, serializer=SERIALIZER) - manager.shutdown() + if hasattr(manager, "shutdown"): + self.addCleanup(manager.shutdown) # #