X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/f6071ef7bc7f6b7308c202e330cabd4ca111aadd..0561bd0c3c07257fd58ded6c7cfa5feeae97af57:/services/nodemanager/tests/test_computenode_dispatch.py diff --git a/services/nodemanager/tests/test_computenode_dispatch.py b/services/nodemanager/tests/test_computenode_dispatch.py index c718dad6b6..a8aa2e38fb 100644 --- a/services/nodemanager/tests/test_computenode_dispatch.py +++ b/services/nodemanager/tests/test_computenode_dispatch.py @@ -1,4 +1,7 @@ #!/usr/bin/env python +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 from __future__ import absolute_import, print_function @@ -28,7 +31,6 @@ class ComputeNodeSetupActorTestCase(testutil.ActorTestMixin, unittest.TestCase): self.api_client.nodes().update().execute.side_effect = arvados_effect self.cloud_client = mock.MagicMock(name='cloud_client') self.cloud_client.create_node.return_value = testutil.cloud_node_mock(1) - self.cloud_client.is_cloud_exception = BaseComputeNodeDriver.is_cloud_exception def make_actor(self, arv_node=None): if not hasattr(self, 'timer'): @@ -90,27 +92,27 @@ class ComputeNodeSetupActorTestCase(testutil.ActorTestMixin, unittest.TestCase): self.make_actor() self.wait_for_assignment(self.setup_actor, 'cloud_node') - def test_unknown_basehttperror_not_retried(self): + def test_basehttperror_retried(self): self.make_mocks() self.cloud_client.create_node.side_effect = [ - BaseHTTPError(400, "Unknown"), + BaseHTTPError(500, "Try again"), self.cloud_client.create_node.return_value, ] self.make_actor() - finished = threading.Event() - self.setup_actor.subscribe(lambda _: finished.set()) - assert(finished.wait(self.TIMEOUT)) - self.assertEqual(0, self.cloud_client.post_create_node.call_count) + self.wait_for_assignment(self.setup_actor, 'cloud_node') + self.assertEqual(1, self.cloud_client.post_create_node.call_count) - def test_known_basehttperror_retried(self): + def test_instance_exceeded_not_retried(self): self.make_mocks() self.cloud_client.create_node.side_effect = [ BaseHTTPError(400, "InstanceLimitExceeded"), self.cloud_client.create_node.return_value, ] self.make_actor() - self.wait_for_assignment(self.setup_actor, 'cloud_node') - self.assertEqual(1, self.cloud_client.post_create_node.call_count) + done = self.FUTURE_CLASS() + self.setup_actor.subscribe(done.set) + done.get(self.TIMEOUT) + self.assertEqual(0, self.cloud_client.post_create_node.call_count) def test_failed_post_create_retried(self): self.make_mocks() @@ -277,7 +279,8 @@ class ComputeNodeUpdateActorTestCase(testutil.ActorTestMixin, def make_actor(self): self.driver = mock.MagicMock(name='driver_mock') - self.updater = self.ACTOR_CLASS.start(self.driver).proxy() + self.timer = mock.MagicMock(name='timer_mock') + self.updater = self.ACTOR_CLASS.start(self.driver, self.timer).proxy() def test_node_sync(self, *args): self.make_actor()