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 os 54 import commands 55 import unittest 56 from Util.PfwUnitTestLib import PfwTestCase 57 from Util import ACTLogging 58 log=ACTLogging.Logger() 59 60 # Test of type UINT16 - range [0, 1000] 61 class TestCases(PfwTestCase): 62 def setUp(self): 63 self.block_name = "/Test/Test/TEST_TYPES/BLOCK_PARAMETER" 64 65 self.param_name = [] 66 self.filesystem_name = [] 67 68 #UINT8_0, size = 8 69 self.param_name.append(self.block_name+"/BLOCK_UINT8") 70 self.filesystem_name.append(os.environ["PFW_RESULT"] + "/BLOCK_UINT8") 71 #UINT16_1, size = 16 72 self.param_name.append(self.block_name+"/BLOCK_UINT16") 73 self.filesystem_name.append(os.environ["PFW_RESULT"] + "/BLOCK_UINT16") 74 #UINT32_2, size = 32 75 self.param_name.append(self.block_name+"/BLOCK_UINT32") 76 self.filesystem_name.append(os.environ["PFW_RESULT"] + "/BLOCK_UINT32") 77 78 self.pfw.sendCmd("setTuningMode", "on") 79 80 def tearDown(self): 81 self.pfw.sendCmd("setTuningMode", "off") 82 83 84 @unittest.expectedFailure 85 def test_Nominal_Case(self): 86 """ 87 Testing BLOCK_PARAMETER in nominal case 88 --------------------------------------- 89 Test case description : 90 ~~~~~~~~~~~~~~~~~~~~~~~ 91 - set UINT parameters in nominal case : 92 - UINT8 = 5 93 - UINT16 = 5 94 - UINT32 = 5 95 Tested commands : 96 ~~~~~~~~~~~~~~~~~ 97 - [setParameter] function 98 Used commands : 99 ~~~~~~~~~~~~~~~ 100 - [getParameter] function 101 Expected result : 102 ~~~~~~~~~~~~~~~~~ 103 - Parameters set to nominal value 104 - FILESYSTEM parameters set to nominal value 105 """ 106 log.D(self.test_Nominal_Case.__doc__) 107 108 value_param = ["5", "5", "5"] 109 filesystem_value = ["0x5", "0x5", "0x5"] 110 111 for index_param in range(len(self.param_name)) : 112 log.I("set parameter %s to %s" 113 %(self.param_name[index_param],value_param[index_param])) 114 out,err = self.pfw.sendCmd("setParameter",self.param_name[index_param],value_param[index_param]) 115 assert err == None, log.E("setParameter %s %s : %s" 116 % (self.param_name[index_param],value_param[index_param], err)) 117 assert out == "Done", log.F("setParameter %s %s" 118 %(self.param_name[index_param],value_param[index_param])) 119 log.I("Check parameter %s value" 120 %(self.param_name[index_param])) 121 out,err = self.pfw.sendCmd("getParameter",self.param_name[index_param]) 122 assert err == None, log.E("getParameter %s : %s" 123 % (self.block_name, err)) 124 assert out == value_param[index_param], log.F("getParameter %s - Expected : %s Found : %s" 125 %(self.param_name[index_param],value_param[index_param], out)) 126 log.I("Check filesystem value") 127 assert (open(self.filesystem_name[index_param]).read()[:-1] 128 == filesystem_value[index_param]), log.F("FILESYSTEM : parameter update error for %s after setting %s " 129 %(self.block_name, self.param_name[index_param])) 130 131 132 def test_Set_Block_Directly_Case(self): 133 """ 134 Testing error BLOCK_PARAMETER : set block value directly 135 -------------------------------------------------------- 136 Test case description : 137 ~~~~~~~~~~~~~~~~~~~~~~~ 138 - set Param block directly without setting parameters : 139 - BLOCK_PARAMETER = Dec : 1000000 Hexa : 0xF4240 140 Tested commands : 141 ~~~~~~~~~~~~~~~~~ 142 - [setParameter] function 143 Used commands : 144 ~~~~~~~~~~~~~~~ 145 - [getParameter] function 146 Expected result : 147 ~~~~~~~~~~~~~~~~~ 148 - Unable to set directly a parameter block 149 - FILESYSTEM parameters set to nominal value 150 """ 151 log.D(self.test_Set_Block_Directly_Case.__doc__) 152 153 value = "1000000" 154 155 log.I("Load the initial value of parameters") 156 init_value_param = [] 157 init_filesystem_value = [] 158 159 for index_param in range(len(self.param_name)): 160 out,err = self.pfw.sendCmd("getParameter",self.param_name[index_param]) 161 init_value_param.append(out) 162 init_filesystem_value.append(open(self.filesystem_name[index_param]).read()[:-1]) 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, expectSuccess=False) 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, expectSuccess=False) 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 (open(self.filesystem_name[index_param]).read()[:-1] 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(open(self.filesystem_name[index_param]).read()[:-1]) 224 225 log.I("set parameter %s to %s, failed expected" 226 %(self.param_name[1],param_value)) 227 out,err = self.pfw.sendCmd("setParameter",self.param_name[1],param_value, expectSuccess=False) 228 assert err == None, log.E("setParameter %s %s : %s" 229 % (self.param_name[1],param_value, err)) 230 assert out != "Done", log.F("Error not detected when setting parameter %s to out of bound value %s" 231 % (self.param_name[1],param_value)) 232 log.I("Check parameter value") 233 for index_param in range(len(self.param_name)): 234 out,err = self.pfw.sendCmd("getParameter",self.param_name[index_param]) 235 assert out == init_value_param[index_param], log.F("BLACKBOARD: Forbidden change value for %s - Expected : %s Found : %s" 236 %(self.param_name[index_param],init_value_param[index_param],out)) 237 log.I("Check filesystem value") 238 assert (open(self.filesystem_name[index_param]).read()[:-1] 239 == init_filesystem_value[index_param]), log.F("FILESYSTEM : parameter update error for %s" 240 %(self.block_name)) 241 242 def test_Undefined_Param_Case(self): 243 """ 244 Testing error BLOCK_PARAMETER : Out of range TestCase 245 ----------------------------------------------------- 246 Test case description : 247 ~~~~~~~~~~~~~~~~~~~~~~~ 248 - set parameter PARAM_UNDEF to 1 249 - check block parameter Filesystem value 250 Tested commands : 251 ~~~~~~~~~~~~~~~~~ 252 - [setParameter] function 253 Used commands : 254 ~~~~~~~~~~~~~~~ 255 - [getParameter] function 256 Expected result : 257 ~~~~~~~~~~~~~~~~~ 258 - Error detected when setting PARAM_UNDEF 259 - FILESYSTEM parameters set to nominal value 260 """ 261 log.D(self.test_Undefined_Param_Case.__doc__) 262 263 param_value = "1" 264 param_undefined_name = self.block_name + "/PARAM_UNDEF" 265 266 log.I("Load the initial value of parameters") 267 init_value_param=[] 268 init_filesystem_value=[] 269 270 for index_param in range(len(self.param_name)) : 271 out,err = self.pfw.sendCmd("getParameter",self.param_name[index_param]) 272 init_value_param.append(out) 273 init_filesystem_value.append(open(self.filesystem_name[index_param]).read()[:-1]) 274 275 log.I("set parameter %s to %s, failed expected" 276 %(param_undefined_name,param_value)) 277 out,err = self.pfw.sendCmd("setParameter",param_undefined_name,param_value, expectSuccess=False) 278 assert err == None, log.E("setParameter %s %s : %s" 279 % (param_undefined_name,param_value, err)) 280 assert out != "Done", log.F("Error not detected when setting parameter %s to out of bound value %s" 281 % (param_undefined_name,param_value)) 282 log.I("Check parameter value") 283 for index_param in range(len(self.param_name)): 284 out,err = self.pfw.sendCmd("getParameter",self.param_name[index_param]) 285 assert out == init_value_param[index_param], log.F("BLACKBOARD: Forbidden change value for %s - Expected : %s Found : %s" 286 %(self.param_name[index_param],init_value_param[index_param],out)) 287 log.I("Check filesystem value") 288 assert (open(self.filesystem_name[index_param]).read()[:-1] 289 == init_filesystem_value[index_param]), log.F("FILESYSTEM : parameter update error for %s" 290 %(self.block_name)) 291