X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/6eb3d1fb8fe71623fa63da46c250184cf2e4fbb8..5e2e17fbe7f983eab083d3bb347c48c549a1d24c:/services/nodemanager/tests/testutil.py diff --git a/services/nodemanager/tests/testutil.py b/services/nodemanager/tests/testutil.py index 82d6479e24..b9e7beabb5 100644 --- a/services/nodemanager/tests/testutil.py +++ b/services/nodemanager/tests/testutil.py @@ -30,7 +30,8 @@ def arvados_node_mock(node_num=99, job_uuid=None, age=-1, **kwargs): 'ip_address': ip_address_mock(node_num), 'job_uuid': job_uuid, 'crunch_worker_state': crunch_worker_state, - 'info': {'ping_secret': 'defaulttestsecret'}} + 'properties': {}, + 'info': {'ping_secret': 'defaulttestsecret', 'ec2_instance_id': str(node_num)}} node.update(kwargs) return node @@ -44,17 +45,6 @@ def cloud_object_mock(name_id, **extra): cloud_object.extra = extra return cloud_object -def cloud_node_mock(node_num=99, **extra): - node = mock.NonCallableMagicMock( - ['id', 'name', 'state', 'public_ips', 'private_ips', 'driver', 'size', - 'image', 'extra'], - name='cloud_node') - node.id = str(node_num) - node.name = node.id - node.public_ips = [] - node.private_ips = [ip_address_mock(node_num)] - node.extra = extra - return node def cloud_node_fqdn(node): # We intentionally put the FQDN somewhere goofy to make sure tested code is @@ -95,7 +85,10 @@ class MockTimer(object): to_deliver = self.messages self.messages = [] for callback, args, kwargs in to_deliver: - callback(*args, **kwargs) + try: + callback(*args, **kwargs) + except pykka.ActorDeadError: + pass def schedule(self, want_time, callback, *args, **kwargs): with self.lock: @@ -140,6 +133,14 @@ class DriverTestMixin(object): def driver_method_args(self, method_name): return getattr(self.driver_mock(), method_name).call_args + def test_driver_create_retry(self): + with mock.patch('time.sleep'): + driver_mock2 = mock.MagicMock(name='driver_mock2') + self.driver_mock.side_effect = (Exception("oops"), driver_mock2) + kwargs = {'user_id': 'foo'} + driver = self.new_driver(auth_kwargs=kwargs) + self.assertTrue(self.driver_mock.called) + self.assertIs(driver.real, driver_mock2) class RemotePollLoopActorTestMixin(ActorTestMixin): def build_monitor(self, *args, **kwargs): @@ -148,3 +149,16 @@ class RemotePollLoopActorTestMixin(ActorTestMixin): self.subscriber = mock.Mock(name='subscriber_mock') self.monitor = self.TEST_CLASS.start( self.client, self.timer, *args, **kwargs).proxy() + +def cloud_node_mock(node_num=99, size=MockSize(1), **extra): + node = mock.NonCallableMagicMock( + ['id', 'name', 'state', 'public_ips', 'private_ips', 'driver', 'size', + 'image', 'extra'], + name='cloud_node') + node.id = str(node_num) + node.name = node.id + node.size = size + node.public_ips = [] + node.private_ips = [ip_address_mock(node_num)] + node.extra = extra + return node