Skip to content

Commit

Permalink
Update HTEX to report manager version info (#3417)
Browse files Browse the repository at this point in the history
htex.connected_managers will now report `python_version` and `parsl_version` for each connected manager.
  • Loading branch information
yadudoc committed May 8, 2024
1 parent 1689a84 commit 80f6a7a
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 0 deletions.
4 changes: 4 additions & 0 deletions parsl/executors/high_throughput/interchange.py
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,8 @@ def _command_server(self) -> NoReturn:
'tasks': len(m['tasks']),
'idle_duration': idle_duration,
'active': m['active'],
'parsl_version': m['parsl_version'],
'python_version': m['python_version'],
'draining': m['draining']}
reply.append(resp)

Expand Down Expand Up @@ -435,6 +437,8 @@ def process_task_outgoing_incoming(
'worker_count': 0,
'active': True,
'draining': False,
'parsl_version': msg['parsl_v'],
'python_version': msg['python_v'],
'tasks': []}
self.connected_block_history.append(msg['block_id'])

Expand Down
2 changes: 2 additions & 0 deletions parsl/executors/high_throughput/manager_record.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,5 @@ class ManagerRecord(TypedDict, total=False):
last_heartbeat: float
idle_since: Optional[float]
timestamp: datetime
parsl_version: str
python_version: str
40 changes: 40 additions & 0 deletions parsl/tests/test_htex/test_managers_command.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import pytest
import logging

import sys
import parsl
from parsl.app.app import python_app
from parsl.tests.configs.htex_local import fresh_config


def local_setup():
config = fresh_config()
config.executors[0].poll_period = 1
config.executors[0].max_workers_per_node = 1
parsl.load(config)


def local_teardown():
parsl.dfk().cleanup()
parsl.clear()


@python_app
def dummy():
pass


@pytest.mark.local
def test_connected_managers():

# Run dummy function to ensure a manager is online
x = dummy()
assert x.result() is None
executor = parsl.dfk().executors['htex_local']
manager_info_list = executor.connected_managers()
assert len(manager_info_list) == 1
manager_info = manager_info_list[0]
assert 'python_version' in manager_info
assert 'parsl_version' in manager_info
assert manager_info['parsl_version'] == parsl.__version__
assert manager_info['python_version'] == f"{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}"

0 comments on commit 80f6a7a

Please sign in to comment.