aboutsummaryrefslogtreecommitdiff
path: root/app/tests/test_backends_servers.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/tests/test_backends_servers.py')
-rw-r--r--app/tests/test_backends_servers.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/app/tests/test_backends_servers.py b/app/tests/test_backends_servers.py
index 02b65e6..987ff24 100644
--- a/app/tests/test_backends_servers.py
+++ b/app/tests/test_backends_servers.py
@@ -123,6 +123,57 @@ class StopTests(unittest.TestCase):
self.assertFalse((self.dir / "test-server.pid").exists())
+class ManagesTests(unittest.TestCase):
+ """manages(): a live recorded pid marks a server as ours."""
+
+ def setUp(self):
+ self._tmp = tempfile.TemporaryDirectory()
+ self.dir = Path(self._tmp.name)
+ self.specs = [ServerSpec("test", "http://127.0.0.1:9999", [])]
+
+ def tearDown(self):
+ self._tmp.cleanup()
+
+ def _write_pid(self, name, pid):
+ (self.dir / f"{name}-server.pid").write_text(str(pid),
+ encoding="utf-8")
+
+ def test_false_without_pid_file(self):
+ with patch.object(servers, "LOG_DIR", self.dir):
+ self.assertFalse(servers.manages(self.specs))
+
+ def test_true_with_live_recorded_pid(self):
+ self._write_pid("test", 4242)
+ with patch.object(servers, "LOG_DIR", self.dir), \
+ patch.object(servers, "_pid_alive", return_value=True):
+ self.assertTrue(servers.manages(self.specs))
+
+ def test_false_with_dead_recorded_pid(self):
+ self._write_pid("test", 4242)
+ with patch.object(servers, "LOG_DIR", self.dir), \
+ patch.object(servers, "_pid_alive", return_value=False):
+ self.assertFalse(servers.manages(self.specs))
+
+ def test_false_with_corrupt_pid_file(self):
+ (self.dir / "test-server.pid").write_text("junk",
+ encoding="utf-8")
+ with patch.object(servers, "LOG_DIR", self.dir), \
+ patch.object(servers, "_pid_alive",
+ return_value=True) as mk_alive:
+ self.assertFalse(servers.manages(self.specs))
+ mk_alive.assert_not_called()
+
+ def test_true_when_any_spec_is_ours(self):
+ other = ServerSpec("other", "http://127.0.0.1:9998", [])
+ with patch.object(servers, "LOG_DIR", self.dir), \
+ patch.object(servers, "_pid_alive", return_value=True):
+ self._write_pid("test", 4242)
+ self.assertTrue(servers.manages([other] + self.specs))
+ # The live pid belongs to 'test'; 'other' alone stays unmanaged.
+ with patch.object(servers, "LOG_DIR", self.dir):
+ self.assertFalse(servers.manages([other]))
+
+
class PidForTests(unittest.TestCase):
def setUp(self):
self._tmp = tempfile.TemporaryDirectory()