Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ def set_run_reset(env_vars, call):
os.environ[k] = v


def parallel(item, m):
def parallel(item, m, timeout):
"""
Run a test in parallel. Readapted from:

Expand Down Expand Up @@ -211,7 +211,7 @@ def parallel(item, m):
# OpenMPI requires an explicit flag for oversubscription. We need it as some
# of the MPI tests will spawn lots of processes
if mpi_distro == 'OpenMPI':
call = [mpi_exec, '--oversubscribe', '--timeout', '300'] + args
call = [mpi_exec, '--oversubscribe', '--timeout', str(timeout)] + args
else:
call = [mpi_exec] + args

Expand Down Expand Up @@ -247,7 +247,8 @@ def pytest_configure(config):
"""Register an additional marker."""
config.addinivalue_line(
"markers",
"parallel(mode): mark test to run in parallel"
"parallel(mode, timeout=300): mark test to run in parallel, aborting "
"after `timeout` seconds (OpenMPI only)"
)
config.addinivalue_line(
"markers",
Expand Down Expand Up @@ -277,8 +278,9 @@ def pytest_runtest_call(item):

elif item.get_closest_marker("parallel"):
# Spawn parallel processes to run test

outcome = parallel(item, item.funcargs['mode'])
marker = item.get_closest_marker("parallel")
timeout = marker.kwargs.get('timeout', 300)
outcome = parallel(item, item.funcargs['mode'], timeout)
if outcome:
pytest.skip(f"{item} success in parallel")
else:
Expand Down
Loading