diff options
author | Pablo Galindo <Pablogsal@gmail.com> | 2019-02-09 17:35:05 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-09 17:35:05 (GMT) |
commit | 7b2a37b728b37e7da6d3f48c24c93a9dd0daa0fc (patch) | |
tree | 0b773a5b2d3578b253153240c4ad3a9639faaf81 | |
parent | 613f729e5ddd201765a9a04efc1c76decb3a19c4 (diff) | |
download | cpython-7b2a37b728b37e7da6d3f48c24c93a9dd0daa0fc.zip cpython-7b2a37b728b37e7da6d3f48c24c93a9dd0daa0fc.tar.gz cpython-7b2a37b728b37e7da6d3f48c24c93a9dd0daa0fc.tar.bz2 |
Make sure the BaseManager in test_multiprocessing is cleaned up correctly (GH-11653)
-rw-r--r-- | Lib/test/_test_multiprocessing.py | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py index d3cb195..bc1072d 100644 --- a/Lib/test/_test_multiprocessing.py +++ b/Lib/test/_test_multiprocessing.py @@ -2817,6 +2817,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 @@ -2836,7 +2837,6 @@ class _TestRemoteManager(BaseTestCase): # Make queue finalizer run before the server is stopped del queue - manager.shutdown() class _TestManagerRestart(BaseTestCase): @@ -2852,25 +2852,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 @@ -2879,7 +2883,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) # # |