2 Created on Mar 11, 2014 7 from mock
import MagicMock, call, ANY
17 from dtm.EventObjects import NewTask, UpdateTaskFields, UpdateTask, DeleteTask, EEResponseData
18 from dtm.EventObjects import FetchTasksResultsFromCache, GetTasksStatus, GetTaskManagerFields, DeleteTaskData
29 FORMAT =
'%(asctime)s - %(thread)ld - %(threadName)s - %(name)s - %(funcName)s - %(levelname)s - %(message)s' 30 logging.basicConfig(level=logging.DEBUG, format=FORMAT)
48 files = first.eventObj.files
49 first.eventObj.files =
None 51 if first.eventObj.__dict__ == second.eventObj.__dict__
and first.eventType == second.eventType:
53 first.eventObj.files = files
58 return first.eventType == second.eventType
and first.eventObj.id == second.eventObj.id
65 self.
config = ConfigParser.RawConfigParser()
66 cfg_section =
"TasksManager" 68 tf = tempfile.NamedTemporaryFile()
69 sql_name =
"sqlite:///" + os.path.basename(tf.name) +
".db" 71 self.
config.add_section(cfg_section)
72 self.
config.set(cfg_section, TasksManager.SERVER,
"TasksManager")
73 self.
config.set(cfg_section, TasksManager.TASKS_DATA_MANAGER_CLIENT,
"TasksDataManager")
74 self.
config.set(cfg_section, TasksManager.SCHEDULER_CLIENT,
"Scheduler")
75 self.
config.set(cfg_section,
"db_name", sql_name)
78 self.
adminServerFake = connectionBuilderLight.build(tr_consts.SERVER_CONNECT, BaseServerManager.ADMIN_CONNECT_ENDPOINT)
110 resBackTaskLogScheme = self.
tasksManager.dbi.fetch(lookBackTaskLogScheme,
"id=%s" % task.id)[0]
111 resTaskLog = resBackTaskLogScheme._getTaskLog()
114 if task.id == resTaskLog.id:
119 if task.__dict__ == resTaskLog.__dict__:
129 match_event =
Matcher(matchShedulerNewEvents, newTaskEvent)
133 self.assertEqual(len(self.
tasksManager.tasksQueue), 0,
"task is in tasksQueue")
134 self.assertEqual(len(self.
tasksManager.pendingTasks), 1,
"")
145 generalResponseEvent.uid = newTaskEvent.uid
149 match_event =
Matcher(matchShedulerNewEvents, newTaskEvent)
153 self.assertEqual(len(self.
tasksManager.tasksQueue), 1,
"task isnot in tasksQueue")
154 self.assertEqual(len(self.
tasksManager.pendingTasks), 1,
"")
155 self.assertTrue(self.
check_task_in_dbi(taskLog,
False),
"insertion in dbi is broken")
161 event = self.
eventBuilder.build(EVENT_TYPES.FETCH_AVAILABLE_TASK_IDS, req)
162 event.connect_identity =
"333" 171 event.connect_name = TasksManager.SERVER
174 self.assertEqual(args[0][0].eventObj.ids, [
"1",
"2",
"3"])
179 newTaskEvent.connect_name =
"server" 184 generalResponseEvent.uid = newTaskEvent.uid
192 self.assertEqual(len(self.
tasksManager.tasksQueue), 0,
"task is in tasksQueue")
193 self.assertEqual(len(self.
tasksManager.pendingTasks), 0,
"")
202 newTaskEvent.connect_name =
"server" 206 generalResponseEvent.uid = newTaskEvent.uid
219 deleteEvent = self.
eventBuilder.build(EVENT_TYPES.DELETE_TASK_DATA, deleteTaskData)
221 match_event =
Matcher(matchDeleteTasksEvent, deleteEvent)
225 self.assertEqual(len(self.
tasksManager.tasksQueue), 0,
"task is in tasksQueue")
226 self.assertEqual(len(self.
tasksManager.pendingTasks), 0,
"")
234 newTaskEvent.connect_name =
"server" 238 generalResponseEvent.uid = newTaskEvent.uid
239 self.
tasksManager.onTasksManagerGeneralResponse(generalResponseEvent)
243 generalResponseErrEvent = self.
eventBuilder.build(EVENT_TYPES.SCHEDULE_TASK_RESPONSE, generalResponseErr)
244 generalResponseErrEvent.uid = newTaskEvent.uid
251 self.assertEqual(len(self.
tasksManager.tasksQueue), 0,
"task is in tasksQueue")
252 self.assertEqual(len(self.
tasksManager.pendingTasks), 0,
"")
259 newTaskEvent.connect_name =
"server" 263 generalResponseEvent.uid = newTaskEvent.uid
264 self.
tasksManager.onTasksManagerGeneralResponse(generalResponseEvent)
274 self.assertEqual(len(self.
tasksManager.tasksQueue), 1,
"task is in tasksQueue")
275 self.assertEqual(len(self.
tasksManager.pendingTasks), 0,
"")
277 self.assertTrue(self.
check_task_in_dbi(taskLog,
False),
"insertion in dbi is broken")
288 match_event =
Matcher(matchShedulerNewEvents, updateTaskEvent)
291 self.assertEqual(len(self.
tasksManager.tasksQueue), 1,
"task isnt in tasksQueue")
305 self.assertEqual(self.
scheduler_mock.send.call_count, 0,
"event send to scheduler")
322 match_event =
Matcher(matchDeleteTasksEvent, sendTaskEvent)
326 self.assertEqual(len(self.
tasksManager.tasksQueue), 1,
"task is in tasksQueue")
354 match_event =
Matcher(matchDeleteTasksEvent, deleteTaskEvent)
373 self.assertEqual(len(self.
tasksManager.fetchEvents), 1,
"")
384 self.assertEqual(len(self.
tasksManager.fetchEvents), 0,
"")
391 getTasksStatusEvent = self.
eventBuilder.build(EVENT_TYPES.GET_TASK_STATUS, getTasksStatus)
401 getTaskManagerFieldsEvent = self.
eventBuilder.build(EVENT_TYPES.GET_TASK_FIELDS, getTaskManagerFields)
411 updateTaskFieldsEvent = self.
eventBuilder.build(EVENT_TYPES.UPDATE_TASK_FIELDS, updateTaskFields)
419 event = self.
eventBuilder.build(EVENT_TYPES.FETCH_RESULTS_CACHE,
"")
425 eeResponseDataEvent = self.
eventBuilder.build(EVENT_TYPES.FETCH_TASK_RESULTS_RESPONSE, eeResponseData)
431 self.assertEqual(len(self.
tasksManager.fetchEvents), 0,
"event is still here")
437 eeResponseDataEvent = self.
eventBuilder.build(EVENT_TYPES.FETCH_TASK_RESULTS_RESPONSE, eeResponseData)
443 self.assertEqual(len(self.
tasksManager.fetchEvents), 0,
"event is still here")
455 updateTaskFields.fields[
"state"] = EEResponseData.TASK_STATE_TERMINATED
457 updateTaskEvent = self.
eventBuilder.build(EVENT_TYPES.UPDATE_TASK_FIELDS, updateTaskFields)
463 self.assertEqual(len(self.
tasksManager.tasksQueue), 0,
"task is in tasksQueue")
467 resBackTaskLogScheme = self.
tasksManager.dbi.fetch(lookBackTaskLogScheme,
"id=%s" % self.
taskId)[0]
468 assert resBackTaskLogScheme
is None 471 resTaskLogScheme = self.
tasksManager.dbi.fetch(lookTaskLogScheme,
"id=%s" % self.
taskId)[0]
472 assert resTaskLogScheme
is not None 474 if __name__ ==
'__main__':
UpdateTask event object, for update task field operation.
def test_delete_tasks(self)
UpdateTaskFields event object, for update task fields operation.
def test_update_task_field(self)
def test_fetch_result_response(self)
def test_get_status_request(self)
def test_fetch_result_cache(self)
def test_add_new_task_scheduler_exception(self)
def test_fetch_available_tasks(self)
NewTask event object, defines the Task object fields.
GeneralResponse event object, represents general state response for multipurpose usage.
def matchDeleteTasksEvent(first, second)
def test_add_new_task_dbi_exception(self)
FetchTasksResultsFromCache event object, for fetch task's results data from DTM application.
def test_delete_task_dbi_error(self)
Class describes structures of task item used in TaskManager.
DeleteTaskData event object, to delete task's data in the storage.
DeleteTask event object, to delete task from DTM application and from EE.
connectionBuilderLight_mock
def test_update_task(self)
GetTaskManagerFields event object, for get task fields values operation.
Class hides routines of bulding connection objects.
def __init__(self, compare, some_obj)
def test_delete_task_not_processing_task(self)
fetchTasksResultsFromCache
def check_task_in_dbi(self, task, full_compare=True)
def test_fetch_result_cache_no_task(self)
def test_fetch_result_response_wrong_event_uid(self)
def test_new_task_tasksDataManager_response(self)
def test_new_task_tasksDataManager_response_err(self)
GetTasksStatus event object, for check task status operation.
def matchShedulerNewEvents(first, second)
def test_add_new_task_scheduler_ok(self)
FetchAvailabelTaskIds event object, for fetch available task id.
def test_update_task_not_procssing_task(self)
EEResponseData event object, store task results data, returned from EE.
def test_add_new_task(self)
def test_update_task_field1(self)
def test_get_task_fields(self)