Commit 8342c325 authored by Michael Hanselmann's avatar Michael Hanselmann
Browse files

utils: Change RemovePidFile to take path, not name



This avoids having to monkey-patch the utils module for unittests.
Monkey patching is evil and caused a bug while moving code around.
Signed-off-by: default avatarMichael Hanselmann <hansmi@google.com>
Reviewed-by: default avatarIustin Pop <iustin@google.com>
parent 0f39886a
......@@ -681,4 +681,4 @@ def GenericMain(daemon_name, optionparser,
exec_fn(options, args, prep_results)
finally:
utils.RemovePidFile(daemon_name)
utils.RemovePidFile(utils.DaemonPidFileName(daemon_name))
......@@ -2025,7 +2025,7 @@ def StopDaemon(name):
def WritePidFile(pidfile):
"""Write the current process pidfile.
@type pidfile: sting
@type pidfile: string
@param pidfile: the path to the file to be written
@raise errors.LockError: if the pid file already exists and
points to a live process
......@@ -2049,20 +2049,19 @@ def WritePidFile(pidfile):
return fd_pidfile
def RemovePidFile(name):
def RemovePidFile(pidfile):
"""Remove the current process pidfile.
Any errors are ignored.
@type name: str
@param name: the daemon name used to derive the pidfile name
@type pidfile: string
@param pidfile: Path to the file to be removed
"""
pidfilename = DaemonPidFileName(name)
# TODO: we could check here that the file contains our pid
try:
RemoveFile(pidfilename)
except: # pylint: disable-msg=W0702
RemoveFile(pidfile)
except Exception: # pylint: disable-msg=W0703
pass
......
......@@ -174,7 +174,6 @@ class TestPidFileFunctions(unittest.TestCase):
def setUp(self):
self.dir = tempfile.mkdtemp()
self.f_dpn = lambda name: os.path.join(self.dir, "%s.pid" % name)
utils.DaemonPidFileName = self.f_dpn
def testPidFileFunctions(self):
pid_file = self.f_dpn('test')
......@@ -187,7 +186,7 @@ class TestPidFileFunctions(unittest.TestCase):
self.failUnlessRaises(errors.LockError, utils.WritePidFile,
self.f_dpn('test'))
os.close(fd)
utils.RemovePidFile('test')
utils.RemovePidFile(self.f_dpn("test"))
self.failIf(os.path.exists(pid_file),
"PID file should not exist anymore")
self.failUnlessEqual(utils.ReadPidFile(pid_file), 0,
......@@ -200,7 +199,7 @@ class TestPidFileFunctions(unittest.TestCase):
# but now, even with the file existing, we should be able to lock it
fd = utils.WritePidFile(self.f_dpn('test'))
os.close(fd)
utils.RemovePidFile('test')
utils.RemovePidFile(self.f_dpn("test"))
self.failIf(os.path.exists(pid_file),
"PID file should not exist anymore")
......@@ -222,7 +221,7 @@ class TestPidFileFunctions(unittest.TestCase):
self.failUnless(utils.IsProcessAlive(new_pid))
utils.KillProcess(new_pid, waitpid=True)
self.failIf(utils.IsProcessAlive(new_pid))
utils.RemovePidFile('child')
utils.RemovePidFile(self.f_dpn('child'))
self.failUnlessRaises(errors.ProgrammerError, utils.KillProcess, 0)
def tearDown(self):
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment