Skip to content

Commit a3f9c98

Browse files
committed
added test for getting threads resources
1 parent f6551af commit a3f9c98

File tree

2 files changed

+44
-3
lines changed

2 files changed

+44
-3
lines changed

services/autoscaling/src/simcore_service_autoscaling/modules/dask.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ async def _wrap_client_async_routine(
4040

4141

4242
_DASK_SCHEDULER_CONNECT_TIMEOUT_S: Final[int] = 5
43-
_DASK_WORKER_THREAD_RESOURCE_NAME: Final[str] = "threads"
43+
DASK_WORKER_THREAD_RESOURCE_NAME: Final[str] = "threads"
4444

4545

4646
@contextlib.asynccontextmanager
@@ -330,7 +330,7 @@ async def try_retire_nodes(
330330
)
331331

332332

333-
async def add_instance_generic_resources(
333+
def add_instance_generic_resources(
334334
settings: DaskMonitoringSettings, instance: EC2InstanceData
335335
) -> None:
336336
instance_threads = round(instance.resources.cpus)
@@ -339,6 +339,6 @@ async def add_instance_generic_resources(
339339
instance_threads = settings.DASK_NTHREADS
340340
if settings.DASK_NTHREADS_MULTIPLIER > 1:
341341
instance_threads = instance_threads * settings.DASK_NTHREADS_MULTIPLIER
342-
instance.resources.generic_resources[_DASK_WORKER_THREAD_RESOURCE_NAME] = (
342+
instance.resources.generic_resources[DASK_WORKER_THREAD_RESOURCE_NAME] = (
343343
instance_threads
344344
)

services/autoscaling/tests/unit/test_modules_dask.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,11 @@
3131
EC2InstanceData,
3232
)
3333
from simcore_service_autoscaling.modules.dask import (
34+
DASK_WORKER_THREAD_RESOURCE_NAME,
35+
DaskMonitoringSettings,
3436
DaskTask,
3537
_scheduler_client,
38+
add_instance_generic_resources,
3639
get_worker_still_has_results_in_memory,
3740
get_worker_used_resources,
3841
list_processing_tasks_per_worker,
@@ -370,3 +373,41 @@ def _add_fct(x: int, y: int) -> int:
370373
)
371374
== Resources.create_as_empty()
372375
)
376+
377+
378+
@pytest.mark.parametrize(
379+
"dask_nthreads, dask_nthreads_multiplier, expected_threads_resource",
380+
[(4, 1, 4), (4, 2, 8), (0, 2.0, -1)],
381+
)
382+
def test_add_instance_generic_resources(
383+
fake_ec2_instance_data: Callable[..., EC2InstanceData],
384+
faker: Faker,
385+
dask_nthreads: int,
386+
dask_nthreads_multiplier: int,
387+
expected_threads_resource: int,
388+
):
389+
settings = DaskMonitoringSettings(
390+
DASK_MONITORING_URL=faker.url(),
391+
DASK_SCHEDULER_AUTH=NoAuthentication(),
392+
DASK_NTHREADS=dask_nthreads,
393+
DASK_NTHREADS_MULTIPLIER=dask_nthreads_multiplier,
394+
)
395+
ec2_instance_data = fake_ec2_instance_data()
396+
assert ec2_instance_data.resources.cpus > 0
397+
assert ec2_instance_data.resources.ram > 0
398+
assert ec2_instance_data.resources.generic_resources == {}
399+
400+
add_instance_generic_resources(settings, ec2_instance_data)
401+
assert ec2_instance_data.resources.generic_resources != {}
402+
assert (
403+
DASK_WORKER_THREAD_RESOURCE_NAME
404+
in ec2_instance_data.resources.generic_resources
405+
)
406+
if expected_threads_resource < 0:
407+
expected_threads_resource = (
408+
ec2_instance_data.resources.cpus * dask_nthreads_multiplier
409+
)
410+
assert (
411+
ec2_instance_data.resources.generic_resources[DASK_WORKER_THREAD_RESOURCE_NAME]
412+
== expected_threads_resource
413+
)

0 commit comments

Comments
 (0)