Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
self.assertEqual(options.nocleanup, True)
self.assertEqual(len(options.programs), 3)
cat = options.programs[0]
self.assertEqual(cat.name, 'cat')
self.assertEqual(cat.command, '/bin/cat')
self.assertEqual(cat.priority, 1)
self.assertEqual(cat.autostart, True)
self.assertEqual(cat.autorestart, True)
self.assertEqual(cat.startsecs, 5)
self.assertEqual(cat.startretries, 10)
self.assertEqual(cat.uid, 0)
self.assertEqual(cat.logfile, '/tmp/cat.log')
self.assertEqual(cat.stopsignal, signal.SIGKILL)
self.assertEqual(cat.stopwaitsecs, 5)
self.assertEqual(cat.logfile_maxbytes, datatypes.byte_size('50MB'))
self.assertEqual(cat.logfile_backups, 10)
self.assertEqual(cat.exitcodes, [0,2])
cat2 = options.programs[1]
self.assertEqual(cat2.name, 'cat2')
self.assertEqual(cat2.command, '/bin/cat')
self.assertEqual(cat2.priority, 999)
self.assertEqual(cat2.autostart, True)
self.assertEqual(cat2.autorestart, False)
self.assertEqual(cat2.uid, None)
self.assertEqual(cat2.logfile, '/tmp/cat2.log')
self.assertEqual(cat2.stopsignal, signal.SIGTERM)
self.assertEqual(cat2.logfile_maxbytes, 1024)
self.assertEqual(cat2.logfile_backups, 2)
self.assertEqual(cat2.exitcodes, [0,2])
self.assertEqual(cat2.uid, None)
self.assertEqual(cat2.logfile, '/tmp/cat2.log')
self.assertEqual(cat2.stopsignal, signal.SIGTERM)
self.assertEqual(cat2.logfile_maxbytes, 1024)
self.assertEqual(cat2.logfile_backups, 2)
self.assertEqual(cat2.exitcodes, [0,2])
cat3 = options.programs[2]
self.assertEqual(cat3.name, 'cat3')
self.assertEqual(cat3.command, '/bin/cat')
self.assertEqual(cat3.priority, 999)
self.assertEqual(cat3.autostart, True)
self.assertEqual(cat3.autorestart, True)
self.assertEqual(cat3.uid, None)
self.assertEqual(cat3.logfile, instance.AUTOMATIC)
self.assertEqual(cat3.logfile_maxbytes, datatypes.byte_size('50MB'))
self.assertEqual(cat3.logfile_backups, 10)
self.assertEqual(cat3.exitcodes, [0,1,127])
self.assertEqual(cat2.stopsignal, signal.SIGTERM)
here = os.path.abspath(os.getcwd())
self.assertEqual(instance.uid, 0)
self.assertEqual(instance.gid, 0)
self.assertEqual(instance.directory, '/tmp')
self.assertEqual(instance.umask, 022)
self.assertEqual(instance.logfile, os.path.join(here,'supervisord.log'))
self.assertEqual(instance.logfile_maxbytes, 1000 * 1024 * 1024)
self.assertEqual(instance.logfile_backups, 5)
self.assertEqual(instance.loglevel, 40)
self.assertEqual(instance.pidfile, os.path.join(here,'supervisord.pid'))
self.assertEqual(instance.nodaemon, True)
def from_args(cls, *process_arguments):
processes = dict()
for process in process_arguments:
name, limit = process.split('=')
processes[name] = supervisor.datatypes.byte_size(limit)
return cls(processes)
def parse_size(option, value):
try:
size = byte_size(value)
except:
print 'Unparseable byte_size in %r for %r' % (value, option)
usage()
return size
autorestart = auto_restart(get(section, 'autorestart', 'unexpected'))
startsecs = integer(get(section, 'startsecs', 1))
startretries = integer(get(section, 'startretries', 3))
stopsignal = signal_number(get(section, 'stopsignal', 'TERM'))
stopwaitsecs = integer(get(section, 'stopwaitsecs', 10))
stopasgroup = boolean(get(section, 'stopasgroup', 'false'))
killasgroup = boolean(get(section, 'killasgroup', stopasgroup))
exitcodes = list_of_exitcodes(get(section, 'exitcodes', '0'))
# see also redirect_stderr check in process_groups_from_parser()
redirect_stderr = boolean(get(section, 'redirect_stderr','false'))
numprocs = integer(get(section, 'numprocs', 1))
numprocs_start = integer(get(section, 'numprocs_start', 0))
environment_str = get(section, 'environment', '', do_expand=False)
stdout_cmaxbytes = byte_size(get(section,'stdout_capture_maxbytes','0'))
stdout_events = boolean(get(section, 'stdout_events_enabled','false'))
stderr_cmaxbytes = byte_size(get(section,'stderr_capture_maxbytes','0'))
stderr_events = boolean(get(section, 'stderr_events_enabled','false'))
serverurl = get(section, 'serverurl', None)
if serverurl and serverurl.strip().upper() == 'AUTO':
serverurl = None
# find uid from "user" option
user = get(section, 'user', None)
if user is None:
uid = None
else:
uid = name_to_uid(user)
umask = get(section, 'umask', None)
if umask is not None:
umask = octal_type(umask)
priority = integer(get(section, 'priority', 999))
autostart = boolean(get(section, 'autostart', 'true'))
autorestart = auto_restart(get(section, 'autorestart', 'unexpected'))
startsecs = integer(get(section, 'startsecs', 1))
startretries = integer(get(section, 'startretries', 3))
stopsignal = signal_number(get(section, 'stopsignal', 'TERM'))
stopwaitsecs = integer(get(section, 'stopwaitsecs', 10))
stopasgroup = boolean(get(section, 'stopasgroup', 'false'))
killasgroup = boolean(get(section, 'killasgroup', stopasgroup))
exitcodes = list_of_exitcodes(get(section, 'exitcodes', '0'))
# see also redirect_stderr check in process_groups_from_parser()
redirect_stderr = boolean(get(section, 'redirect_stderr','false'))
numprocs = integer(get(section, 'numprocs', 1))
numprocs_start = integer(get(section, 'numprocs_start', 0))
environment_str = get(section, 'environment', '', do_expand=False)
stdout_cmaxbytes = byte_size(get(section,'stdout_capture_maxbytes','0'))
stdout_events = boolean(get(section, 'stdout_events_enabled','false'))
stderr_cmaxbytes = byte_size(get(section,'stderr_capture_maxbytes','0'))
stderr_events = boolean(get(section, 'stderr_events_enabled','false'))
serverurl = get(section, 'serverurl', None)
if serverurl and serverurl.strip().upper() == 'AUTO':
serverurl = None
# find uid from "user" option
user = get(section, 'user', None)
if user is None:
uid = None
else:
uid = name_to_uid(user)
umask = get(section, 'umask', None)
if umask is not None:
Options.__init__(self)
self.configroot = Dummy()
self.configroot.supervisord = Dummy()
self.add(None, None, "v", "version", self.version)
self.add("nodaemon", "supervisord.nodaemon", "n", "nodaemon", flag=1,
default=0)
self.add("user", "supervisord.user", "u:", "user=")
self.add("umask", "supervisord.umask", "m:", "umask=",
octal_type, default='022')
self.add("directory", "supervisord.directory", "d:", "directory=",
existing_directory)
self.add("logfile", "supervisord.logfile", "l:", "logfile=",
existing_dirpath, default="supervisord.log")
self.add("logfile_maxbytes", "supervisord.logfile_maxbytes",
"y:", "logfile_maxbytes=", byte_size,
default=50 * 1024 * 1024) # 50MB
self.add("logfile_backups", "supervisord.logfile_backups",
"z:", "logfile_backups=", integer, default=10)
self.add("loglevel", "supervisord.loglevel", "e:", "loglevel=",
logging_level, default="info")
self.add("pidfile", "supervisord.pidfile", "j:", "pidfile=",
existing_dirpath, default="supervisord.pid")
self.add("identifier", "supervisord.identifier", "i:", "identifier=",
str, default="supervisor")
self.add("childlogdir", "supervisord.childlogdir", "q:", "childlogdir=",
existing_directory, default=tempfile.gettempdir())
self.add("minfds", "supervisord.minfds",
"a:", "minfds=", int, default=1024)
self.add("minprocs", "supervisord.minprocs",
"", "minprocs=", int, default=200)
self.add("nocleanup", "supervisord.nocleanup",
logfiles = {}
for k in ('stdout', 'stderr'):
n = '%s_logfile' % k
lf_val = get(section, n, Automatic)
if isinstance(lf_val, basestring):
lf_val = expand(lf_val, expansions, n)
lf_val = logfile_name(lf_val)
logfiles[n] = lf_val
bu_key = '%s_logfile_backups' % k
backups = integer(get(section, bu_key, 10))
logfiles[bu_key] = backups
mb_key = '%s_logfile_maxbytes' % k
maxbytes = byte_size(get(section, mb_key, '50MB'))
logfiles[mb_key] = maxbytes
if lf_val is Automatic and not maxbytes:
self.parse_warnings.append(
'For [%s], AUTO logging used for %s without '
'rollover, set maxbytes > 0 to avoid filling up '
'filesystem unintentionally' % (section, n))
if redirect_stderr:
if logfiles['stderr_logfile'] not in (Automatic, None):
self.parse_warnings.append(
'For [%s], redirect_stderr=true but stderr_logfile has '
'also been set to a filename, the filename has been '
'ignored' % section)
# never create an stderr logfile when redirected
logfiles['stderr_logfile'] = None
kwargs['expansions'] = expansions
return parser.getdefault(opt, default, **kwargs)
section.minfds = integer(get('minfds', 1024))
section.minprocs = integer(get('minprocs', 200))
directory = get('directory', None)
if directory is None:
section.directory = None
else:
section.directory = existing_directory(directory)
section.user = get('user', None)
section.umask = octal_type(get('umask', '022'))
section.logfile = existing_dirpath(get('logfile', 'supervisord.log'))
section.logfile_maxbytes = byte_size(get('logfile_maxbytes', '50MB'))
section.logfile_backups = integer(get('logfile_backups', 10))
section.loglevel = logging_level(get('loglevel', 'info'))
section.pidfile = existing_dirpath(get('pidfile', 'supervisord.pid'))
section.identifier = get('identifier', 'supervisor')
section.nodaemon = boolean(get('nodaemon', 'false'))
tempdir = tempfile.gettempdir()
section.childlogdir = existing_directory(get('childlogdir', tempdir))
section.nocleanup = boolean(get('nocleanup', 'false'))
section.strip_ansi = boolean(get('strip_ansi', 'false'))
environ_str = get('environment', '')
environ_str = expand(environ_str, expansions, 'environment')
section.environment = dict_of_key_value_pairs(environ_str)
# Process rpcinterface plugins before groups to allow custom events to
# be registered.