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 Integer parameter type testcases - INT32_Max 33 34 List of tested functions : 35 -------------------------- 36 - [setParameter] function 37 - [getParameter] function 38 39 Initial Settings : 40 ------------------ 41 INT32_Max : 42 - size = 16 43 - range : [-2147483648, 2147483647] 44 45 Test cases : 46 ------------ 47 - INT32_Max parameter min value = -2147483648 48 - INT32_Max parameter min value out of bounds = -2147483649 49 - INT32_Max parameter max value = 2147483647 50 - INT32_Max parameter max value out of bounds = 2147483648 51 - INT32_Max parameter in nominal case = 50 52 """ 53 import os 54 import commands 55 from Util.PfwUnitTestLib import PfwTestCase 56 from Util import ACTLogging 57 log=ACTLogging.Logger() 58 59 # Test of type INT32_Max - range [-2147483648, 2147483647] 60 class TestCases(PfwTestCase): 61 def setUp(self): 62 self.param_name = "/Test/Test/TEST_DIR/INT32_Max" 63 self.pfw.sendCmd("setTuningMode", "on") 64 65 def tearDown(self): 66 self.pfw.sendCmd("setTuningMode", "off") 67 68 def test_Nominal_Case(self): 69 """ 70 Testing INT32_Max in nominal case = 50 71 -------------------------------------- 72 Test case description : 73 ~~~~~~~~~~~~~~~~~~~~~~~ 74 - set INT32_Max parameter in nominal case = 50 75 Tested commands : 76 ~~~~~~~~~~~~~~~~~ 77 - [setParameter] function 78 Used commands : 79 ~~~~~~~~~~~~~~~ 80 - [getParameter] function 81 Expected result : 82 ~~~~~~~~~~~~~~~~~ 83 - INT32_Max parameter set to 50 84 - Blackboard and filesystem values checked 85 """ 86 log.D(self.test_Nominal_Case.__doc__) 87 log.I("INT32_Max parameter in nominal case = 50") 88 value = "50" 89 hex_value = "0x32" 90 #Set parameter value 91 out, err = self.pfw.sendCmd("setParameter", self.param_name, value) 92 assert err == None, log.E("when setting parameter %s : %s" 93 % (self.param_name, err)) 94 assert out == "Done", log.F("when setting parameter %s : %s" 95 % (self.param_name, out)) 96 #Check parameter value on blackboard 97 out, err = self.pfw.sendCmd("getParameter", self.param_name, "") 98 assert err == None, log.E("when setting parameter %s : %s" 99 % (self.param_name, err)) 100 assert out == value, log.F("BLACKBOARD : Incorrect value for %s, expected: %s, found: %s" 101 % (self.param_name, value, out)) 102 #Check parameter value on filesystem 103 assert open(os.environ["PFW_RESULT"] + "/INT32_Max").read()[:-1] == hex_value, log.F("FILESYSTEM : parameter update error") 104 log.I("test OK") 105 106 def test_TypeMin(self): 107 """ 108 Testing INT32_Max minimal value = -2147483648 109 --------------------------------------------- 110 Test case description : 111 ~~~~~~~~~~~~~~~~~~~~~~~ 112 - set INT32_Max parameter min value = -2147483648 113 ~~~~~~~~~~~~~~~~~ 114 - [setParameter] function 115 Used commands : 116 ~~~~~~~~~~~~~~~ 117 - [getParameter] function 118 Expected result : 119 ~~~~~~~~~~~~~~~~~ 120 - INT32_Max parameter set to -2147483648 121 - Blackboard and filesystem values checked 122 """ 123 log.D(self.test_TypeMin.__doc__) 124 log.I("INT32_Max parameter min value = -2147483648") 125 value = "-2147483648" 126 hex_value = "0x80000000" 127 #Set parameter value 128 out, err = self.pfw.sendCmd("setParameter", self.param_name, value) 129 assert err == None, log.E("when setting parameter %s : %s" 130 % (self.param_name, err)) 131 assert out == "Done", log.F("when setting parameter %s : %s" 132 % (self.param_name, out)) 133 #Check parameter value on blackboard 134 out, err = self.pfw.sendCmd("getParameter", self.param_name, "") 135 assert err == None, log.E("when setting parameter %s : %s" 136 % (self.param_name, err)) 137 assert out == value, log.F("BLACKBOARD : Incorrect value for %s, expected: %s, found: %s" 138 % (self.param_name, value, out)) 139 #Check parameter value on filesystem 140 assert open(os.environ["PFW_RESULT"] + "/INT32_Max").read()[:-1] == hex_value, log.F("FILESYSTEM : parameter update error") 141 log.I("test OK") 142 143 def test_TypeMin_Overflow(self): 144 """ 145 Testing INT32_Max parameter value out of negative range 146 ------------------------------------------------------- 147 Test case description : 148 ~~~~~~~~~~~~~~~~~~~~~~~ 149 - set INT32_Max to -2147483649 150 Tested commands : 151 ~~~~~~~~~~~~~~~~~ 152 - [setParameter] function 153 Used commands : 154 ~~~~~~~~~~~~~~~ 155 - [getParameter] function 156 Expected result : 157 ~~~~~~~~~~~~~~~~~ 158 - error detected 159 - INT32_Max parameter not updated 160 - Blackboard and filesystem values checked 161 """ 162 log.D(self.test_TypeMin_Overflow.__doc__) 163 log.I("INT32_Max parameter min value out of bounds = -2147483649") 164 value = "-2147483649" 165 param_check = open(os.environ["PFW_RESULT"] + "/INT32_Max").read()[:-1] 166 #Set parameter value 167 out, err = self.pfw.sendCmd("setParameter", self.param_name, value, expectSuccess=False) 168 assert err == None, log.E("when setting parameter %s : %s" 169 % (self.param_name, err)) 170 assert out != "Done", log.F("PFW : Error not detected when setting parameter %s out of bounds" 171 % (self.param_name)) 172 #Check parameter value on filesystem 173 assert open(os.environ["PFW_RESULT"] + "/INT32_Max").read()[:-1] == param_check, log.F("FILESYSTEM : Forbiden parameter change") 174 log.I("test OK") 175 176 def test_TypeMax(self): 177 """ 178 Testing INT32_Max parameter maximum value 179 ----------------------------------------- 180 Test case description : 181 ~~~~~~~~~~~~~~~~~~~~~~~ 182 - set INT32_Max to 2147483647 183 Tested commands : 184 ~~~~~~~~~~~~~~~~~ 185 - [setParameter] function 186 Used commands : 187 ~~~~~~~~~~~~~~~ 188 - [getParameter] function 189 Expected result : 190 ~~~~~~~~~~~~~~~~~ 191 - INT32_Max parameter set to 1000 192 - Blackboard and filesystem values checked 193 """ 194 log.D(self.test_TypeMax.__doc__) 195 log.I("INT32_Max parameter max value = 2147483647") 196 value = "2147483647" 197 hex_value = "0x7fffffff" 198 #Set parameter value 199 out, err = self.pfw.sendCmd("setParameter", self.param_name, value) 200 assert err == None, log.E("when setting parameter %s : %s" 201 % (self.param_name, err)) 202 assert out == "Done", log.F("when setting parameter %s : %s" 203 % (self.param_name, out)) 204 #Check parameter value on blackboard 205 out, err = self.pfw.sendCmd("getParameter", self.param_name, "") 206 assert err == None, log.E("when setting parameter %s : %s" 207 % (self.param_name, err)) 208 assert out == value, log.F("BLACKBOARD : Incorrect value for %s, expected: %s, found: %s" 209 % (self.param_name, value, out)) 210 #Check parameter value on filesystem 211 assert open(os.environ["PFW_RESULT"] + "/INT32_Max").read()[:-1] == hex_value, log.F("FILESYSTEM : parameter update error") 212 log.I("test OK") 213 214 def test_TypeMax_Overflow(self): 215 """ 216 Testing INT32_Max parameter value out of positive range 217 ------------------------------------------------------- 218 Test case description : 219 ~~~~~~~~~~~~~~~~~~~~~~~ 220 - set INT32_Max to 2147483648 221 Tested commands : 222 ~~~~~~~~~~~~~~~~~ 223 - [setParameter] function 224 Used commands : 225 ~~~~~~~~~~~~~~~ 226 - [getParameter] function 227 Expected result : 228 ~~~~~~~~~~~~~~~~~ 229 - error detected 230 - INT32_Max parameter not updated 231 232 """ 233 log.D(self.test_TypeMax_Overflow.__doc__) 234 log.I("INT32_Max parameter max value out of bounds = 2147483648") 235 value = "2147483648" 236 param_check = open(os.environ["PFW_RESULT"] + "/INT32_Max").read()[:-1] 237 #Set parameter value 238 out, err = self.pfw.sendCmd("setParameter", self.param_name, value, expectSuccess=False) 239 assert err == None, log.E("when setting parameter %s : %s" 240 % (self.param_name, err)) 241 assert out != "Done", log.F("PFW : Error not detected when setting parameter %s out of bounds" 242 % (self.param_name)) 243 #Check parameter value on filesystem 244 assert open(os.environ["PFW_RESULT"] + "/INT32_Max").read()[:-1] == param_check, log.F("FILESYSTEM : Forbiden parameter change") 245 log.I("test OK") 246