ansible-test: set ulimit to enforce consistent test environment (#46652)

* ansible-test: set ulimit to enforce consistent test environment

* fixed santiy issue

(cherry picked from commit 7b774117ab)
pull/46736/head
Jordan Borean 6 years ago committed by Matt Clay
parent 034e5b6341
commit f9c4da4cdf

@ -32,6 +32,7 @@ import sys
import pipes import pipes
import logging import logging
import getpass import getpass
import resource
logger = logging.getLogger('injector') # pylint: disable=locally-disabled, invalid-name logger = logging.getLogger('injector') # pylint: disable=locally-disabled, invalid-name
# pylint: disable=locally-disabled, invalid-name # pylint: disable=locally-disabled, invalid-name
@ -90,6 +91,17 @@ def main():
try: try:
logger.debug('Self: %s', __file__) logger.debug('Self: %s', __file__)
# to achieve a consistent nofile ulimit, set to 16k here, this can affect performance in subprocess.Popen when
# being called with close_fds=True on Python (8x the time on some environments)
nofile_limit = 16 * 1024
current_limit = resource.getrlimit(resource.RLIMIT_NOFILE)
new_limit = (nofile_limit, nofile_limit)
if current_limit > new_limit:
logger.debug('RLIMIT_NOFILE: %s -> %s', current_limit, new_limit)
resource.setrlimit(resource.RLIMIT_NOFILE, (nofile_limit, nofile_limit))
else:
logger.debug('RLIMIT_NOFILE: %s', current_limit)
config_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'injector.json') config_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'injector.json')
try: try:

@ -7,6 +7,7 @@ from __future__ import absolute_import, print_function
import errno import errno
import os import os
import sys import sys
import resource
from lib.util import ( from lib.util import (
ApplicationError, ApplicationError,
@ -85,6 +86,17 @@ def main():
display.info_stderr = (isinstance(config, SanityConfig) and config.lint) or (isinstance(config, IntegrationConfig) and config.list_targets) display.info_stderr = (isinstance(config, SanityConfig) and config.lint) or (isinstance(config, IntegrationConfig) and config.list_targets)
check_startup() check_startup()
# to achieve a consistent nofile ulimit, set to 16k here, this can affect performance in subprocess.Popen when
# being called with close_fds=True on Python (8x the time on some environments)
nofile_limit = 16 * 1024
current_limit = resource.getrlimit(resource.RLIMIT_NOFILE)
new_limit = (nofile_limit, nofile_limit)
if current_limit > new_limit:
display.info('RLIMIT_NOFILE: %s -> %s' % (current_limit, new_limit), verbosity=2)
resource.setrlimit(resource.RLIMIT_NOFILE, (nofile_limit, nofile_limit))
else:
display.info('RLIMIT_NOFILE: %s' % (current_limit, ), verbosity=2)
try: try:
args.func(config) args.func(config)
except Delegate as ex: except Delegate as ex:

Loading…
Cancel
Save