blob: 210487bfc0e40543387f810974d940965c96c9db [file] [edit]
############################################################################
# Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
############################################################################
import atf
import pytest
@pytest.fixture(scope="module", autouse=True)
def setup():
atf.require_nodes(2)
atf.require_slurm_running()
@pytest.fixture(autouse=True)
def restore_features():
saved = {n: atf.get_node_parameter(n, "features", default=[]) for n in atf.nodes}
yield
for node, feats in saved.items():
feat_str = ",".join(feats) if feats else ""
atf.run_command(
f"scontrol update nodename={node} availablefeatures={feat_str}",
user=atf.properties["slurm-user"],
)
@pytest.mark.skipif(
atf.get_version("sbin/slurmctld") < (26, 5),
reason="Ticket 25121: scontrol update nodename=ALL availablefeatures=... "
"returned 'Invalid argument' before 26.05.",
)
def test_update_avail_features_all():
"""Verify NodeName=ALL applies AvailableFeatures to every node."""
feature = "feat"
result = atf.run_command(
f"scontrol update nodename=ALL availablefeatures={feature}",
user=atf.properties["slurm-user"],
)
assert result["exit_code"] == 0, (
f"scontrol update nodename=ALL availablefeatures={feature} failed: "
f"{result['stderr']}"
)
for node in atf.nodes:
assert atf.get_node_parameter(node, "features") == [
feature
], f"Node {node} did not receive AvailableFeatures={feature}"