Initial mm CLI
This commit is contained in:
63
tests/test_cli.py
Normal file
63
tests/test_cli.py
Normal file
@@ -0,0 +1,63 @@
|
||||
from pathlib import Path
|
||||
from tempfile import TemporaryDirectory
|
||||
import unittest
|
||||
|
||||
from mm.cli import load_machines, parse_nvidia_smi_csv
|
||||
|
||||
|
||||
class ConfigTests(unittest.TestCase):
|
||||
def test_loads_string_and_object_machine_entries(self) -> None:
|
||||
with TemporaryDirectory() as tmpdir:
|
||||
config_path = Path(tmpdir) / "list.yaml"
|
||||
config_path.write_text(
|
||||
"""
|
||||
machines:
|
||||
- dash0
|
||||
- alias: dash1
|
||||
label: training-1
|
||||
""",
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
machines = load_machines(config_path)
|
||||
|
||||
self.assertEqual([machine.alias for machine in machines], ["dash0", "dash1"])
|
||||
self.assertEqual([machine.label for machine in machines], ["dash0", "training-1"])
|
||||
|
||||
def test_loads_mapping_machine_entries(self) -> None:
|
||||
with TemporaryDirectory() as tmpdir:
|
||||
config_path = Path(tmpdir) / "list.yaml"
|
||||
config_path.write_text(
|
||||
"""
|
||||
machines:
|
||||
dash0:
|
||||
dash1:
|
||||
label: training-1
|
||||
""",
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
machines = load_machines(config_path)
|
||||
|
||||
self.assertEqual([machine.alias for machine in machines], ["dash0", "dash1"])
|
||||
self.assertEqual([machine.label for machine in machines], ["dash0", "training-1"])
|
||||
|
||||
|
||||
class NvidiaSmiParsingTests(unittest.TestCase):
|
||||
def test_parse_csv_output(self) -> None:
|
||||
output = (
|
||||
"0, NVIDIA A100-SXM4-80GB, 12000, 81920, 84, 61, 294.3, 400.0\n"
|
||||
"1, NVIDIA A100-SXM4-80GB, 0, 81920, 0, 32, 49.8, 400.0\n"
|
||||
)
|
||||
|
||||
gpus = parse_nvidia_smi_csv(output)
|
||||
|
||||
self.assertEqual(len(gpus), 2)
|
||||
self.assertEqual(gpus[0].index, "0")
|
||||
self.assertEqual(gpus[0].memory_used_mib, 12000)
|
||||
self.assertEqual(gpus[0].utilization_pct, 84)
|
||||
self.assertEqual(gpus[1].power_draw_w, 49.8)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user