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_TasksDataManager.py
Go to the documentation of this file.
1 '''
2 Created on Mar 10, 2014
3 
4 @package: dtm
5 @author: scorp
6 @link: http://hierarchical-cluster-engine.com/
7 @copyright: Copyright © 2013-2014 IOIX Ukraine
8 @license: http://hierarchical-cluster-engine.com/license/
9 @since: 0.1
10 '''
11 from transport.Event import Event
12 from transport.Event import EventBuilder
13 from dtm.TasksDataManager import TasksDataManager
14 from transport.ConnectionBuilderLight import ConnectionBuilderLight
15 from dtm.Constants import EVENT_TYPES as EVENT
16 from app.BaseServerManager import BaseServerManager
17 import unittest
18 import dtm.EventObjects
19 import ConfigParser
20 import transport.Consts
21 import logging
22 import time
23 
24 logger = logging.getLogger(__name__)
25 
26 
28 class TestTasksDataManager(unittest.TestCase):
29 
30 
31  def setUp(self):
32  self.servIndex = 1
34  self.localConnection = None
35  self.adminServerConnection = self.connectionBuilder.build(transport.Consts.SERVER_CONNECT,
36  BaseServerManager.ADMIN_CONNECT_ENDPOINT)
37  self.config = ConfigParser.ConfigParser()
38  self.config.read("./dtmd.ini")
40  self.taskDataManager.start()
42  self.recvEvent = None
43  self.event = None
44  self.reply_event = None
45  self.moduleName = self.taskDataManager.__class__.__name__
46  self.connectionInit()
47 
48 
49  def connectionInit(self):
50  try:
51  self.localConnection = self.connectionBuilder.build(transport.Consts.CLIENT_CONNECT, \
52  self.config.get(self.moduleName, self.taskDataManager.TASK_DATA_MANAGER_SERV_CONFIG_NAME))
53  self.servIndex = self.servIndex + 1
54  except ConfigParser.NoSectionError:
55  logger.error(">>> TasksDataManager can't read config - Section Error")
56  except ConfigParser.NoOptionError:
57  logger.error(">>> TasksDataManager can't read config - Option Error")
58 
59 
60  def tearDown(self):
61  self.taskDataManager.exit_flag = True
62  self.taskDataManager.join()
63  for connection in self.taskDataManager.connections.values():
64  connection.close()
65  self.adminServerConnection.close()
66  self.localConnection.close()
67  time.sleep(1)
68 
69 
70  def insert(self, taskId):
71  newTask = dtm.EventObjects.NewTask("bash", taskId)
72  event = self.eventBuilder.build(EVENT.NEW_TASK, newTask)
73  self.localConnection.send(event)
74  self.recvEvent = self.localConnection.recv()
75 
76 
77  def testOnNewTask(self):
78  taskId = 335
79  self.insert(taskId)
80  self.assertTrue(self.recvEvent != None, ">>> ret reply_event is None")
81  self.assertTrue(self.recvEvent.eventType == EVENT.NEW_TASK_RESPONSE, ">>> reply_event event.eventType is wrong")
82 
83 
84  def testOnFetchTask(self):
85  taskId = 335
86  self.insert(taskId)
87  taskId = 200
88  fetchTask = dtm.EventObjects.FetchTaskData(taskId)
89  event = self.eventBuilder.build(EVENT.FETCH_TASK_DATA, fetchTask)
90  self.localConnection.send(event)
91  self.recvEvent = self.localConnection.recv()
92  self.assertTrue(self.recvEvent != None, ">>> ret reply_event is None")
93  self.assertTrue(self.recvEvent.eventType == EVENT.FETCH_TASK_DATA_RESPONSE,
94  ">>> reply_event event.eventType is wrong")
95  self.assertTrue(self.recvEvent.eventObj != 1, ">>> reply.eventobject is None")
96  taskId = 335
97  fetchTask = dtm.EventObjects.FetchTaskData(taskId)
98  event = self.eventBuilder.build(EVENT.FETCH_TASK_DATA, fetchTask)
99  self.localConnection.send(event)
100  self.recvEvent = self.localConnection.recv()
101  self.assertTrue(self.recvEvent.eventObj != 1, ">>> reply.eventobject is None")
102 
103 
104  def testOnUpdateTask(self):
105  taskId = 335
106  self.insert(taskId)
107  taskId = 200
108  updateTask = dtm.EventObjects.UpdateTask(taskId)
109  event = self.eventBuilder.build(EVENT.UPDATE_TASK, updateTask)
110  self.localConnection.send(event)
111  self.recvEvent = self.localConnection.recv()
112  self.assertTrue(self.recvEvent != None, ">>> ret reply_event is None")
113 
114 
115  def testOnDeleteTask(self):
116  taskId = 335
117  self.insert(taskId)
118  taskId = 335
119  deleteTask = dtm.EventObjects.UpdateTask(taskId)
120  event = self.eventBuilder.build(EVENT.DELETE_TASK_DATA, deleteTask)
121  self.localConnection.send(event)
122  self.recvEvent = self.localConnection.recv()
123  self.assertTrue(self.recvEvent != None, ">>> ret reply_event is None")
124 
125 
127  taskId = 335
128  insertEEResponse = dtm.EventObjects.EEResponseData(taskId)
129  event = self.eventBuilder.build(EVENT.INSERT_EE_DATA, insertEEResponse)
130  self.localConnection.send(event)
131  self.recvEvent = self.localConnection.recv()
132  self.assertTrue(self.recvEvent != None, ">>> ret reply_event is None")
133 
134 
136  taskId = 335
137  fetchEEResponse = dtm.EventObjects.FetchEEResponseData(taskId)
138  event = self.eventBuilder.build(EVENT.FETCH_EE_DATA, fetchEEResponse)
139  self.localConnection.send(event)
140  self.recvEvent = self.localConnection.recv()
141  self.assertTrue(self.recvEvent != None, ">>> ret reply_event is None")
142  self.assertTrue(self.recvEvent.eventType == EVENT.FETCH_EE_DATA_RESPONSE,
143  ">>> reply_event event.eventType is wrong")
144 
145 
147  taskId = 335
148  deleteEEResponse = dtm.EventObjects.DeleteEEResponseData(taskId)
149  event = self.eventBuilder.build(EVENT.DELETE_EE_DATA, deleteEEResponse)
150  self.localConnection.send(event)
151  self.recvEvent = self.localConnection.recv()
152  self.assertTrue(self.recvEvent != None, ">>> ret reply_event is None")
153  self.assertTrue(self.recvEvent.eventType == EVENT.DELETE_EE_DATA_RESPONSE,
154  ">>> reply_event event.eventType is wrong")
155 
156 
157 if __name__ == "__main__":
158  #import sys;sys.argv = ['', 'Test.testName']
159  unittest.main()
UpdateTask event object, for update task field operation.
NewTask event object, defines the Task object fields.
Class hides routines of bulding connection objects.
FetchEEResponseData event object, to fetch EE response data from the storage.
Class TestTasksDataManager, contains functional tests of TasksDataManager module. ...
DeleteEEResponseData event object, to delete EE response data from the storage.
FetchTaskData event object, to fetch task data from the storage.
Class contents TasksDataManager module implementation.
Definition: join.py:1
EEResponseData event object, store task results data, returned from EE.