def test_task_manager_stop(self): def _exec(task): return TaskStatus.PENDING def _status(task): greenthread.sleep(0.1) return TaskStatus.PENDING def _result(task): pass manager = ts.TaskManager().start(100) alltasks = {} for i in range(100): res = 'res-%d' % i tasks = [] for i in range(100): task = ts.Task('name', res, _exec, _status, _result) manager.add(task) tasks.append(task) alltasks[res] = tasks greenthread.sleep(2) manager.stop() for res, tasks in alltasks.iteritems(): for task in tasks: self.assertEqual(task.status, TaskStatus.ABORT)
def __init__(self, callbacks): super(VcnsDriver, self).__init__() self.callbacks = callbacks self.vcns_uri = cfg.CONF.vcns.manager_uri self.vcns_user = cfg.CONF.vcns.user self.vcns_passwd = cfg.CONF.vcns.password self.datacenter_moid = cfg.CONF.vcns.datacenter_moid self.deployment_container_id = cfg.CONF.vcns.deployment_container_id self.resource_pool_id = cfg.CONF.vcns.resource_pool_id self.datastore_id = cfg.CONF.vcns.datastore_id self.external_network = cfg.CONF.vcns.external_network interval = cfg.CONF.vcns.task_status_check_interval self.task_manager = tasks.TaskManager(interval) self.task_manager.start() self.vcns = vcns.Vcns(self.vcns_uri, self.vcns_user, self.vcns_passwd)
def _test_task_manager_stop(self, exec_wait=False, result_wait=False, stop_wait=0): def _exec(task): if exec_wait: greenthread.sleep(0.01) return TaskStatus.PENDING def _status(task): greenthread.sleep(0.01) return TaskStatus.PENDING def _result(task): if result_wait: greenthread.sleep(0) pass manager = ts.TaskManager().start(100) manager.stop() # Task manager should not leave running threads around # if _thread is None it means it was killed in stop() self.assertIsNone(manager._thread) manager.start(100) alltasks = {} for i in range(100): res = 'res-%d' % i tasks = [] for i in range(100): task = ts.Task('name', res, _exec, _status, _result) manager.add(task) tasks.append(task) alltasks[res] = tasks greenthread.sleep(stop_wait) manager.stop() # Task manager should not leave running threads around # if _thread is None it means it was killed in stop() self.assertIsNone(manager._thread) for res, tasks in alltasks.iteritems(): for task in tasks: self.assertEqual(task.status, TaskStatus.ABORT)
def test_task_pending_task(self): def _exec(task): task.userdata['executing'] = True while not task.userdata['tested']: greenthread.sleep(0) task.userdata['executing'] = False return TaskStatus.COMPLETED userdata = {'executing': False, 'tested': False} manager = ts.TaskManager().start(100) task = ts.Task('name', 'res', _exec, userdata=userdata) manager.add(task) while not userdata['executing']: greenthread.sleep(0) self.assertTrue(manager.has_pending_task()) userdata['tested'] = True while userdata['executing']: greenthread.sleep(0) self.assertFalse(manager.has_pending_task())
def setUp(self): super(VcnsDriverTaskManagerTestCase, self).setUp() self.manager = ts.TaskManager() self.manager.start(100)