From f14ce11321e919cc39b878fe9f7847e1a9bb0de3 Mon Sep 17 00:00:00 2001 From: Peter Amstutz Date: Tue, 14 Feb 2017 16:22:09 -0500 Subject: [PATCH] 6520: Add testcase using sinfo to set crunch_worker_state --- services/nodemanager/arvnodeman/nodelist.py | 2 +- services/nodemanager/tests/test_nodelist.py | 36 +++++++++++++++++++-- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/services/nodemanager/arvnodeman/nodelist.py b/services/nodemanager/arvnodeman/nodelist.py index 6d436bee52..5b02fde0ce 100644 --- a/services/nodemanager/arvnodeman/nodelist.py +++ b/services/nodemanager/arvnodeman/nodelist.py @@ -23,7 +23,7 @@ class ArvadosNodeListMonitorActor(clientactor.RemotePollLoopActor): return node['uuid'] def _send_request(self): - nodelist = arvados.util.list_all(self._client.nodes) + nodelist = arvados.util.list_all(self._client.nodes().list) # node hostname, state sinfo_out = subprocess.check_output(["sinfo", "--noheader", "--format=%n %t"]) diff --git a/services/nodemanager/tests/test_nodelist.py b/services/nodemanager/tests/test_nodelist.py index 5346e7ab7b..8ceaca6fbe 100644 --- a/services/nodemanager/tests/test_nodelist.py +++ b/services/nodemanager/tests/test_nodelist.py @@ -3,6 +3,7 @@ from __future__ import absolute_import, print_function import unittest +import mock import arvnodeman.nodelist as nodelist from . import testutil @@ -16,13 +17,43 @@ class ArvadosNodeListMonitorActorTestCase(testutil.RemotePollLoopActorTestMixin, *args, **kwargs) self.client.nodes().list().execute.side_effect = side_effect - def test_uuid_is_subscription_key(self): + @mock.patch("subprocess.check_output") + def test_uuid_is_subscription_key(self, sinfo_mock): + sinfo_mock.return_value = "" node = testutil.arvados_node_mock() - self.build_monitor([{'items': [node]}]) + self.build_monitor([{ + 'items': [node], + 'items_available': 1, + 'offset': 0 + }, { + 'items': [], + 'items_available': 1, + 'offset': 1 + }]) self.monitor.subscribe_to(node['uuid'], self.subscriber).get(self.TIMEOUT) self.stop_proxy(self.monitor) self.subscriber.assert_called_with(node) + self.assertEqual("down", node["crunch_worker_state"]) + + @mock.patch("subprocess.check_output") + def test_update_from_sinfo(self, sinfo_mock): + sinfo_mock.return_value = "compute99 alloc" + node = testutil.arvados_node_mock() + self.build_monitor([{ + 'items': [node], + 'items_available': 1, + 'offset': 0 + }, { + 'items': [], + 'items_available': 1, + 'offset': 1 + }]) + self.monitor.subscribe_to(node['uuid'], + self.subscriber).get(self.TIMEOUT) + self.stop_proxy(self.monitor) + self.subscriber.assert_called_with(node) + self.assertEqual("busy", node["crunch_worker_state"]) class CloudNodeListMonitorActorTestCase(testutil.RemotePollLoopActorTestMixin, @@ -54,4 +85,3 @@ class CloudNodeListMonitorActorTestCase(testutil.RemotePollLoopActorTestMixin, if __name__ == '__main__': unittest.main() - -- 2.30.2