logger = logging.getLogger(__name__)
+# Whether TaskRunner._sleep actually does an eventlet sleep when called.
+ENABLE_SLEEP = True
+
+
def task_description(task):
"""
Return a human-readable string description of a task suitable for logging
def _sleep(self, wait_time):
"""Sleep for the specified number of seconds."""
- if wait_time is not None:
+ if ENABLE_SLEEP and wait_time is not None:
logger.debug('%s sleeping' % str(self))
eventlet.sleep(wait_time)
import logging
import mox
import testtools
+import heat.engine.scheduler as scheduler
class HeatTestCase(testtools.TestCase):
self.m = mox.Mox()
self.addCleanup(self.m.UnsetStubs)
self.useFixture(fixtures.FakeLogger(level=logging.DEBUG))
+ scheduler.ENABLE_SLEEP = False
+
+ def enable_sleep():
+ scheduler.ENABLE_SLEEP = True
+
+ self.addCleanup(enable_sleep)
return rsrc
def _stub_create(self, num):
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
self.m.StubOutWithMock(instance.Instance, 'handle_create')
self.m.StubOutWithMock(instance.Instance, 'check_create_complete')
for x in range(num):
instance.Instance.handle_create().AndReturn(cookie)
instance.Instance.check_create_complete(cookie).AndReturn(False)
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
instance.Instance.check_create_complete(
cookie).MultipleTimes().AndReturn(True)
self.m.VerifyAll()
self.m.UnsetStubs()
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
self.m.StubOutWithMock(instance.Instance, 'handle_suspend')
self.m.StubOutWithMock(instance.Instance, 'check_suspend_complete')
inst_cookie = (object(), object(), object())
instance.Instance.handle_suspend().AndReturn(inst_cookie)
instance.Instance.check_suspend_complete(inst_cookie).AndReturn(False)
instance.Instance.check_suspend_complete(inst_cookie).AndReturn(True)
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
self.m.ReplayAll()
scheduler.TaskRunner(rsrc.suspend)()
self.m.VerifyAll()
self.m.UnsetStubs()
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
self.m.StubOutWithMock(instance.Instance, 'handle_resume')
self.m.StubOutWithMock(instance.Instance, 'check_resume_complete')
inst_cookie = (object(), object(), object())
instance.Instance.handle_resume().AndReturn(inst_cookie)
instance.Instance.check_resume_complete(inst_cookie).AndReturn(False)
instance.Instance.check_resume_complete(inst_cookie).AndReturn(True)
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
self.m.ReplayAll()
rsrc.state_set(rsrc.SUSPEND, rsrc.COMPLETE)
t = template_format.parse(as_template)
stack = parse_stack(t)
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
-
self.m.StubOutWithMock(instance.Instance, 'handle_create')
self.m.StubOutWithMock(instance.Instance, 'check_create_complete')
exc = exception.ResourceFailure(Exception())
get = self.fc.client.get_servers_1234
get().AndReturn((200, d1))
get().AndReturn((200, d1))
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
get().AndReturn((200, d2))
self.m.ReplayAll()
get = self.fc.client.get_servers_1234
get().AndReturn((200, d1))
get().AndReturn((200, d1))
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
get().AndReturn((200, d2))
self.m.ReplayAll()
get = self.fc.client.get_servers_1234
get().AndReturn((200, d))
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
self.m.ReplayAll()
instance.state_set(instance.SUSPEND, instance.COMPLETE)
if server._test_check_iterations > 2:
server.status = 'ACTIVE'
return_server.get = activate_status.__get__(return_server)
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
self.m.ReplayAll()
scheduler.TaskRunner(instance.create)()
import copy
-import mox
-
from heat.common import exception
from heat.common import template_format
from heat.engine.resources import autoscaling as asc
setup_dummy_db()
def _stub_create(self, num):
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
self.m.StubOutWithMock(instance.Instance, 'handle_create')
self.m.StubOutWithMock(instance.Instance, 'check_create_complete')
for x in range(num):
instance.Instance.handle_create().AndReturn(cookie)
instance.Instance.check_create_complete(cookie).AndReturn(False)
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
instance.Instance.check_create_complete(
cookie).MultipleTimes().AndReturn(True)
return rsrc
def test_loadbalancer(self):
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
- scheduler.TaskRunner._sleep(mox.IsA(int)).MultipleTimes()
self.m.StubOutWithMock(user.User, 'keystone')
user.User.keystone().AndReturn(self.fkc)
'''
def setUp(self):
super(MetadataRefreshTest, self).setUp()
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
self.fc = fakes.FakeKeystoneClient()
setup_dummy_db()
instance.Instance.handle_create().AndReturn(cookie)
create_complete = instance.Instance.check_create_complete(cookie)
create_complete.InAnyOrder().AndReturn(True)
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
self.m.StubOutWithMock(instance.Instance, 'FnGetAtt')
return stack
# under the License.
import json
-import mox
import time
import uuid
def test_update_add(self):
tmpl = {'Resources': {'AResource': {'Type': 'GenericResourceType'}}}
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
- scheduler.TaskRunner._sleep(mox.IsA(int)).MultipleTimes()
- mox.Replay(scheduler.TaskRunner._sleep)
-
self.stack = parser.Stack(self.ctx, 'update_test_stack',
template.Template(tmpl))
self.stack.store()
'AResource': {'Type': 'GenericResourceType'},
'BResource': {'Type': 'GenericResourceType'}}}
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
- scheduler.TaskRunner._sleep(mox.IsA(int)).MultipleTimes()
- mox.Replay(scheduler.TaskRunner._sleep)
-
self.stack = parser.Stack(self.ctx, 'update_test_stack',
template.Template(tmpl))
self.stack.store()
tmpl = {'Description': 'ATemplate',
'Resources': {'AResource': {'Type': 'GenericResourceType'}}}
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
- scheduler.TaskRunner._sleep(mox.IsA(int)).MultipleTimes()
- mox.Replay(scheduler.TaskRunner._sleep)
-
self.stack = parser.Stack(self.ctx, 'update_test_stack',
template.Template(tmpl))
self.stack.store()
tmpl = {'Resources': {'AResource': {'Type': 'ResourceWithPropsType',
'Properties': {'Foo': 'abc'}}}}
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
- scheduler.TaskRunner._sleep(mox.IsA(int)).MultipleTimes()
- mox.Replay(scheduler.TaskRunner._sleep)
-
self.stack = parser.Stack(self.ctx, 'update_test_stack',
template.Template(tmpl))
self.stack.store()
tmpl = {'Resources': {'AResource': {'Type': 'ResourceWithPropsType',
'Properties': {'Foo': 'abc'}}}}
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
- scheduler.TaskRunner._sleep(mox.IsA(int)).MultipleTimes()
- mox.Replay(scheduler.TaskRunner._sleep)
-
self.stack = parser.Stack(self.ctx, 'update_test_stack',
template.Template(tmpl),
disable_rollback=True)
tmpl = {'Resources': {'AResource': {'Type': 'ResourceWithPropsType',
'Properties': {'Foo': 'abc'}}}}
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
- scheduler.TaskRunner._sleep(mox.IsA(int)).MultipleTimes()
- mox.Replay(scheduler.TaskRunner._sleep)
-
self.stack = parser.Stack(self.ctx, 'update_test_stack',
template.Template(tmpl),
disable_rollback=True)
tmpl = {'Resources': {'AResource': {'Type': 'ResourceWithPropsType',
'Properties': {'Foo': 'abc'}}}}
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
- scheduler.TaskRunner._sleep(mox.IsA(int)).MultipleTimes()
- mox.Replay(scheduler.TaskRunner._sleep)
-
self.stack = parser.Stack(self.ctx, 'update_test_stack',
template.Template(tmpl),
disable_rollback=True)
def test_update_add_failed_create(self):
tmpl = {'Resources': {'AResource': {'Type': 'GenericResourceType'}}}
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
- mox.Replay(scheduler.TaskRunner._sleep)
-
self.stack = parser.Stack(self.ctx, 'update_test_stack',
template.Template(tmpl))
self.stack.store()
tmpl = {'Resources': {'AResource': {'Type': 'ResourceWithPropsType',
'Properties': {'Foo': 'abc'}}}}
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
- scheduler.TaskRunner._sleep(mox.IsA(int)).MultipleTimes()
- mox.Replay(scheduler.TaskRunner._sleep)
-
self.stack = parser.Stack(self.ctx, 'update_test_stack',
template.Template(tmpl),
disable_rollback=False)
tmpl = {'Resources': {'AResource': {'Type': 'ResourceWithPropsType',
'Properties': {'Foo': 'abc'}}}}
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
- scheduler.TaskRunner._sleep(mox.IsA(int)).MultipleTimes()
- mox.Replay(scheduler.TaskRunner._sleep)
-
self.stack = parser.Stack(self.ctx, 'update_test_stack',
template.Template(tmpl),
disable_rollback=False)
def test_update_rollback_add(self):
tmpl = {'Resources': {'AResource': {'Type': 'GenericResourceType'}}}
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
- scheduler.TaskRunner._sleep(mox.IsA(int)).MultipleTimes()
- mox.Replay(scheduler.TaskRunner._sleep)
-
self.stack = parser.Stack(self.ctx, 'update_test_stack',
template.Template(tmpl),
disable_rollback=False)
'AResource': {'Type': 'GenericResourceType'},
'BResource': {'Type': 'GenericResourceType'}}}
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
- scheduler.TaskRunner._sleep(mox.IsA(int)).MultipleTimes()
- mox.Replay(scheduler.TaskRunner._sleep)
-
self.stack = parser.Stack(self.ctx, 'update_test_stack',
template.Template(tmpl),
disable_rollback=False)
self.stack = parser.Stack(self.ctx, 'update_test_stack',
template.Template(tmpl))
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
- scheduler.TaskRunner._sleep(mox.IsA(int)).MultipleTimes()
self.m.ReplayAll()
self.stack.store()
template.Template(tmpl),
disable_rollback=False)
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
- scheduler.TaskRunner._sleep(mox.IsA(int)).MultipleTimes()
self.m.ReplayAll()
self.stack.store()
template.Template(tmpl),
disable_rollback=False)
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
- scheduler.TaskRunner._sleep(mox.IsA(int)).MultipleTimes()
self.m.ReplayAll()
self.stack.store()
'DResource': {'Type': 'GenericResourceType',
'DependsOn': 'BResource'}}}
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
- scheduler.TaskRunner._sleep(mox.IsA(int)).MultipleTimes()
- mox.Replay(scheduler.TaskRunner._sleep)
-
self.stack = parser.Stack(self.ctx, 'depends_test_stack',
template.Template(tmpl))
self.stack.store()
# under the License.
-import mox
from testtools import skipIf
from heat.common import exception
self.m.StubOutWithMock(quantumclient.Client, 'create_network')
self.m.StubOutWithMock(quantumclient.Client, 'delete_network')
self.m.StubOutWithMock(quantumclient.Client, 'show_network')
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
setup_dummy_db()
def create_net(self, t, stack, resource_name):
"tenant_id": "c1210485b2424d48804aad5d39c61b8f",
"id": "fc68ea2c-b60b-4b4f-bd82-94ec81110766"
}})
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
quantumclient.Client.show_network(
'fc68ea2c-b60b-4b4f-bd82-94ec81110766'
self.m.StubOutWithMock(quantumclient.Client, 'remove_interface_router')
self.m.StubOutWithMock(quantumclient.Client, 'add_gateway_router')
self.m.StubOutWithMock(quantumclient.Client, 'remove_gateway_router')
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
setup_dummy_db()
def create_router(self, t, stack, resource_name):
"id": "3e46229d-8fce-4733-819a-b5fe630550f8"
}
})
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
quantumclient.Client.show_router(
'3e46229d-8fce-4733-819a-b5fe630550f8').AndReturn({
"router": {
self.m.StubOutWithMock(quantumclient.Client, 'create_port')
self.m.StubOutWithMock(quantumclient.Client, 'delete_port')
self.m.StubOutWithMock(quantumclient.Client, 'show_port')
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
setup_dummy_db()
def test_floating_ip(self):
"status": "BUILD",
"id": "fc68ea2c-b60b-4b4f-bd82-94ec81110766"
}})
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
quantumclient.Client.show_port(
'fc68ea2c-b60b-4b4f-bd82-94ec81110766'
).AndReturn({'port': {
# under the License.
-import mox
import json
from testtools import skipIf
self.m.StubOutWithMock(self.cinder_fc.volumes, 'delete')
self.m.StubOutWithMock(self.fc.volumes, 'create_server_volume')
self.m.StubOutWithMock(self.fc.volumes, 'delete_server_volume')
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
setup_dummy_db()
def create_volume(self, t, stack, resource_name):
# create script
clients.OpenStackClients.nova().MultipleTimes().AndReturn(self.fc)
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
self.fc.volumes.create_server_volume(
device=u'/dev/vdc',
server_id=u'WikiDatabase',
# create script
clients.OpenStackClients.nova().MultipleTimes().AndReturn(self.fc)
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
self.fc.volumes.create_server_volume(
device=u'/dev/vdc',
server_id=u'WikiDatabase',
'WikiDatabase', 'vol-123').AndRaise(
clients.novaclient.exceptions.NotFound('Not found'))
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
self.fc.volumes.delete_server_volume(
'WikiDatabase', 'vol-123').AndRaise(
clients.novaclient.exceptions.NotFound('Not found'))
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
self.fc.volumes.delete_server_volume(
'WikiDatabase', 'vol-123').AndRaise(
clients.cinderclient.exceptions.NotFound('Not found'))
fv.update(
display_description=vol_name,
display_name=vol_name)
- # sleep will be called since backup will not complete right away
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
self.m.ReplayAll()
fv.update(
display_description=vol_name,
display_name=vol_name)
- # sleep will be called since backup will not complete right away
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
self.m.ReplayAll()
# create script
clients.OpenStackClients.nova().MultipleTimes().AndReturn(self.fc)
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
self.fc.volumes.create_server_volume(
device=u'/dev/vdc',
server_id=u'WikiDatabase',
from testtools import skipIf
-import mox
-
from heat.common import context
from heat.common import exception
from heat.common import template_format
from heat.engine import parser
from heat.engine import resource
-from heat.engine import scheduler
from heat.tests.common import HeatTestCase
from heat.tests import utils
from heat.tests.utils import setup_dummy_db
self.m.StubOutWithMock(
quantumclient.Client, 'delete_security_group_rule')
- def stub_sleep(self):
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
- scheduler.TaskRunner._sleep(mox.IsA(int)).MultipleTimes()
- mox.Replay(scheduler.TaskRunner._sleep)
-
def create_stack(self, template):
t = template_format.parse(template)
stack = self.parse_stack(t)
- self.stub_sleep()
self.assertEqual(None, stack.create())
return stack
# License for the specific language governing permissions and limitations
# under the License.
-import mox
-
import datetime
import time
import json
setup_dummy_db()
self.m.StubOutWithMock(wc.WaitConditionHandle,
'get_status')
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
cfg.CONF.set_default('heat_waitcondition_server_url',
'http://127.0.0.1:8000/v1/waitcondition')
stack.store()
if stub:
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
-
self.m.StubOutWithMock(wc.WaitConditionHandle, 'keystone')
wc.WaitConditionHandle.keystone().MultipleTimes().AndReturn(
self.fc)
def test_post_success_to_handle(self):
self.stack = self.create_stack()
wc.WaitConditionHandle.get_status().AndReturn([])
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
wc.WaitConditionHandle.get_status().AndReturn([])
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
wc.WaitConditionHandle.get_status().AndReturn(['SUCCESS'])
self.m.ReplayAll()
def test_post_failure_to_handle(self):
self.stack = self.create_stack()
wc.WaitConditionHandle.get_status().AndReturn([])
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
wc.WaitConditionHandle.get_status().AndReturn([])
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
wc.WaitConditionHandle.get_status().AndReturn(['FAILURE'])
self.m.ReplayAll()
def test_post_success_to_handle_count(self):
self.stack = self.create_stack(template=test_template_wc_count)
wc.WaitConditionHandle.get_status().AndReturn([])
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
wc.WaitConditionHandle.get_status().AndReturn(['SUCCESS'])
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
wc.WaitConditionHandle.get_status().AndReturn(['SUCCESS', 'SUCCESS'])
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
wc.WaitConditionHandle.get_status().AndReturn(['SUCCESS', 'SUCCESS',
'SUCCESS'])
def test_post_failure_to_handle_count(self):
self.stack = self.create_stack(template=test_template_wc_count)
wc.WaitConditionHandle.get_status().AndReturn([])
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
wc.WaitConditionHandle.get_status().AndReturn(['SUCCESS'])
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
wc.WaitConditionHandle.get_status().AndReturn(['SUCCESS', 'FAILURE'])
self.m.ReplayAll()
scheduler.wallclock().AndReturn(st + 0.001)
scheduler.wallclock().AndReturn(st + 0.1)
wc.WaitConditionHandle.get_status().AndReturn([])
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
scheduler.wallclock().AndReturn(st + 4.1)
wc.WaitConditionHandle.get_status().AndReturn([])
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
scheduler.wallclock().AndReturn(st + 5.1)
self.m.ReplayAll()
with UUIDStub('STACKABCD1234'):
stack.store()
- self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep')
- scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
-
# Stub waitcondition status so all goes CREATE_COMPLETE
self.m.StubOutWithMock(wc.WaitConditionHandle, 'get_status')
wc.WaitConditionHandle.get_status().AndReturn(['SUCCESS'])