mirror of
https://github.com/outbackdingo/patroni.git
synced 2026-09-03 10:09:19 +00:00
Handle exceptions raised from psutil (#610)
Process.cmdline can raise `NoSuchProcess` or `AccessDenied` Process.children can raise `AccessDenied` Fixes https://github.com/zalando/patroni/issues/609
This commit is contained in:
@@ -61,11 +61,18 @@ class TestPostmasterProcess(unittest.TestCase):
|
||||
c1.cmdline = Mock(return_value=["postgres: startup process"])
|
||||
c2 = Mock()
|
||||
c2.cmdline = Mock(return_value=["postgres: postgres postgres [local] idle"])
|
||||
with patch('psutil.Process.children', Mock(return_value=[c1, c2])):
|
||||
c3 = Mock()
|
||||
c3.cmdline = Mock(side_effect=psutil.NoSuchProcess(123))
|
||||
with patch('psutil.Process.children', Mock(return_value=[c1, c2, c3])):
|
||||
proc = PostmasterProcess(123)
|
||||
self.assertIsNone(proc.wait_for_user_backends_to_close())
|
||||
mock_wait.assert_called_with([c2])
|
||||
|
||||
c3.cmdline = Mock(side_effect=psutil.AccessDenied(123))
|
||||
with patch('psutil.Process.children', Mock(return_value=[c3])):
|
||||
proc = PostmasterProcess(123)
|
||||
self.assertIsNone(proc.wait_for_user_backends_to_close())
|
||||
|
||||
@patch('subprocess.Popen')
|
||||
@patch.object(PostmasterProcess, 'from_pid')
|
||||
def test_start(self, mock_frompid, mock_popen):
|
||||
|
||||
Reference in New Issue
Block a user