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_scheduling_TTR.py
Go to the documentation of this file.
1 '''
2 Created on Apr 8, 2014
3 
4 @author: igor
5 '''
6 import time
7 import datetime
8 import pprint
9 from dtm.Constants import EVENT_TYPES
10 from dtm.EventObjects import NewTask, GetTasksStatus, EEResponseData
11 from dtm.EventObjects import GeneralResponse
12 from transport.ConnectionBuilderLight import ConnectionBuilderLight
13 from transport.Event import EventBuilder
14 import transport.Consts as consts
15 
16 
17 def create_new_task(taskId, command, delta_time):
18  newTask = NewTask(command, taskId)
19  newTask.session["tmode"] = NewTask.TASK_MODE_ASYNCH
20 
21  planedTime = time.time() + delta_time
22  rDate = datetime.datetime.fromtimestamp(planedTime)
23  newTask.setSessionVar("DATE", rDate.strftime("%Y-%m-%d %H:%M:%S,%f"))
24 
25  return newTask
26 
27 
29  return GetTasksStatus([taskId])
30 
31 
32 def get_response_event(clientConnection, timeout):
33  if clientConnection.poll(wait_response_timeout) == 0:
34  print "NO EVENT"
35  exit(1)
36  else:
37  return clientConnection.recv()
38 
39 
40 if __name__ == "__main__":
41  taskId = 10
42  #start task delay
43  delta_time = 30
44  wait_response_timeout = 5000
45  addr = "192.168.1.135:5501"
46  connectBuilder = ConnectionBuilderLight()
47  eventBuilder = EventBuilder()
48 
49  client = connectBuilder.build(consts.CLIENT_CONNECT, addr, consts.TCP_TYPE)
50 
51  new_task_event = eventBuilder.build(EVENT_TYPES.NEW_TASK, create_new_task(taskId, "ls -la", delta_time))
52  get_tasks_status_event = eventBuilder.build(EVENT_TYPES.GET_TASK_STATUS, create_get_tasks_status(taskId))
53 
54 
55  client.send(new_task_event)
56 
57  response_event = get_response_event(client, wait_response_timeout)
58  if response_event.eventObj.errorCode != GeneralResponse.ERROR_OK:
59  print "New task is failed"
60  print response_event.eventObj.__dict__
61  exit(1)
62  print "NewTask is OK"
63 
64 
65  client.send(get_tasks_status_event)
66  response_event = get_response_event(client, wait_response_timeout)
67  taskManagerFields = response_event.eventObj[0]
68 
69  assert taskManagerFields.fields["state"] == EEResponseData.TASK_STATE_NEW_SCHEDULED
70  print "still TASK_STATE_NEW_SCHEDULED"
71 
72  time.sleep(delta_time - 5)
73  #steel planed
74 
75  client.send(get_tasks_status_event)
76  response_event = get_response_event(client, wait_response_timeout)
77  taskManagerFields = response_event.eventObj[0]
78 
79  assert taskManagerFields.fields["state"] == EEResponseData.TASK_STATE_NEW_SCHEDULED
80  print "still TASK_STATE_NEW_SCHEDULED"
81 
82  time.sleep(10)
83 
84  client.send(get_tasks_status_event)
85  response_event = get_response_event(client, wait_response_timeout)
86  taskManagerFields = response_event.eventObj[0]
87 
88  assert taskManagerFields.fields["state"] != EEResponseData.TASK_STATE_NEW_SCHEDULED
89 
90  print "PASSED"
NewTask event object, defines the Task object fields.
def get_response_event(clientConnection, timeout)
Class hides routines of bulding connection objects.
GetTasksStatus event object, for check task status operation.
def create_new_task(taskId, command, delta_time)