Skip to content

Commit 6eac5c5

Browse files
committed
Use SimpleNamespace instead of SlurmPartition in unit test
This removed the need to extend the constructor of SlurmPartition to pass the list of SlurmNode objects `slurm_nodes`, removing the risk of wrong implementations in the future. Include additional cases to test_find_active_nodes(). Signed-off-by: Jacopo De Amicis <[email protected]>
1 parent ec7cab8 commit 6eac5c5

File tree

2 files changed

+62
-7
lines changed

2 files changed

+62
-7
lines changed

src/slurm_plugin/slurm_resources.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
from dataclasses import dataclass
1616
from datetime import datetime
1717
from enum import Enum
18-
from typing import List
1918

2019
from common.utils import time_is_up
2120

@@ -50,12 +49,12 @@ def __str__(self):
5049

5150

5251
class SlurmPartition:
53-
def __init__(self, name, nodenames, state, slurm_nodes: List = None):
52+
def __init__(self, name, nodenames, state):
5453
"""Initialize slurm partition with attributes."""
5554
self.name = name
5655
self.nodenames = nodenames
5756
self.state = state
58-
self.slurm_nodes = slurm_nodes if slurm_nodes else []
57+
self.slurm_nodes = []
5958

6059
def is_inactive(self):
6160
return self.state == "INACTIVE"

tests/slurm_plugin/test_clustermgtd.py

Lines changed: 60 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3736,7 +3736,7 @@ def test_find_unhealthy_slurm_nodes(
37363736
[
37373737
pytest.param(
37383738
{
3739-
"queue1": SlurmPartition(
3739+
"queue1": SimpleNamespace(
37403740
name="queue1",
37413741
nodenames="queue1-st-cr1-1,queue1-st-cr1-2",
37423742
state="UP",
@@ -3745,7 +3745,7 @@ def test_find_unhealthy_slurm_nodes(
37453745
StaticNode(name="queue1-st-cr1-2", nodeaddr="", nodehostname="", state=""),
37463746
],
37473747
),
3748-
"queue2": SlurmPartition(
3748+
"queue2": SimpleNamespace(
37493749
name="queue2",
37503750
nodenames="queue2-st-cr1-1,queue2-st-cr1-2",
37513751
state="UP",
@@ -3765,7 +3765,7 @@ def test_find_unhealthy_slurm_nodes(
37653765
),
37663766
pytest.param(
37673767
{
3768-
"queue1": SlurmPartition(
3768+
"queue1": SimpleNamespace(
37693769
name="queue1",
37703770
nodenames="queue1-st-cr1-1,queue1-st-cr1-2",
37713771
state="UP",
@@ -3774,7 +3774,7 @@ def test_find_unhealthy_slurm_nodes(
37743774
StaticNode(name="queue1-st-cr1-2", nodeaddr="", nodehostname="", state=""),
37753775
],
37763776
),
3777-
"custom_partition": SlurmPartition(
3777+
"custom_partition": SimpleNamespace(
37783778
name="custom_partition",
37793779
nodenames="queue1-st-cr1-1,queue1-st-cr1-2",
37803780
state="UP",
@@ -3791,6 +3791,62 @@ def test_find_unhealthy_slurm_nodes(
37913791
id="Two overlapping partitions obtained by creating a custom partition that includes nodes from a "
37923792
"PC-managed queue",
37933793
),
3794+
pytest.param(
3795+
{},
3796+
[],
3797+
id="Empty cluster with no partitions",
3798+
),
3799+
pytest.param(
3800+
{
3801+
"queue1": SimpleNamespace(
3802+
name="queue1",
3803+
nodenames="queue1-st-cr1-1,queue1-st-cr1-2",
3804+
state="UP",
3805+
slurm_nodes=[
3806+
StaticNode(name="queue1-st-cr1-1", nodeaddr="", nodehostname="", state=""),
3807+
StaticNode(name="queue1-st-cr1-2", nodeaddr="", nodehostname="", state=""),
3808+
],
3809+
),
3810+
"queue2": SimpleNamespace(
3811+
name="queue2",
3812+
nodenames="queue2-st-cr1-1,queue2-st-cr1-2",
3813+
state="INACTIVE",
3814+
slurm_nodes=[
3815+
StaticNode(name="queue2-st-cr1-1", nodeaddr="", nodehostname="", state=""),
3816+
StaticNode(name="queue2-st-cr1-2", nodeaddr="", nodehostname="", state=""),
3817+
],
3818+
),
3819+
},
3820+
[
3821+
StaticNode(name="queue1-st-cr1-1", nodeaddr="", nodehostname="", state=""),
3822+
StaticNode(name="queue1-st-cr1-2", nodeaddr="", nodehostname="", state=""),
3823+
],
3824+
id="Two non-overlapping partitions, one active and one inactive",
3825+
),
3826+
pytest.param(
3827+
{
3828+
"queue1": SimpleNamespace(
3829+
name="queue1",
3830+
nodenames="queue1-st-cr1-1,queue1-st-cr1-2",
3831+
state="INACTIVE",
3832+
slurm_nodes=[
3833+
StaticNode(name="queue1-st-cr1-1", nodeaddr="", nodehostname="", state=""),
3834+
StaticNode(name="queue1-st-cr1-2", nodeaddr="", nodehostname="", state=""),
3835+
],
3836+
),
3837+
"queue2": SimpleNamespace(
3838+
name="queue2",
3839+
nodenames="queue2-st-cr1-1,queue2-st-cr1-2",
3840+
state="INACTIVE",
3841+
slurm_nodes=[
3842+
StaticNode(name="queue2-st-cr1-1", nodeaddr="", nodehostname="", state=""),
3843+
StaticNode(name="queue2-st-cr1-2", nodeaddr="", nodehostname="", state=""),
3844+
],
3845+
),
3846+
},
3847+
[],
3848+
id="Two inactive non-overlapping partitions",
3849+
),
37943850
],
37953851
)
37963852
def test_find_active_nodes(partitions_name_map, expected_nodelist):

0 commit comments

Comments
 (0)