blob: 89b8169e277b49547f1dd2d2a89671686bb382c3 [file]
############################################################################
# Copyright (C) SchedMD LLC.
############################################################################
import re
import pytest
import atf
node_count = 9
# Setup
@pytest.fixture(scope="module", autouse=True)
def setup():
atf.require_nodes(node_count)
atf.require_slurm_running()
def test_test_only():
"""Test of slurm_job_will_run API, (srun --test-only option)."""
error_output = atf.run_command_error(
f"srun --test-only -O -N{node_count} printenv SLURMD_NODENAME"
)
assert (
re.search(r"Job \d+ to start at \d+", error_output) is not None
), "Failed out output job number or start time"
@pytest.mark.xfail(
atf.get_version("bin/srun") < (26, 5),
reason="MR !3126: srun --test-only --jobid fixed in 26.05",
)
def test_test_only_with_jobid():
"""Test --test-only with --jobid for a pending (held) job"""
job_id = atf.submit_job_sbatch("-N1 -H --wrap 'sleep infinity'", fatal=True)
atf.wait_for_job_state(job_id, "PENDING", fatal=True)
results = atf.run_command(
f"srun --test-only --jobid={job_id}",
fatal=True,
)
combined = results["stderr"] + results["stdout"]
assert (
re.search(rf"Job {job_id} to start at ", combined) is not None
), f"Expected --test-only to report will-run for pending job id {job_id}"
atf.cancel_jobs([job_id])