Merge pull request #356 from pristupa/maxprocessing-option

Add --maxprocesses option to use with --numprocesses=auto
This commit is contained in:
Bruno Oliveira
2018-10-18 07:54:02 -03:00
committed by GitHub
4 changed files with 18 additions and 1 deletions

View File

@@ -0,0 +1 @@
New ``--maxprocesses`` command-line option that limits the maximum number of workers when using ``--numprocesses=auto``.

View File

@@ -25,6 +25,10 @@ def test_dist_options(testdir):
check_options(config) check_options(config)
assert config.option.dist == "load" assert config.option.dist == "load"
assert config.option.tx == ["popen"] * 2 assert config.option.tx == ["popen"] * 2
config = testdir.parseconfigure("--numprocesses", "3", "--maxprocesses", "2")
check_options(config)
assert config.option.dist == "load"
assert config.option.tx == ["popen"] * 2
config = testdir.parseconfigure("-d") config = testdir.parseconfigure("-d")
check_options(config) check_options(config)
assert config.option.dist == "load" assert config.option.dist == "load"

View File

@@ -47,6 +47,14 @@ def pytest_addoption(parser):
"you can use 'auto' here for auto detection CPUs number on " "you can use 'auto' here for auto detection CPUs number on "
"host system", "host system",
) )
group.addoption(
"--maxprocesses",
dest="maxprocesses",
metavar="maxprocesses",
action="store",
type=int,
help="limit the maximum number of workers to process the tests when using --numprocesses=auto",
)
group.addoption( group.addoption(
"--max-worker-restart", "--max-worker-restart",
"--max-slave-restart", "--max-slave-restart",
@@ -172,7 +180,10 @@ def pytest_cmdline_main(config):
if config.option.numprocesses: if config.option.numprocesses:
if config.option.dist == "no": if config.option.dist == "no":
config.option.dist = "load" config.option.dist = "load"
config.option.tx = ["popen"] * config.option.numprocesses numprocesses = config.option.numprocesses
if config.option.maxprocesses:
numprocesses = min(numprocesses, config.option.maxprocesses)
config.option.tx = ["popen"] * numprocesses
if config.option.distload: if config.option.distload:
config.option.dist = "load" config.option.dist = "load"
val = config.getvalue val = config.getvalue

View File

@@ -234,6 +234,7 @@ def remote_initconfig(option_dict, args):
config.option.dist = "no" config.option.dist = "no"
config.option.distload = False config.option.distload = False
config.option.numprocesses = None config.option.numprocesses = None
config.option.maxprocesses = None
config.args = args config.args = args
return config return config