]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Unit tests: Don't use mox to stub uuid.uuid4()
authorZane Bitter <zbitter@redhat.com>
Thu, 13 Jun 2013 18:03:26 +0000 (20:03 +0200)
committerZane Bitter <zbitter@redhat.com>
Thu, 13 Jun 2013 18:03:26 +0000 (20:03 +0200)
The wait condition unit tests require a fixed stack ID, but we don't want
to permanently stub out uuid4, since there are other potential uses of
uuids. Instead, just do it for that one operation.

Change-Id: Ib8b7107a5750caf67aa8905377c2755bf405fa3f

heat/tests/test_waitcondition.py

index e8ea83564f2aa0670b7727e6682b39eb2674f646..54414cf4ed0ebc1d3833fe995090bb9e7646d709 100644 (file)
@@ -78,6 +78,19 @@ test_template_wc_count = '''
 '''
 
 
+class UUIDStub(object):
+    def __init__(self, value):
+        self.value = value
+
+    def __enter__(self):
+        self.uuid4 = uuid.uuid4
+        uuid_stub = lambda: self.value
+        uuid.uuid4 = uuid_stub
+
+    def __exit__(self, *exc_info):
+        uuid.uuid4 = self.uuid4
+
+
 class WaitConditionTest(HeatTestCase):
 
     def setUp(self):
@@ -91,6 +104,7 @@ class WaitConditionTest(HeatTestCase):
         cfg.CONF.set_default('heat_waitcondition_server_url',
                              'http://127.0.0.1:8000/v1/waitcondition')
 
+        self.stack_id = 'STACKABCD1234'
         self.fc = fakes.FakeKeystoneClient()
 
     # Note tests creating a stack should be decorated with @stack_delete_after
@@ -106,7 +120,9 @@ class WaitConditionTest(HeatTestCase):
         stack = parser.Stack(ctx, stack_name, template, parameters,
                              disable_rollback=True)
 
-        self.stack_id = stack.store()
+        # Stub out the stack ID so we have a known value
+        with UUIDStub(self.stack_id):
+            stack.store()
 
         if stub:
             scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
@@ -283,10 +299,6 @@ class WaitConditionTest(HeatTestCase):
 
     @stack_delete_after
     def test_validate_handle_url_bad_stackid(self):
-        # Stub out the stack ID so we have a known value
-        stack_id = 'STACKABCD1234'
-        self.m.StubOutWithMock(uuid, 'uuid4')
-        uuid.uuid4().AndReturn(stack_id)
         self.m.ReplayAll()
 
         t = json.loads(test_template_waitcondition)
@@ -306,17 +318,13 @@ class WaitConditionTest(HeatTestCase):
 
     @stack_delete_after
     def test_validate_handle_url_bad_stackname(self):
-        # Stub out the stack ID so we have a known value
-        stack_id = 'STACKABCD1234'
-        self.m.StubOutWithMock(uuid, 'uuid4')
-        uuid.uuid4().AndReturn(stack_id)
         self.m.ReplayAll()
 
         t = json.loads(test_template_waitcondition)
         badhandle = ("http://127.0.0.1:8000/v1/waitcondition/" +
                      "arn%3Aopenstack%3Aheat%3A%3Atest_tenant" +
                      "%3Astacks%2FBAD_stack%2F" +
-                     stack_id + "%2Fresources%2FWaitHandle")
+                     self.stack_id + "%2Fresources%2FWaitHandle")
         t['Resources']['WaitForTheHandle']['Properties']['Handle'] = badhandle
         self.stack = self.create_stack(template=json.dumps(t), stub=False)
 
@@ -327,17 +335,13 @@ class WaitConditionTest(HeatTestCase):
 
     @stack_delete_after
     def test_validate_handle_url_bad_tenant(self):
-        # Stub out the stack ID so we have a known value
-        stack_id = 'STACKABCD1234'
-        self.m.StubOutWithMock(uuid, 'uuid4')
-        uuid.uuid4().AndReturn(stack_id)
         self.m.ReplayAll()
 
         t = json.loads(test_template_waitcondition)
         badhandle = ("http://127.0.0.1:8000/v1/waitcondition/" +
                      "arn%3Aopenstack%3Aheat%3A%3ABAD_tenant" +
                      "%3Astacks%2Ftest_stack%2F" +
-                     stack_id + "%2Fresources%2FWaitHandle")
+                     self.stack_id + "%2Fresources%2FWaitHandle")
         t['Resources']['WaitForTheHandle']['Properties']['Handle'] = badhandle
         self.stack = self.create_stack(template=json.dumps(t), stub=False)
 
@@ -348,17 +352,13 @@ class WaitConditionTest(HeatTestCase):
 
     @stack_delete_after
     def test_validate_handle_url_bad_resource(self):
-        # Stub out the stack ID so we have a known value
-        stack_id = 'STACKABCD1234'
-        self.m.StubOutWithMock(uuid, 'uuid4')
-        uuid.uuid4().AndReturn(stack_id)
         self.m.ReplayAll()
 
         t = json.loads(test_template_waitcondition)
         badhandle = ("http://127.0.0.1:8000/v1/waitcondition/" +
                      "arn%3Aopenstack%3Aheat%3A%3Atest_tenant" +
                      "%3Astacks%2Ftest_stack%2F" +
-                     stack_id + "%2Fresources%2FBADHandle")
+                     self.stack_id + "%2Fresources%2FBADHandle")
         t['Resources']['WaitForTheHandle']['Properties']['Handle'] = badhandle
         self.stack = self.create_stack(template=json.dumps(t), stub=False)
 
@@ -369,17 +369,13 @@ class WaitConditionTest(HeatTestCase):
 
     @stack_delete_after
     def test_validate_handle_url_bad_resource_type(self):
-        # Stub out the stack ID so we have a known value
-        stack_id = 'STACKABCD1234'
-        self.m.StubOutWithMock(uuid, 'uuid4')
-        uuid.uuid4().AndReturn(stack_id)
         self.m.ReplayAll()
 
         t = json.loads(test_template_waitcondition)
         badhandle = ("http://127.0.0.1:8000/v1/waitcondition/" +
                      "arn%3Aopenstack%3Aheat%3A%3Atest_tenant" +
                      "%3Astacks%2Ftest_stack%2F" +
-                     stack_id + "%2Fresources%2FWaitForTheHandle")
+                     self.stack_id + "%2Fresources%2FWaitForTheHandle")
         t['Resources']['WaitForTheHandle']['Properties']['Handle'] = badhandle
         self.stack = self.create_stack(template=json.dumps(t), stub=False)
 
@@ -409,10 +405,8 @@ class WaitConditionHandleTest(HeatTestCase):
         stack = parser.Stack(ctx, stack_name, template, parameters,
                              disable_rollback=True)
         # Stub out the UUID for this test, so we can get an expected signature
-        self.m.StubOutWithMock(uuid, 'uuid4')
-        uuid.uuid4().AndReturn('STACKABCD1234')
-        self.m.ReplayAll()
-        stack.store()
+        with UUIDStub('STACKABCD1234'):
+            stack.store()
 
         self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
         scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)