| ############################################################################ | |
| # Copyright (C) SchedMD LLC. | |
| ############################################################################ | |
| import re | |
| import pytest | |
| import atf | |
| # Setup | |
| @pytest.fixture(scope="module", autouse=True) | |
| def setup(): | |
| atf.require_auto_config("wants to create custom resources") | |
| atf.require_accounting() | |
| atf.require_config_parameter("AccountingStorageTRES", "gres/r1") | |
| atf.require_config_parameter("SelectType", "select/cons_tres") | |
| atf.require_config_parameter("SelectTypeParameters", "CR_CPU") | |
| atf.require_config_parameter("GresTypes", "r1,r2") | |
| atf.require_nodes(1, [("Gres", "r1:1,r2:2")]) | |
| atf.require_config_parameter("Name", {"r2": {"Flags": "explicit"}}, source="gres") | |
| atf.require_slurm_running() | |
| def test_explicit_gres_requested(): | |
| """Test gres.conf flag explicit with --exclusive allocation | |
| and explicitly requesting 'explicit' gres""" | |
| with_gres_output = atf.run_command_output( | |
| "salloc -wnode1 --gres=r2 --exclusive scontrol show node node1 -d", | |
| fatal=True, | |
| ) | |
| assert ( | |
| re.search(r"GresUsed=r1:1,r2:1", with_gres_output) is not None | |
| ), "Allocation should give all of non-explicit gres (r1:1) and only requested explicit gres (r2:1)" | |
| def test_explicit_gres_not_requested(): | |
| """Test gres.conf flag explicit with --exclusive allocation | |
| and not explicitly requesting 'explict' gres""" | |
| without_gres_output = atf.run_command_output( | |
| "salloc -wnode1 --exclusive scontrol show node node1 -d", fatal=True | |
| ) | |
| assert ( | |
| re.search(r"GresUsed=r1:1,r2:0", without_gres_output) is not None | |
| ), "Allocation should give all of non-explicit gres (r1:1) and none of the not requested explicit gres (r2:0)" |