HCE Project Python language Distributed Tasks Manager Application, Distributed Crawler Application and client API bindings.  2.0.0-chaika
Hierarchical Cluster Engine Python language binding
ftest_delete_task_life_cycle.py
Go to the documentation of this file.
1 '''
2 Created on Apr 2, 2014
3 
4 @author: igor
5 '''
6 import time
7 import pprint
8 from dtm.Constants import EVENT_TYPES
9 from dtm.EventObjects import NewTask, CheckTaskState, GetTasksStatus, DeleteTask
10 from dtm.EventObjects import GeneralResponse
11 from transport.ConnectionBuilderLight import ConnectionBuilderLight
12 from transport.Event import EventBuilder
13 import transport.Consts as consts
14 
15 
16 def create_new_task(taskId, command):
17  newTask = NewTask(command, taskId)
18 
19  return newTask
20 
21 
23  return CheckTaskState(taskId, CheckTaskState.TYPE_FULL)
24 
25 
27  return GetTasksStatus([taskId])
28 
29 
30 def create_delete_task(deletedTaskId, taskId, host, port):
31  delTask = DeleteTask(deletedTaskId, taskId)
32  delTask.host = host
33  delTask.port = port
34  return delTask
35 
36 
37 def get_response_event(clientConnection, timeout):
38  if clientConnection.poll(wait_response_timeout) == 0:
39  print "NO EVENT"
40  exit(1)
41  else:
42  return clientConnection.recv()
43 
44 
45 if __name__ == "__main__":
46  taskId = 10
47  wait_response_timeout = 5000
48  addr = "192.168.1.135:5501"
49  connectBuilder = ConnectionBuilderLight()
50  eventBuilder = EventBuilder()
51 
52  client = connectBuilder.build(consts.CLIENT_CONNECT, addr, consts.TCP_TYPE)
53 
54  new_task_event = eventBuilder.build(EVENT_TYPES.NEW_TASK, create_new_task(taskId, "ls -la"))
55  check_task_state_event = eventBuilder.build(EVENT_TYPES.CHECK_TASK_STATE, create_check_task_state(taskId))
56  get_tasks_status_event = eventBuilder.build(EVENT_TYPES.GET_TASK_STATUS, create_get_tasks_status(taskId))
57 
58 
59  client.send(new_task_event)
60 
61  response_event = get_response_event(client, wait_response_timeout)
62  if response_event.eventObj.errorCode != GeneralResponse.ERROR_OK:
63  print "New task is failed"
64  print response_event.eventObj.__dict__
65  exit(1)
66  print "NewTask is OK"
67 
68  client.send(check_task_state_event)
69  response_event = get_response_event(client, wait_response_timeout)
70  print "EERESPONSE"
71  print response_event.eventObj.__dict__
72 
73 
74  client.send(get_tasks_status_event)
75  response_event = get_response_event(client, wait_response_timeout)
76  print "Tasks Status"
77  host = None
78  port = None
79  for taskManagerField in response_event.eventObj:
80  host = taskManagerField.fields["host"]
81  port = taskManagerField.fields["port"]
82  pprint.pprint(taskManagerField.__dict__)
83  #print taskManagerField.__dict__
84 
85 
86  delete_task_event = eventBuilder.build(EVENT_TYPES.DELETE_TASK,
87  create_delete_task(taskId, taskId + 1, host, port))
88  client.send(delete_task_event)
89  response_event = get_response_event(client, wait_response_timeout)
90  if response_event.eventObj.errorCode != GeneralResponse.ERROR_OK:
91  print "Delete task is failed"
92  print response_event.eventObj.__dict__
93  else:
94  print "Delete is OK"
95  print response_event.eventObj.__dict__
96 
97  time.sleep(15)
98 
99 
100  #check status of deleted task
101  get_tasks_status_event1 = eventBuilder.build(EVENT_TYPES.GET_TASK_STATUS, create_get_tasks_status(taskId + 1))
102  client.send(get_tasks_status_event1)
103  response_event = get_response_event(client, wait_response_timeout)
104  for taskManagerField in response_event.eventObj:
105  pprint.pprint(taskManagerField.__dict__)
def create_delete_task(deletedTaskId, taskId, host, port)
NewTask event object, defines the Task object fields.
def get_response_event(clientConnection, timeout)
DeleteTask event object, to delete task from DTM application and from EE.
CheckTaskState event object, for check task status inside EE.
Class hides routines of bulding connection objects.
GetTasksStatus event object, for check task status operation.