1 # -*-coding:utf-8 -* 2 3 # Copyright (c) 2011-2015, Intel Corporation 4 # All rights reserved. 5 # 6 # Redistribution and use in source and binary forms, with or without modification, 7 # are permitted provided that the following conditions are met: 8 # 9 # 1. Redistributions of source code must retain the above copyright notice, this 10 # list of conditions and the following disclaimer. 11 # 12 # 2. Redistributions in binary form must reproduce the above copyright notice, 13 # this list of conditions and the following disclaimer in the documentation and/or 14 # other materials provided with the distribution. 15 # 16 # 3. Neither the name of the copyright holder nor the names of its contributors 17 # may be used to endorse or promote products derived from this software without 18 # specific prior written permission. 19 # 20 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 21 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 22 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 24 # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 25 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 26 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 27 # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 29 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 31 """ 32 Parameter block type testcases. 33 34 List of tested functions : 35 -------------------------- 36 - [setParameter] function 37 - [getParameter] function 38 39 Initial Settings : 40 ------------------ 41 Block component - 3 UINT: 42 - UINT8, size = 8 bits, range : [0, 100] 43 - UINT16, size = 16 bits, range : [0, 1000] 44 - UINT16, size = 32 bits, range : [0, 1000] 45 46 Test cases : 47 ------------ 48 - Testing nominal situation 49 - Testing one-shot setting (setting directly a value for the block) 50 - Testing error : Out of range TestCase 51 - Testing error : Try to set an undefined param 52 """ 53 import commands 54 import unittest 55 from Util.PfwUnitTestLib import PfwTestCase 56 from Util import ACTLogging 57 log=ACTLogging.Logger() 58 59 # Test of type UINT16 - range [0, 1000] 60 class TestCases(PfwTestCase): 61 def setUp(self): 62 self.block_name = "/Test/Test/TEST_TYPES/BLOCK_PARAMETER" 63 64 self.param_name = [] 65 self.filesystem_name = [] 66 67 #UINT8_0, size = 8 68 self.param_name.append(self.block_name+"/UINT8") 69 self.filesystem_name.append("$PFW_RESULT/BLOCK_UINT8") 70 #UINT16_1, size = 16 71 self.param_name.append(self.block_name+"/UINT16") 72 self.filesystem_name.append("$PFW_RESULT/BLOCK_UINT16") 73 #UINT32_2, size = 32 74 self.param_name.append(self.block_name+"/UINT32") 75 self.filesystem_name.append("$PFW_RESULT/BLOCK_UINT32") 76 77 self.pfw.sendCmd("setTuningMode", "on") 78 79 def tearDown(self): 80 self.pfw.sendCmd("setTuningMode", "off") 81 82 83 @unittest.expectedFailure 84 def test_Nominal_Case(self): 85 """ 86 Testing BLOCK_PARAMETER in nominal case 87 --------------------------------------- 88 Test case description : 89 ~~~~~~~~~~~~~~~~~~~~~~~ 90 - set UINT parameters in nominal case : 91 - UINT8 = 5 92 - UINT16 = 5 93 - UINT32 = 5 94 Tested commands : 95 ~~~~~~~~~~~~~~~~~ 96 - [setParameter] function 97 Used commands : 98 ~~~~~~~~~~~~~~~ 99 - [getParameter] function 100 Expected result : 101 ~~~~~~~~~~~~~~~~~ 102 - Parameters set to nominal value 103 - FILESYSTEM parameters set to nominal value 104 """ 105 log.D(self.test_Nominal_Case.__doc__) 106 107 value_param = ["5", "5", "5"] 108 filesystem_value = ["0x5", "0x5", "0x5"] 109 110 for index_param in range(len(self.param_name)) : 111 log.I("set parameter %s to %s" 112 %(self.param_name[index_param],value_param[index_param])) 113 out,err = self.pfw.sendCmd("setParameter",self.param_name[index_param],value_param[index_param]) 114 assert err == None, log.E("setParameter %s %s : %s" 115 % (self.param_name[index_param],value_param[index_param], err)) 116 assert out == "Done", log.F("setParameter %s %s" 117 %(self.param_name[index_param],value_param[index_param])) 118 log.I("Check parameter %s value" 119 %(self.param_name[index_param])) 120 out,err = self.pfw.sendCmd("getParameter",self.param_name[index_param]) 121 assert err == None, log.E("getParameter %s : %s" 122 % (self.block_name, err)) 123 assert out == value_param[index_param], log.F("getParameter %s - Expected : %s Found : %s" 124 %(self.param_name[index_param],value_param[index_param], out)) 125 log.I("Check filesystem value") 126 assert (commands.getoutput("cat %s" % (self.filesystem_name[index_param])) 127 == filesystem_value[index_param]), log.F("FILESYSTEM : parameter update error for %s after setting %s " 128 %(self.block_name, self.param_name[index_param])) 129 130 131 def test_Set_Block_Directly_Case(self): 132 """ 133 Testing error BLOCK_PARAMETER : set block value directly 134 -------------------------------------------------------- 135 Test case description : 136 ~~~~~~~~~~~~~~~~~~~~~~~ 137 - set Param block directly without setting parameters : 138 - BLOCK_PARAMETER = Dec : 1000000 Hexa : 0xF4240 139 Tested commands : 140 ~~~~~~~~~~~~~~~~~ 141 - [setParameter] function 142 Used commands : 143 ~~~~~~~~~~~~~~~ 144 - [getParameter] function 145 Expected result : 146 ~~~~~~~~~~~~~~~~~ 147 - Unable to set directly a parameter block 148 - FILESYSTEM parameters set to nominal value 149 """ 150 log.D(self.test_Set_Block_Directly_Case.__doc__) 151 152 value = "1000000" 153 154 log.I("Load the initial value of parameters") 155 init_value_param = [] 156 init_filesystem_value = [] 157 158 for index_param in range(len(self.param_name)): 159 out,err = self.pfw.sendCmd("getParameter",self.param_name[index_param]) 160 init_value_param.append(out) 161 init_filesystem_value.append(commands.getoutput("cat %s" 162 %(self.filesystem_name[index_param]))) 163 164 log.I("Try to set parameter %s to %s, failed expected" 165 %(self.block_name,value)) 166 out,err = self.pfw.sendCmd("setParameter",self.block_name, value) 167 assert err == None, log.E("setParameter %s %s : %s" 168 % (self.block_name, value, err)) 169 assert out != "Done", log.F("Error not detected when setting directly the block %s" 170 % (self.block_name)) 171 log.I("Try to get parameter %s to %s, failed expected" 172 %(self.block_name,value)) 173 out,err = self.pfw.sendCmd("getParameter",self.block_name, value) 174 assert err == None, log.E("getParameter %s : %s" 175 % (self.block_name, err)) 176 assert out != value, log.F("Error not detected when getting directly the block %s" 177 % (self.block_name)) 178 log.I("Check filesystem value") 179 for index_param in range(len(self.param_name)): 180 assert (commands.getoutput("cat %s"%(self.filesystem_name[index_param])) 181 == init_filesystem_value[index_param]), log.F("FILESYSTEM : parameter update error for %s" 182 %(self.block_name)) 183 184 log.I("Check Param value") 185 for index_param in range(len(self.param_name)): 186 out,err = self.pfw.sendCmd("getParameter",self.param_name[index_param]) 187 assert (out == init_value_param[index_param]), log.F("BLACKBOARD: Forbidden change value for parameter %s - Expected : %s Found : %s" 188 %(self.param_name[index_param],init_value_param[index_param],out)) 189 190 def test_Out_Of_Bound_Param_Value_Case(self): 191 """ 192 Testing error BLOCK_PARAMETER : Out of range TestCase 193 ----------------------------------------------------- 194 Test case description : 195 ~~~~~~~~~~~~~~~~~~~~~~~ 196 - set param UINT16 to 65536 197 - check parameter UINT16 value 198 - check parameter UINT8 value 199 - check parameter UINT32 value 200 - check block Filesystem value 201 Tested commands : 202 ~~~~~~~~~~~~~~~~~ 203 - [setParameter] function 204 Used commands : 205 ~~~~~~~~~~~~~~~ 206 - [getParameter] function 207 Expected result : 208 ~~~~~~~~~~~~~~~~~ 209 - Error detected when setting UINT16_1 to wrong value 210 - FILESYSTEM parameters set to nominal value 211 """ 212 log.D(self.test_Out_Of_Bound_Param_Value_Case.__doc__) 213 214 param_value = "65536" 215 216 log.I("Load the initial value of parameters") 217 init_value_param = [] 218 init_filesystem_value = [] 219 220 for index_param in range(len(self.param_name)): 221 out,err = self.pfw.sendCmd("getParameter",self.param_name[index_param]) 222 init_value_param.append(out) 223 init_filesystem_value.append(commands.getoutput("cat %s" 224 %(self.filesystem_name[index_param]))) 225 226 log.I("set parameter %s to %s, failed expected" 227 %(self.param_name[1],param_value)) 228 out,err = self.pfw.sendCmd("setParameter",self.param_name[1],param_value) 229 assert err == None, log.E("setParameter %s %s : %s" 230 % (self.param_name[1],param_value, err)) 231 assert out != "Done", log.F("Error not detected when setting parameter %s to out of bound value %s" 232 % (self.param_name[1],param_value)) 233 log.I("Check parameter value") 234 for index_param in range(len(self.param_name)): 235 out,err = self.pfw.sendCmd("getParameter",self.param_name[index_param]) 236 assert out == init_value_param[index_param], log.F("BLACKBOARD: Forbidden change value for %s - Expected : %s Found : %s" 237 %(self.param_name[index_param],init_value_param[index_param],out)) 238 log.I("Check filesystem value") 239 assert (commands.getoutput("cat %s"%(self.filesystem_name[index_param])) 240 == init_filesystem_value[index_param]), log.F("FILESYSTEM : parameter update error for %s" 241 %(self.block_name)) 242 243 def test_Undefined_Param_Case(self): 244 """ 245 Testing error BLOCK_PARAMETER : Out of range TestCase 246 ----------------------------------------------------- 247 Test case description : 248 ~~~~~~~~~~~~~~~~~~~~~~~ 249 - set parameter PARAM_UNDEF to 1 250 - check block parameter Filesystem value 251 Tested commands : 252 ~~~~~~~~~~~~~~~~~ 253 - [setParameter] function 254 Used commands : 255 ~~~~~~~~~~~~~~~ 256 - [getParameter] function 257 Expected result : 258 ~~~~~~~~~~~~~~~~~ 259 - Error detected when setting PARAM_UNDEF 260 - FILESYSTEM parameters set to nominal value 261 """ 262 log.D(self.test_Undefined_Param_Case.__doc__) 263 264 param_value = "1" 265 param_undefined_name = self.block_name + "/PARAM_UNDEF" 266 267 log.I("Load the initial value of parameters") 268 init_value_param=[] 269 init_filesystem_value=[] 270 271 for index_param in range(len(self.param_name)) : 272 out,err = self.pfw.sendCmd("getParameter",self.param_name[index_param]) 273 init_value_param.append(out) 274 init_filesystem_value.append(commands.getoutput("cat %s" 275 %(self.filesystem_name[index_param]))) 276 277 log.I("set parameter %s to %s, failed expected" 278 %(param_undefined_name,param_value)) 279 out,err = self.pfw.sendCmd("setParameter",param_undefined_name,param_value) 280 assert err == None, log.E("setParameter %s %s : %s" 281 % (param_undefined_name,param_value, err)) 282 assert out != "Done", log.F("Error not detected when setting parameter %s to out of bound value %s" 283 % (param_undefined_name,param_value)) 284 log.I("Check parameter value") 285 for index_param in range(len(self.param_name)): 286 out,err = self.pfw.sendCmd("getParameter",self.param_name[index_param]) 287 assert out == init_value_param[index_param], log.F("BLACKBOARD: Forbidden change value for %s - Expected : %s Found : %s" 288 %(self.param_name[index_param],init_value_param[index_param],out)) 289 log.I("Check filesystem value") 290 assert (commands.getoutput("cat %s"%(self.filesystem_name[index_param])) 291 == init_filesystem_value[index_param]), log.F("FILESYSTEM : parameter update error for %s" 292 %(self.block_name)) 293