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_executeTask_resources_limits.py
Go to the documentation of this file.
1 '''
2 Created on Apr 8, 2014
3 
4 @author: igor
5 '''
6 
7 import time
8 from dtm.Constants import EVENT_TYPES
9 from dtm.EventObjects import NewTask, GetTasksStatus, EEResponseData
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_ASAP(taskId, command, resource_field, resource_value):
17  newTask = NewTask(command, taskId)
18  newTask.session["tmode"] = NewTask.TASK_MODE_ASYNCH
19  newTask.setStrategyVar(resource_field, resource_value)
20 
21  return newTask
22 
23 
25  return GetTasksStatus([taskId])
26 
27 
28 def get_response_event(clientConnection, timeout):
29  if clientConnection.poll(wait_response_timeout) == 0:
30  print "NO EVENT"
31  exit(1)
32  else:
33  return clientConnection.recv()
34 
35 
36 def get_task_state(clientConnection, timeout, taskId):
37  get_tasks_status_event = eventBuilder.build(EVENT_TYPES.GET_TASK_STATUS, create_get_tasks_status(taskId))
38  clientConnection.send(get_tasks_status_event)
39  response_event = get_response_event(clientConnection, timeout)
40  taskManagerFields = response_event.eventObj[0]
41  return taskManagerFields.fields["state"]
42 
43 
44 
45 if __name__ == "__main__":
46  taskId = 20
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_event1 = eventBuilder.build(EVENT_TYPES.NEW_TASK, create_new_task_ASAP(taskId, "ls -la", "CPU", 200))
55  new_task_event2 = eventBuilder.build(EVENT_TYPES.NEW_TASK, create_new_task_ASAP(taskId + 1, "ls -la", "CPU_LOAD_MAX", 20))
56  new_task_event3 = eventBuilder.build(EVENT_TYPES.NEW_TASK, create_new_task_ASAP(taskId + 2, "ls -la", "IO_WAIT_MAX", 50))
57  new_task_event4 = eventBuilder.build(EVENT_TYPES.NEW_TASK, create_new_task_ASAP(taskId + 3, "ls -la", "RAM_FREE", 1048576000 * 2))
58 
59  res_exceed_tasks = [new_task_event1, new_task_event2, new_task_event3, new_task_event4]
60 
61  for task_event in res_exceed_tasks:
62  client.send(task_event)
63 
64  response_event = get_response_event(client, wait_response_timeout)
65  if response_event.eventObj.errorCode != GeneralResponse.ERROR_OK:
66  print "New task is failed"
67  exit(1)
68  print "NewTAsk is OK"
69 
70  time.sleep(20)
71  for curId in xrange(taskId, taskId + 4):
72  assert get_task_state(client, wait_response_timeout, curId) == EEResponseData.TASK_STATE_NEW_SCHEDULED
73  print "Task ", curId, " still TASK_STATE_NEW_SCHEDULED"
74 
75  print "PASSED"
76 
77 
def get_task_state(clientConnection, timeout, taskId)
NewTask event object, defines the Task object fields.
def create_new_task_ASAP(taskId, command, resource_field, resource_value)
Class hides routines of bulding connection objects.
GetTasksStatus event object, for check task status operation.