Skip to content

Commit e63bc0e

Browse files
bugfix: size_to_megs was not imported in SlurmQOS clean method
1 parent 9f70b76 commit e63bc0e

File tree

4 files changed

+70
-4
lines changed

4 files changed

+70
-4
lines changed

cheeto/database/slurm.py

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
from ..puppet import (SlurmQOSTRES as PuppetSlurmQOSTRES,
2121
SlurmQOS as PuppetSlurmQOS)
22+
from ..utils import size_to_megs
2223

2324
from .base import BaseDocument
2425
from .fields import (POSIXNameField,

cheeto/tests/conftest.py

+9-2
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,16 @@ def start_mongodb(tmp_path_factory):
133133

134134

135135
@pytest.fixture(scope='session')
136-
def config(request):
136+
def config_file(tmp_path_factory):
137137
data_dir = Path(__file__).parent / 'data'
138-
return get_config(data_dir / 'config.yaml')
138+
config_file = tmp_path_factory.mktemp('cheeto-config') / 'config.yaml'
139+
shutil.copy(data_dir / 'config.yaml', config_file)
140+
return config_file
141+
142+
143+
@pytest.fixture(scope='session')
144+
def config(config_file):
145+
return get_config(config_file)
139146

140147

141148
@pytest.fixture(scope='session')

cheeto/tests/test_db.py

+45-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
from ..database import *
77

8-
from .conftest import drop_database
8+
from .conftest import drop_database, run_shell_cmd
99

1010

1111
def test_connect_to_database(db_config):
@@ -77,4 +77,47 @@ def test_add_duplicate_site_user(self):
7777
user, group = create_user(*self.USER_ARGS)
7878
add_site_user('test-site', user)
7979
with pytest.raises(DuplicateSiteUser):
80-
add_site_user('test-site', user)
80+
add_site_user('test-site', user)
81+
82+
83+
class TestSlurm:
84+
85+
@pytest.fixture(autouse=True)
86+
def setup_site(self, db_config):
87+
drop_database(db_config)
88+
create_site('test-site', 'test.site.com')
89+
yield
90+
drop_database(db_config)
91+
92+
def test_create_qos(self):
93+
qos = create_slurm_qos('test-qos',
94+
'test-site',
95+
group_limits=SlurmTRES(cpus=16, mem='1000M', gpus=0),
96+
user_limits=SlurmTRES(cpus=16, mem='1000M', gpus=0),
97+
job_limits=SlurmTRES(cpus=16, mem='1000M', gpus=0))
98+
assert qos.qosname == 'test-qos'
99+
assert qos.sitename == 'test-site'
100+
assert SiteSlurmQOS.objects.count() == 1
101+
102+
def test_create_qos_cleaning(self):
103+
qos = create_slurm_qos('test-qos',
104+
'test-site',
105+
group_limits=SlurmTRES(cpus=16, mem='1G', gpus=0),
106+
user_limits=SlurmTRES(cpus=16, mem='1G', gpus=0),
107+
job_limits=SlurmTRES(cpus=16, mem='1G', gpus=0))
108+
assert qos.group_limits.mem == '1024M'
109+
assert qos.user_limits.mem == '1024M'
110+
assert qos.job_limits.mem == '1024M'
111+
112+
def test_create_qos_command(self, config_file):
113+
run_shell_cmd(['cheeto', 'database', 'slurm', 'new', 'qos',
114+
'--config', config_file,
115+
'--qosname', 'test-qos',
116+
'--site', 'test-site',
117+
'--group-limits', 'cpus=16,mem=1G,gpus=0',
118+
'--user-limits', 'cpus=16,mem=1G,gpus=0',
119+
'--job-limits', 'cpus=16,mem=1G,gpus=0'])
120+
assert SiteSlurmQOS.objects.count() == 1
121+
assert SiteSlurmQOS.objects.get(qosname='test-qos').group_limits.mem == '1024M'
122+
assert SiteSlurmQOS.objects.get(qosname='test-qos').user_limits.mem == '1024M'
123+
assert SiteSlurmQOS.objects.get(qosname='test-qos').job_limits.mem == '1024M'

cheeto/tests/test_slurm.py

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import pytest
2+
from ..types import parse_qos_tres
3+
4+
5+
def test_parse_qos_tres():
6+
assert parse_qos_tres('mem=1000M,cpus=16,gpus=0') == {'mem': '1000M', 'cpus': '16', 'gpus': '0'}
7+
8+
9+
def test_parse_qos_tres_none():
10+
assert parse_qos_tres(None) == {'mem': None, 'cpus': None, 'gpus': None}
11+
12+
13+
def test_parse_qos_tres_empty():
14+
with pytest.raises(ValueError):
15+
print(parse_qos_tres(''))

0 commit comments

Comments
 (0)