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_BaseServerManager.py
Go to the documentation of this file.
1 '''
2 Created on Apr 8, 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 app.BaseServerManager import BaseServerManager
14 from transport.ConnectionBuilderLight import ConnectionBuilderLight
15 from dtm.Constants import EVENT_TYPES as EVENT, LOGGER_NAME
16 import dtm.EventObjects
17 import unittest
18 import transport.Consts
19 import logging
20 import time
21 
22 connectName = "TestBaseServerManagerConn"
23 
24 FORMAT = '%(asctime)s - %(thread)ld - %(threadName)s - %(name)s - %(funcName)s - %(levelname)s - %(message)s'
25 logging.basicConfig(level=logging.DEBUG, format=FORMAT)
26 
27 class TestBaseServerManager(unittest.TestCase):
28 
29  '''
30  def loggerInit(self):
31  logHandler = logging.Handler()
32  logging.setLoggerClass()
33  '''
34 
35  def setUp(self):
36  self.servIndex = 1
40  self.adminServerConnection = self.connectionBuilder.build(transport.Consts.SERVER_CONNECT,
41  BaseServerManager.ADMIN_CONNECT_ENDPOINT)
42  self.baseServerManager = BaseServerManager(conectionLightBuilder=self.connectionBuilder)
43  self.localConnectionServer = self.connectionBuilder.build(transport.Consts.SERVER_CONNECT, connectName)
44  self.baseServerManager.addConnection(connectName, self.localConnectionServer)
47  self.recvEvent = None
48  self.event = None
49  self.reply_event = None
50  self.moduleName = self.baseServerManager.__class__.__name__
51  self.localConnectionClient = self.connectionBuilder.build(transport.Consts.CLIENT_CONNECT, connectName)
52  self.servIndex = self.servIndex + 1
53 
54 
55  def tearDown(self):
56  self.baseServerManager.exit_flag = True
57  self.baseServerManager.join()
58  for connection in self.baseServerManager.connections.values():
59  connection.close()
60  self.adminServerConnection.close()
61  self.localConnectionClient.close()
62  time.sleep(1)
63 
64 
66  self.baseServerManager.configVars["var1"] = 100
67  getConfigVars = dtm.EventObjects.AdminConfigVars("BadClassName")
68  getConfigVars.fields["var1"] = None
69  getConfigVars.fields["var2"] = None
70  event = self.eventBuilder.build(EVENT.ADMIN_GET_CONFIG_VARS, getConfigVars)
71  self.localConnectionClient.send(event)
72  time.sleep(1)
73  self.recvEvent = self.localConnectionClient.recv()
74  self.assertTrue(len(self.recvEvent.eventObj.fields) == 2 , ">>> Bad fields len")
75  self.assertTrue(self.recvEvent.eventObj.fields["var1"] == None, ">>> 1th elem not None")
76  self.assertTrue(self.recvEvent.eventObj.fields["var2"] == None, ">>> 2th elem not None")
77 
78 
80  self.baseServerManager.configVars["var1"] = 100
81  getConfigVars = dtm.EventObjects.AdminConfigVars(self.baseServerManager.__class__.__name__)
82  getConfigVars.fields["var1"] = None
83  getConfigVars.fields["var2"] = None
84  event = self.eventBuilder.build(EVENT.ADMIN_GET_CONFIG_VARS, getConfigVars)
85  self.localConnectionClient.send(event)
86  time.sleep(1)
87  self.recvEvent = self.localConnectionClient.recv()
88  self.assertTrue(len(self.recvEvent.eventObj.fields) == 2 , ">>> Bad fields len")
89  self.assertTrue(self.recvEvent.eventObj.fields["var1"] == 100, ">>> 1th elem not 100")
90  self.assertTrue(self.recvEvent.eventObj.fields["var2"] == None, ">>> 2th elem not None")
91 
92 
94  self.baseServerManager.configVars["var1"] = 100
95  getConfigVars = dtm.EventObjects.AdminConfigVars("BadClassName")
96  getConfigVars.fields["var1"] = 55
97  getConfigVars.fields["var2"] = 66
98  event = self.eventBuilder.build(EVENT.ADMIN_SET_CONFIG_VARS, getConfigVars)
99  self.localConnectionClient.send(event)
100  time.sleep(1)
101  self.recvEvent = self.localConnectionClient.recv()
102  self.assertTrue(len(self.recvEvent.eventObj.fields) == 2 , ">>> Bad fields len")
103  self.assertTrue(self.recvEvent.eventObj.fields["var1"] == 55, ">>> 1th elem not None")
104  self.assertTrue(self.recvEvent.eventObj.fields["var2"] == 66, ">>> 2th elem not None")
105  self.assertTrue(self.baseServerManager.configVars["var1"] == 100, ">>> var1 not change")
106 
107 
108 
110  self.baseServerManager.configVars["var1"] = 100
111  self.baseServerManager.configVars["var2"] = 100
112  getConfigVars = dtm.EventObjects.AdminConfigVars(self.baseServerManager.__class__.__name__)
113  getConfigVars.fields["var1"] = 55
114  getConfigVars.fields["var2"] = "ASSA"
115  getConfigVars.fields["var3"] = "DOOB"
116  event = self.eventBuilder.build(EVENT.ADMIN_SET_CONFIG_VARS, getConfigVars)
117  self.localConnectionClient.send(event)
118  time.sleep(1)
119  self.recvEvent = self.localConnectionClient.recv()
120  self.assertTrue(len(self.recvEvent.eventObj.fields) == 3, ">>> Bad fields len")
121  self.assertTrue(len(self.baseServerManager.configVars) == 3, ">>> Bad baseServerManager fields len")
122  self.assertTrue(self.recvEvent.eventObj.fields["var1"] == 55, ">>> 1th elem not None")
123  self.assertTrue(self.recvEvent.eventObj.fields["var2"] == None, ">>> 2th elem not None")
124  self.assertTrue(self.recvEvent.eventObj.fields["var3"] == "DOOB", ">>> 2th elem not None")
125  self.assertTrue(self.baseServerManager.configVars["var1"] == 55, ">>> var1 not change")
126  self.assertTrue(self.baseServerManager.configVars["var2"] == 100, ">>> var1 not change")
127  self.assertTrue(self.baseServerManager.configVars["var3"] == "DOOB", ">>> var1 not change")
128 
129 
130 if __name__ == "__main__":
131  #import sys;sys.argv = ['', 'Test.testName']
132  unittest.main()
This is app base class for management server connection end-points and parallel transport messages pr...
AdminConfigVars event object, for admin set or get config variables from any of threaded classes or a...
Class hides routines of bulding connection objects.
Definition: join.py:1