| ############################################################################ |
| # Copyright (C) SchedMD LLC. |
| ############################################################################ |
| import atf |
| import os |
| import pytest |
| import re |
| |
| node_count = 1 |
| |
| |
| # Setup |
| @pytest.fixture(scope="module", autouse=True) |
| def setup(): |
| atf.require_nodes(node_count) |
| atf.require_slurm_running() |
| |
| |
| def test_wait(tmp_path): |
| """Verify srun --wait""" |
| task_count = 10 |
| file_in = str(tmp_path / "file_in.input") |
| atf.make_bash_script( |
| file_in, |
| """if [[ -z "$SLURM_PROCID" ]] |
| then exit |
| fi |
| if [[ $SLURM_PROCID == 1 ]] |
| then exit |
| fi |
| sleep 20 |
| """, |
| ) |
| os.chmod(file_in, 0o0755) |
| run_error = atf.run_command_error( |
| f"srun -n{task_count} -N{node_count} -O -W2 {file_in}" |
| ) |
| task_count -= 1 |
| assert ( |
| re.search(r"First task exited", run_error) is not None |
| ), "First task did not exit" |
| assert ( |
| re.search(r"tasks 0,2-9: running", run_error) is not None |
| ), "Other tasks not running" |
| assert ( |
| re.search(r"tasks 0,2-9: Killed", run_error) is not None |
| ), "Other tasks not killed" |