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
test_admin_NodeManager.py
Go to the documentation of this file.
1 '''
2 Created on Feb 21, 2014
3 
4 @author: scorp
5 '''
6 
7 
8 import unittest
9 from mock import MagicMock
10 from Node import Node
11 from NodeManager import NodeManager
12 from Command import Command
13 import Constants as CONSTANTS
14 from NodeManagerRequest import NodeManagerRequest
15 
16 from test_admin_Constants import bodyString
17 from test_admin_Constants import requestString
18 from test_admin_Constants import testResponseString1
19 from test_admin_Constants import testResponseString2
20 from test_admin_Constants import testResponseString3
21 from test_admin_Constants import testResponseString4
22 
23 
25  return None
26 
27 
29  return bodyString
30 
31 
32 def makeRequestMock(node, requestBody):
33  return requestString
34 
35 
36 class testNodeManager(unittest.TestCase):
37 
38 
39  def setUp(self):
40  self.nodeManager = NodeManager()
41 
42 
43  def tearDown(self):
44  pass
45 
46 
48  self.assertTrue(self.nodeManager.getErrorCode() == CONSTANTS.ERROR_NO, ">>> wrong Error code")
49  self.assertTrue(len(self.nodeManager.getResponses()) == 0, ">>> response list not empty")
50 
51 
53  responses = []
54  responses.append({CONSTANTS.STRING_NODE_MARKER : None, CONSTANTS.STRING_RESPONSE_MARKER : None})
55  responses.append({CONSTANTS.STRING_NODE_MARKER : None, CONSTANTS.STRING_RESPONSE_MARKER : testResponseString1})
56  responses.append({CONSTANTS.STRING_NODE_MARKER : None, CONSTANTS.STRING_RESPONSE_MARKER : testResponseString2})
57  responses.append({CONSTANTS.STRING_NODE_MARKER : None, CONSTANTS.STRING_RESPONSE_MARKER : testResponseString3})
58  responses.append({CONSTANTS.STRING_NODE_MARKER : None, CONSTANTS.STRING_RESPONSE_MARKER : testResponseString4})
59  self.nodeManager.responses = responses
61  responsesDicts = self.nodeManager.getResponsesDicts()
62  self.assertTrue(len(responsesDicts) == len(responses), ">>> Wrong responsesDicts Len")
63  self.assertTrue(responsesDicts[0] == None, ">>> responsesDicts[0] not None")
64  self.assertTrue(responsesDicts[1] == None, ">>> responsesDicts[1] not None")
65  self.assertTrue(responsesDicts[2] == None, ">>> responsesDicts[2] not None")
66  self.assertTrue(responsesDicts[3][CONSTANTS.RESPONSE_CODE_NAME] == CONSTANTS.ERROR_CODE_ERROR,
67  ">>> responsesDicts[3][CONSTANTS.RESPONSE_CODE_NAME] is wrong")
68  self.assertTrue(len(responsesDicts[3][CONSTANTS.RESPONSE_FIELDS_NAME]) == 1,
69  ">>> responsesDicts[3][CONSTANTS.RESPONSE_FIELDS_NAME] bad len")
70  self.assertTrue(responsesDicts[4][CONSTANTS.RESPONSE_CODE_NAME] == CONSTANTS.ERROR_CODE_OK,
71  ">>> responsesDicts[4][CONSTANTS.RESPONSE_CODE_NAME] is wrong")
72  self.assertTrue(len(responsesDicts[4][CONSTANTS.RESPONSE_FIELDS_NAME]) == 2,
73  ">>> responsesDicts[4][CONSTANTS.RESPONSE_FIELDS_NAME] bad len")
74  self.assertTrue(responsesDicts[4][CONSTANTS.RESPONSE_FIELDS_NAME]["param1"] == "val1",
75  ">>> responsesDicts[4][CONSTANTS.RESPONSE_FIELDS_NAME][\"param1\"] bad value")
76  self.assertTrue(responsesDicts[4][CONSTANTS.RESPONSE_FIELDS_NAME]["param2"] == "val2",
77  ">>> responsesDicts[4][CONSTANTS.RESPONSE_FIELDS_NAME][\"param2\"] bad value")
78 
79 
80  def testExecute1(self):
81  nodes = []
82  commandMock = MagicMock(spec=Command)
83  requestMock = MagicMock(spce=NodeManagerRequest)
84  self.nodeManager.request = requestMock
85  self.nodeManager.execute(commandMock, nodes)
86  self.assertTrue(commandMock.generateBody.called == False, ">>> commandMock.generateBody was call")
87  self.assertTrue(requestMock.makeRequest.called == False, ">>> requestMock.makeRequest was call")
88  responses = self.nodeManager.getResponses()
89  self.assertTrue(len(responses) == 0, ">>> responses list not empty")
90 
91 
92  def testExecute2(self):
93  nodes = []
94  nodes.append(Node())
95  nodes.append(Node())
96  nodes.append(Node())
97  commandMock = MagicMock(spec=Command)
98  commandMock.generateBody.side_effect = generateBodyMock
99  commandList = [commandMock]
100  requestMock = MagicMock(spce=NodeManagerRequest)
101  self.nodeManager.request = requestMock
102  self.nodeManager.execute(commandList, nodes)
103  self.assertTrue(commandMock.generateBody.called, ">>> commandMock.generateBody wasn't call")
104  self.assertTrue(requestMock.makeRequest.called == False, ">>> requestMock.makeRequest was call")
105  responses = self.nodeManager.getResponses()
106  self.assertTrue(len(responses) == 3, ">>> size of responses list not 3")
107  self.assertTrue(responses[0][CONSTANTS.STRING_RESPONSE_MARKER] == None, "1 response not None")
108  self.assertTrue(responses[1][CONSTANTS.STRING_RESPONSE_MARKER] == None, "2 response not None")
109  self.assertTrue(responses[2][CONSTANTS.STRING_RESPONSE_MARKER] == None, "3 response not None")
110 
111 
112  def testExecute3(self):
113  nodes = []
114  nodes.append(Node())
115  nodes.append(Node())
116  nodes.append(Node())
117  commandMock = MagicMock(spec=Command)
118  commandMock.generateBody.side_effect = generateBodyMock2
119  commandList = [commandMock]
120  requestMock = MagicMock(spce=NodeManagerRequest)
121  requestMock.makeRequest.side_effect = makeRequestMock
122  self.nodeManager.request = requestMock
123  self.nodeManager.execute(commandList, nodes)
124  self.assertTrue(commandMock.generateBody.called, ">>> commandMock.generateBody wasn't call")
125  self.assertTrue(requestMock.makeRequest.called, ">>> requestMock.makeRequest was not call")
126  self.assertTrue(requestMock.makeRequest.call_count == 3, ">>> requestMock.makeRequest wrong call count")
127  responses = self.nodeManager.getResponses()
128  self.assertTrue(len(responses) == 3, ">>> size of responses list not 3")
129  self.assertTrue(responses[0][CONSTANTS.STRING_RESPONSE_MARKER] == requestString, "1 response wrong value")
130  self.assertTrue(responses[1][CONSTANTS.STRING_RESPONSE_MARKER] == requestString, "2 response wrong value")
131  self.assertTrue(responses[2][CONSTANTS.STRING_RESPONSE_MARKER] == requestString, "3 response wrong value")
132 
133 
134  def testExecute4(self):
135  nodes = []
136  nodes.append(Node())
137  nodes.append(Node())
138  nodes.append(Node())
139  commandMock = MagicMock(spec=Command)
140  commandMock.generateBody.side_effect = generateBodyMock2
141  commandMock1 = MagicMock(spec=Command)
142  commandMock1.generateBody.side_effect = generateBodyMock2
143  commandList = [commandMock, commandMock1]
144  requestMock = MagicMock(spce=NodeManagerRequest)
145  requestMock.makeRequest.side_effect = makeRequestMock
146  self.nodeManager.request = requestMock
147  self.nodeManager.execute(commandList, nodes)
148  self.assertTrue(commandMock.generateBody.called, ">>> commandMock.generateBody wasn't call")
149  self.assertTrue(commandMock.generateBody.call_count == 3, ">>> commandMock.generateBody wrong call count")
150  self.assertTrue(commandMock1.generateBody.called, ">>> commandMock1.generateBody wasn't call")
151  self.assertTrue(commandMock.generateBody.call_count == 3, ">>> commandMock1.generateBody wrong call count")
152  self.assertTrue(requestMock.makeRequest.called, ">>> requestMock.makeRequest was not call")
153  self.assertTrue(requestMock.makeRequest.call_count == 6, ">>> requestMock.makeRequest wrong call count")
154  responses = self.nodeManager.getResponses()
155  self.assertTrue(len(responses) == 6, ">>> size of responses list not 3")
156  self.assertTrue(responses[0][CONSTANTS.STRING_RESPONSE_MARKER] == requestString, "0 response wrong value")
157  self.assertTrue(responses[1][CONSTANTS.STRING_RESPONSE_MARKER] == requestString, "1 response wrong value")
158  self.assertTrue(responses[2][CONSTANTS.STRING_RESPONSE_MARKER] == requestString, "2 response wrong value")
159  self.assertTrue(responses[3][CONSTANTS.STRING_RESPONSE_MARKER] == requestString, "3 response wrong value")
160  self.assertTrue(responses[4][CONSTANTS.STRING_RESPONSE_MARKER] == requestString, "4 response wrong value")
161  self.assertTrue(responses[5][CONSTANTS.STRING_RESPONSE_MARKER] == requestString, "5 response wrong value")
162 
163 
164 if __name__ == "__main__":
165 # import sys;sys.argv = ['', 'Test.testName']
166  unittest.main()
def execute(self, commands, nodes)
execute method execute incoming commands on nodes, keepts reult in responses and responsesDicts field...
Definition: NodeManager.py:63
def makeRequestMock(node, requestBody)
def responsesParsing(self)
responsesParsing method parses data from self.responses into specific stucture (self.responsesDicts)
Definition: NodeManager.py:40