[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [stem/master] Performing pid resolion via getinfo when able
commit 292ef5c36e38dd2820ed00e34ab270f2bb28ecb6
Author: Damian Johnson <atagar@xxxxxxxxxxxxxx>
Date: Mon May 27 21:28:55 2013 -0700
Performing pid resolion via getinfo when able
Oops, forgot that I had added a 'GETINFO process/pid' option to tor for just
this case. Using it when it's available.
---
stem/control.py | 18 ++++++++++++------
test/unit/control/controller.py | 13 +++++++++++--
2 files changed, 23 insertions(+), 8 deletions(-)
diff --git a/stem/control.py b/stem/control.py
index a1a7ae4..4d416e8 100644
--- a/stem/control.py
+++ b/stem/control.py
@@ -1017,14 +1017,20 @@ class Controller(BaseController):
pid = self._get_cache("pid")
if not pid:
- pid_file_path = self.get_conf("PidFile", None)
+ getinfo_pid = self.get_info("process/pid", None)
- if pid_file_path is not None:
- with open(pid_file_path) as pid_file:
- pid_file_contents = pid_file.read().strip()
+ if getinfo_pid and getinfo_pid.isdigit():
+ pid = int(getinfo_pid)
- if pid_file_contents.isdigit():
- pid = int(pid_file_contents)
+ if not pid:
+ pid_file_path = self.get_conf("PidFile", None)
+
+ if pid_file_path is not None:
+ with open(pid_file_path) as pid_file:
+ pid_file_contents = pid_file.read().strip()
+
+ if pid_file_contents.isdigit():
+ pid = int(pid_file_contents)
if not pid:
pid = stem.util.system.get_pid_by_name('tor')
diff --git a/test/unit/control/controller.py b/test/unit/control/controller.py
index ab89ac0..449bc6d 100644
--- a/test/unit/control/controller.py
+++ b/test/unit/control/controller.py
@@ -258,6 +258,15 @@ class TestControl(unittest.TestCase):
self.assertRaises(ValueError, self.controller.get_pid)
self.assertEqual(123, self.controller.get_pid(123))
+ def test_get_pid_by_getinfo(self):
+ """
+ Exercise the get_pid() resolution via its getinfo option.
+ """
+
+ mocking.mock_method(ControlSocket, "is_localhost", mocking.return_true())
+ mocking.mock_method(Controller, "get_info", mocking.return_value('321'))
+ self.assertEqual(321, self.controller.get_pid())
+
def test_get_pid_by_pid_file(self):
"""
Exercise the get_pid() resolution via a PidFile.
@@ -272,10 +281,10 @@ class TestControl(unittest.TestCase):
try:
with open(pid_file_path, 'w') as pid_file:
- pid_file.write('321')
+ pid_file.write('432')
mocking.mock_method(Controller, "get_conf", mocking.return_value(pid_file_path))
- self.assertEqual(321, self.controller.get_pid())
+ self.assertEqual(432, self.controller.get_pid())
finally:
os.remove(pid_file_path)
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits