comparison src/test/test_memory.py @ 1050:de415d7984f7

memory (params), test: fixes bug relative to parameter filtering
author souliane <souliane@mailoo.org>
date Tue, 03 Jun 2014 15:10:51 +0200
parents b3f383ab39da
children 854880a31717
comparison
equal deleted inserted replaced
1049:9e24ca275ddd 1050:de415d7984f7
31 31
32 def setUp(self): 32 def setUp(self):
33 self.host = helpers.FakeSAT() 33 self.host = helpers.FakeSAT()
34 34
35 def _getParamXML(self, param="1", security_level=None): 35 def _getParamXML(self, param="1", security_level=None):
36 """Generate XML for testing parameters
37
38 @param param (str): parameter "1", "2" or "both"
39 @param security_level: security level of the parameters
40 @return (str)
41 """
36 def getParam(name): 42 def getParam(name):
37 return """ 43 return """
38 <param name="%(param_name)s" label="%(param_label)s" value="true" type="bool" %(security)s/> 44 <param name="%(param_name)s" label="%(param_label)s" value="true" type="bool" %(security)s/>
39 """ % {'param_name': name, 45 """ % {'param_name': name,
40 'param_label': _(name), 46 'param_label': _(name),
59 'category_label': _(Const.COMPOSITION_KEY), 65 'category_label': _(Const.COMPOSITION_KEY),
60 'params': params 66 'params': params
61 } 67 }
62 68
63 def _paramExists(self, param="1", src=None): 69 def _paramExists(self, param="1", src=None):
64 """@return: True is the param (category, name) exists""" 70 """
71
72 @param param (str): parameter "1" or "2"
73 @param src (DOM element): the top-level element to look in
74 @return: True is the param exists
75 """
65 if param == "1": 76 if param == "1":
66 name = Const.ENABLE_UNIBOX_PARAM 77 name = Const.ENABLE_UNIBOX_PARAM
67 else: 78 else:
68 name = Const.PARAM_IN_QUOTES 79 name = Const.PARAM_IN_QUOTES
69 category = Const.COMPOSITION_KEY 80 category = Const.COMPOSITION_KEY
82 if param.nodeName == "param" and param.getAttribute("name") == name: 93 if param.nodeName == "param" and param.getAttribute("name") == name:
83 return True 94 return True
84 return False 95 return False
85 96
86 def assertParam_generic(self, param="1", src=None, exists=True, deferred=False): 97 def assertParam_generic(self, param="1", src=None, exists=True, deferred=False):
98 """
99 @param param (str): parameter "1" or "2"
100 @param src (DOM element): the top-level element to look in
101 @param exists (boolean): True to assert the param exists, False to assert it doesn't
102 @param deferred (boolean): True if this method is called from a Deferred callback
103 """
87 msg = "Expected parameter not found!\n" if exists else "Unexpected parameter found!\n" 104 msg = "Expected parameter not found!\n" if exists else "Unexpected parameter found!\n"
88 if deferred == False: 105 if deferred:
89 # in this stack we can see the line where the error came from, 106 # in this stack we can see the line where the error came from,
90 # if limit=5, 6 is not enough you can increase the value 107 # if limit=5, 6 is not enough you can increase the value
91 msg += "\n".join(traceback.format_stack(limit=5 if exists else 6)) 108 msg += "\n".join(traceback.format_stack(limit=5 if exists else 6))
92 assertion = self._paramExists(param, src) 109 assertion = self._paramExists(param, src)
93 getattr(self, "assert%s" % exists)(assertion, msg) 110 getattr(self, "assert%s" % exists)(assertion, msg)
105 def assertParamNotExists_async(self, src, param="1"): 122 def assertParamNotExists_async(self, src, param="1"):
106 """@param src: a deferred result from Memory.getParams""" 123 """@param src: a deferred result from Memory.getParams"""
107 self.assertParam_generic(param, minidom.parseString(src.encode("utf-8")), False, True) 124 self.assertParam_generic(param, minidom.parseString(src.encode("utf-8")), False, True)
108 125
109 def _getParams(self, security_limit, app='', profile_key='@NONE@'): 126 def _getParams(self, security_limit, app='', profile_key='@NONE@'):
127 """Get the parameters accessible with the given security limit and application name.
128
129 @param security_limit (int): the security limit
130 @param app (str): empty string or "libervia"
131 @param profile_key
132 """
110 if profile_key == '@NONE@': 133 if profile_key == '@NONE@':
111 profile_key = '@DEFAULT@' 134 profile_key = '@DEFAULT@'
112 return self.host.memory.getParams(security_limit, app, profile_key) 135 return self.host.memory.getParams(security_limit, app, profile_key)
113 136
114 def test_updateParams(self): 137 def test_updateParams(self):
163 params = self._getParamXML(security_level=1) 186 params = self._getParamXML(security_level=1)
164 self.host.memory.init() 187 self.host.memory.init()
165 self.host.memory.updateParams(params) 188 self.host.memory.updateParams(params)
166 self._getParams(Const.NO_SECURITY_LIMIT).addCallback(self.assertParamExists_async) 189 self._getParams(Const.NO_SECURITY_LIMIT).addCallback(self.assertParamExists_async)
167 self._getParams(0).addCallback(self.assertParamNotExists_async) 190 self._getParams(0).addCallback(self.assertParamNotExists_async)
168 self._getParams(1).addCallback(self.assertParamExists_async) 191 return self._getParams(1).addCallback(self.assertParamExists_async)
169 192
170 def test_paramsRegisterApp(self): 193 def test_paramsRegisterApp(self):
171 194
172 def register(*args): 195 def register(xml, security_limit, app):
196 """
197 @param xml: XML definition of the parameters to be added
198 @param security_limit: -1 means no security, 0 is the maximum security then the higher the less secure
199 @param app: name of the frontend registering the parameters
200 """
173 logger = getLogger() 201 logger = getLogger()
174 level = logger.getEffectiveLevel() 202 level = logger.getEffectiveLevel()
175 logger.setLevel(INFO) 203 logger.setLevel(INFO)
176 self.host.memory.paramsRegisterApp(*args) 204 self.host.memory.paramsRegisterApp(xml, security_limit, app)
177 logger.setLevel(level) 205 logger.setLevel(level)
178 206
179 # tests with no security level on the parameter (most secure) 207 # tests with no security level on the parameter (most secure)
180 params = self._getParamXML() 208 params = self._getParamXML()
181 self.host.memory.init() 209 self.host.memory.init()
209 register(params, 0, Const.APP_NAME) 237 register(params, 0, Const.APP_NAME)
210 self.assertParamNotExists() 238 self.assertParamNotExists()
211 self.host.memory.init() 239 self.host.memory.init()
212 register(params, 1, Const.APP_NAME) 240 register(params, 1, Const.APP_NAME)
213 self.assertParamExists() 241 self.assertParamExists()
242
243 # tests with security level 1 and several parameters being registered
244 params = self._getParamXML("both", security_level=1)
245 self.host.memory.init()
246 register(params, Const.NO_SECURITY_LIMIT, Const.APP_NAME)
247 self.assertParamExists()
248 self.assertParamExists("2")
249 self.host.memory.init()
250 register(params, 0, Const.APP_NAME)
251 self.assertParamNotExists()
252 self.assertParamNotExists("2")
253 self.host.memory.init()
254 register(params, 1, Const.APP_NAME)
255 self.assertParamExists()
256 self.assertParamExists("2")
214 257
215 def test_paramsRegisterApp_getParams(self): 258 def test_paramsRegisterApp_getParams(self):
216 # test retrieving the parameter for a specific frontend 259 # test retrieving the parameter for a specific frontend
217 self.host.memory.init() 260 self.host.memory.init()
218 params = self._getParamXML(security_level=1) 261 params = self._getParamXML(security_level=1)
219 self.host.memory.paramsRegisterApp(params, 1, Const.APP_NAME) 262 self.host.memory.paramsRegisterApp(params, 1, Const.APP_NAME)
220 self._getParams(1, '').addCallback(self.assertParamExists_async) 263 self._getParams(1, '').addCallback(self.assertParamExists_async)
221 self._getParams(1, Const.APP_NAME).addCallback(self.assertParamExists_async) 264 self._getParams(1, Const.APP_NAME).addCallback(self.assertParamExists_async)
222 self._getParams(1, 'another_dummy_frontend').addCallback(self.assertParamNotExists_async) 265 self._getParams(1, 'another_dummy_frontend').addCallback(self.assertParamNotExists_async)
266
267 # the same with several parameters registered at the same time
268 self.host.memory.init()
269 params = self._getParamXML('both', security_level=0)
270 self.host.memory.paramsRegisterApp(params, 5, Const.APP_NAME)
271 self._getParams(5, '').addCallback(self.assertParamExists_async)
272 self._getParams(5, '').addCallback(self.assertParamExists_async, "2")
273 self._getParams(5, Const.APP_NAME).addCallback(self.assertParamExists_async)
274 self._getParams(5, Const.APP_NAME).addCallback(self.assertParamExists_async, "2")
275 self._getParams(5, 'another_dummy_frontend').addCallback(self.assertParamNotExists_async)
276 return self._getParams(5, 'another_dummy_frontend').addCallback(self.assertParamNotExists_async, "2")