]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Add test to handle nova BUILD status on create
authorClint Byrum <clint@fewbar.com>
Wed, 1 May 2013 22:17:37 +0000 (15:17 -0700)
committerJeremy Stanley <fungi@yuggoth.org>
Tue, 7 May 2013 17:37:02 +0000 (17:37 +0000)
Other tests assume nova will return an ACTIVE server on create, which is
somewhat unlikely.

Fixes bug #1133580

Change-Id: I6ccc079e8978894f7648a6000f74869434c600f6

heat/tests/test_instance.py

index 4c4ba02e0cc0d91c0cd18b59fbe1cfeb96802f7a..50e3d1442081932f580c78da5e0cd614dadb57a0 100644 (file)
@@ -59,7 +59,7 @@ class instancesTest(HeatTestCase):
         self.fc = fakes.FakeClient()
         setup_dummy_db()
 
-    def _create_test_instance(self, return_server, name):
+    def _setup_test_instance(self, return_server, name):
         stack_name = '%s_stack' % name
         t = template_format.parse(wp_template)
         template = parser.Template(t)
@@ -89,8 +89,12 @@ class instancesTest(HeatTestCase):
             userdata=server_userdata, scheduler_hints=None,
             meta=None, nics=None, availability_zone=None).AndReturn(
                 return_server)
-        self.m.ReplayAll()
 
+        return instance
+
+    def _create_test_instance(self, return_server, name):
+        instance = self._setup_test_instance(return_server, name)
+        self.m.ReplayAll()
         scheduler.TaskRunner(instance.create)()
         return instance
 
@@ -139,6 +143,21 @@ class instancesTest(HeatTestCase):
                          instance.UPDATE_COMPLETE)
         self.assertEqual(instance.metadata, {'test': 123})
 
+    def test_instance_status_build(self):
+        return_server = self.fc.servers.list()[0]
+        instance = self._setup_test_instance(return_server,
+                                             'test_instance_status_build')
+        instance.resource_id = 1234
+
+        # Bind new fake get method which Instance.check_active will call
+        def activate_status(server):
+            server.status = 'ACTIVE'
+        return_server.get = activate_status.__get__(return_server)
+        self.m.ReplayAll()
+
+        scheduler.TaskRunner(instance.create)()
+        self.assertEqual(instance.state, instance.CREATE_COMPLETE)
+
     def test_build_nics(self):
         self.assertEqual(None, instances.Instance._build_nics([]))
         self.assertEqual(None, instances.Instance._build_nics(None))