X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/3353ab9554dc5dfa647dd767b7b2623adcf753ab..1fd5716e1714337b6ff96f6725e1f22c7a6ceb65:/services/nodemanager/tests/test_computenode_driver_gce.py diff --git a/services/nodemanager/tests/test_computenode_driver_gce.py b/services/nodemanager/tests/test_computenode_driver_gce.py index b9d7ee9fd0..84e061d867 100644 --- a/services/nodemanager/tests/test_computenode_driver_gce.py +++ b/services/nodemanager/tests/test_computenode_driver_gce.py @@ -48,6 +48,16 @@ class GCEComputeNodeDriverTestCase(testutil.DriverTestMixin, unittest.TestCase): metadata = self.driver_mock().create_node.call_args[1]['ex_metadata'] self.assertIn('ping_secret=ssshh', metadata.get('arv-ping-url')) + def test_create_raises_but_actually_succeeded(self): + arv_node = testutil.arvados_node_mock(1, hostname=None) + driver = self.new_driver() + nodelist = [testutil.cloud_node_mock(1)] + nodelist[0].name = 'compute-000000000000001-zzzzz' + self.driver_mock().list_nodes.return_value = nodelist + self.driver_mock().create_node.side_effect = IOError + n = driver.create_node(testutil.MockSize(1), arv_node) + self.assertEqual('compute-000000000000001-zzzzz', n.name) + def test_create_sets_default_hostname(self): driver = self.new_driver() driver.create_node(testutil.MockSize(1), @@ -194,3 +204,38 @@ class GCEComputeNodeDriverTestCase(testutil.DriverTestMixin, unittest.TestCase): self.assertEqual( service_accounts, self.driver_mock().create_node.call_args[1]['ex_service_accounts']) + + def test_fix_string_size(self): + # As of 0.18, the libcloud GCE driver sets node.size to the size's name. + # It's supposed to be the actual size object. Make sure our driver + # patches that up in listings. + size = testutil.MockSize(2) + node = testutil.cloud_node_mock(size=size) + node.size = size.name + self.driver_mock().list_sizes.return_value = [size] + self.driver_mock().list_nodes.return_value = [node] + driver = self.new_driver() + nodelist = driver.list_nodes() + self.assertEqual(1, len(nodelist)) + self.assertIs(node, nodelist[0]) + self.assertIs(size, nodelist[0].size) + + def test_skip_fix_when_size_not_string(self): + # Ensure we don't monkeypatch node sizes unless we need to. + size = testutil.MockSize(3) + node = testutil.cloud_node_mock(size=size) + self.driver_mock().list_nodes.return_value = [node] + driver = self.new_driver() + nodelist = driver.list_nodes() + self.assertEqual(1, len(nodelist)) + self.assertIs(node, nodelist[0]) + self.assertIs(size, nodelist[0].size) + + def test_node_found_after_timeout_has_fixed_size(self): + size = testutil.MockSize(4) + cloud_node = testutil.cloud_node_mock(size=size.id) + self.check_node_found_after_timeout_has_fixed_size(size, cloud_node) + + def test_list_empty_nodes(self): + self.driver_mock().list_nodes.return_value = [] + self.assertEqual([], self.new_driver().list_nodes())