From ce51eb02d0e7205c4cfdcdd8ac82d47225f0f2a3 Mon Sep 17 00:00:00 2001 From: Alexander Kukushkin Date: Fri, 4 Aug 2023 07:37:49 +0200 Subject: [PATCH] Mock request() method when running tests (#2802) 1. Unit tests should not really try accessing any resources. 2. Not doing so results in significant execution time of unit tests on Windows In addition to that perform a request with timeout 3s. Usually this is more than enough to figure out whether resource is accessible. Followup on #2724 --- patroni/__main__.py | 2 +- tests/test_patroni.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/patroni/__main__.py b/patroni/__main__.py index b365bfe2..42f539d1 100644 --- a/patroni/__main__.py +++ b/patroni/__main__.py @@ -74,7 +74,7 @@ class Patroni(AbstractPatroniDaemon): if not isinstance(member, Member): return try: - _ = self.request(member, endpoint="/liveness") + _ = self.request(member, endpoint="/liveness", timeout=3) logger.fatal("Can't start; there is already a node named '%s' running", self.config['name']) sys.exit(1) except Exception: diff --git a/tests/test_patroni.py b/tests/test_patroni.py index e5785231..605b3227 100644 --- a/tests/test_patroni.py +++ b/tests/test_patroni.py @@ -40,6 +40,7 @@ class MockFrozenImporter(object): @patch('time.sleep', Mock()) @patch('subprocess.call', Mock(return_value=0)) @patch('patroni.psycopg.connect', psycopg_connect) +@patch('urllib3.PoolManager.request', Mock(side_effect=Exception)) @patch.object(ConfigHandler, 'append_pg_hba', Mock()) @patch.object(ConfigHandler, 'write_postgresql_conf', Mock()) @patch.object(ConfigHandler, 'write_recovery_conf', Mock()) @@ -63,6 +64,7 @@ class TestPatroni(unittest.TestCase): self.assertRaises(SystemExit, _main) @patch('pkgutil.iter_importers', Mock(return_value=[MockFrozenImporter()])) + @patch('urllib3.PoolManager.request', Mock(side_effect=Exception)) @patch('sys.frozen', Mock(return_value=True), create=True) @patch.object(HTTPServer, '__init__', Mock()) @patch.object(etcd.Client, 'read', etcd_read)