2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-29 05:18:13 +00:00
ovs/tests/test-daemon.py
Ben Pfaff 00c0858987 daemon: Integrate checking for an existing pidfile into daemonize_start().
Until now, it has been the responsibility of an individual daemon to call
die_if_already_running() at an appropriate time.  A long time ago, this
had to happen *before* daemonizing, because once the process daemonized
itself there was no way to report failure to the process that originally
started the daemon.  With the introduction of daemonize_start(), this is
now possible, but we haven't been taking advantage of it.

Therefore, this commit integrates the die_if_already_running() call into
daemonize_start() and deletes the calls to it from individual daemons.
2011-04-04 10:58:55 -07:00

79 lines
2.2 KiB
Python

# Copyright (c) 2010, 2011 Nicira Networks.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import getopt
import signal
import sys
import time
import ovs.daemon
import ovs.util
def handler(signum, frame):
raise Exception("Signal handler called with %d" % signum)
def main(argv):
signal.signal(signal.SIGHUP, handler)
try:
options, args = getopt.gnu_getopt(
argv[1:], 'b', ["bail", "help"] + ovs.daemon.LONG_OPTIONS)
except getopt.GetoptError, geo:
sys.stderr.write("%s: %s\n" % (ovs.util.PROGRAM_NAME, geo.msg))
sys.exit(1)
bail = False
for key, value in options:
if key == '--help':
usage()
elif key in ['-b', '--bail']:
bail = True
elif not ovs.daemon.parse_opt(key, value):
sys.stderr.write("%s: unhandled option %s\n"
% (ovs.util.PROGRAM_NAME, key))
sys.exit(1)
ovs.daemon.daemonize_start()
if bail:
sys.stderr.write("%s: exiting after daemonize_start() as requested\n"
% ovs.util.PROGRAM_NAME)
sys.exit(1)
ovs.daemon.daemonize_complete()
while True:
time.sleep(1)
def usage():
sys.stdout.write("""\
%s: Open vSwitch daemonization test program for Python
usage: %s [OPTIONS]
""" % ovs.util.PROGRAM_NAME)
ovs.daemon.usage()
sys.stdout.write("""
Other options:
-h, --help display this help message
-b, --bail exit with an error after daemonize_start()
""")
sys.exit(0)
if __name__ == '__main__':
try:
main(sys.argv)
except SystemExit:
# Let system.exit() calls complete normally
raise
except:
sys.exit(ovs.daemon.RESTART_EXIT_CODE)