Skip to content

Commit

Permalink
ASP-1915 refactor --requeue param and add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
fschuch committed Dec 16, 2022
1 parent 8d49b6b commit 7175f0d
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ class SbatchToSlurm:
SbatchToSlurm("", "--network"),
SbatchToSlurm("nice", "--nice"),
SbatchToSlurm("no_kill", "--no-kill", "-k", dict(action="store_const", const=True)),
SbatchToSlurm("", "--no-requeue", "", dict(action="store_false", dest="requeue")),
SbatchToSlurm("", "--no-requeue", "", dict(action="store_false", dest="requeue", default=None)),
SbatchToSlurm("", "--nodefile", "-F"),
SbatchToSlurm("", "--nodelist", "-w"),
SbatchToSlurm("nodes", "--nodes", "-N"),
Expand All @@ -173,7 +173,7 @@ class SbatchToSlurm:
SbatchToSlurm("qos", "--qos", "-q"),
SbatchToSlurm("", "--quiet", "-Q", dict(action="store_const", const=True)),
SbatchToSlurm("", "--reboot", "", dict(action="store_const", const=True)),
SbatchToSlurm("requeue", "--requeue", "", dict(action="store_const", const=True)),
SbatchToSlurm("requeue", "--requeue", "", dict(action="store_true", default=None)),
SbatchToSlurm("reservation", "--reservation"),
SbatchToSlurm("signal", "--signal"),
SbatchToSlurm("sockets_per_node", "--sockets-per-node", "", dict(type=int)),
Expand Down Expand Up @@ -225,8 +225,7 @@ def build_parser() -> ArgumentParser:
for item in sbatch_to_slurm:
args = (i for i in (item.sbatch_short, item.sbatch) if i)
parser.add_argument(*args, **item.argparser_param)
# make --requeue and --no-requeue work together, with default to None
parser.set_defaults(requeue=None)

return parser


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -663,3 +663,73 @@ def test_both_exclusive_and_oversubscribe_2(self):
actual_dict = jobscript_to_dict(jobscript)

assert actual_dict == desired_dict


class TestRequeueParameter:
"""
Requeue is a slurm parameter whose value comes from two sbatch flags: --requeue and --no-requeue.
"""

def test_empty_jobscript(self):
"""
Base case: no parameters at all.
"""
jobscript = ""

desired_dict = {}

actual_dict = jobscript_to_dict(jobscript)

assert actual_dict == desired_dict

def test_requeue_flag(self):
"""
Test the first scenario: --requeue
"""
jobscript = "#SBATCH --requeue"

desired_dict = {"requeue": True}

actual_dict = jobscript_to_dict(jobscript)

assert actual_dict == desired_dict

def test_no_requeue_flag(self):
"""
Test the first scenario: --no-requeue
"""
jobscript = "#SBATCH --no-requeue"

desired_dict = {"requeue": False}

actual_dict = jobscript_to_dict(jobscript)

assert actual_dict == desired_dict

def test_both_exclusive_and_oversubscribe_1(self):
"""
Test that when both are used, the last of them takes precedence.
In this case, --no-requeue is the last one.
"""
jobscript = "#SBATCH --requeue\n#SBATCH --no-requeue"

desired_dict = {"requeue": False}

actual_dict = jobscript_to_dict(jobscript)

assert actual_dict == desired_dict

def test_both_exclusive_and_oversubscribe_2(self):
"""
Test that when both are used, the last of them takes precedence.
In this case, --requeue is the last one.
"""
jobscript = "#SBATCH --no-requeue\n#SBATCH --requeue"

desired_dict = {"requeue": True}

actual_dict = jobscript_to_dict(jobscript)

assert actual_dict == desired_dict

0 comments on commit 7175f0d

Please sign in to comment.