1 #!/usr/bin/python2 2 # -*-coding:utf-8 -* 3 4 # Copyright (c) 2011-2015, Intel Corporation 5 # All rights reserved. 6 # 7 # Redistribution and use in source and binary forms, with or without modification, 8 # are permitted provided that the following conditions are met: 9 # 10 # 1. Redistributions of source code must retain the above copyright notice, this 11 # list of conditions and the following disclaimer. 12 # 13 # 2. Redistributions in binary form must reproduce the above copyright notice, 14 # this list of conditions and the following disclaimer in the documentation and/or 15 # other materials provided with the distribution. 16 # 17 # 3. Neither the name of the copyright holder nor the names of its contributors 18 # may be used to endorse or promote products derived from this software without 19 # specific prior written permission. 20 # 21 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 22 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 23 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 24 # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 25 # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 26 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 27 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 28 # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 32 33 """ 34 Integer parameter type testcases - UINT16 35 36 List of tested functions : 37 -------------------------- 38 - [setParameter] function 39 - [getParameter] function 40 41 Initial Settings : 42 ------------------ 43 UINT16 : 44 - unsigned 45 - size = 16 46 - range : [0, 1000] 47 48 Test cases : 49 ------------ 50 - UINT16 parameter min value = 0 51 - UINT16 parameter min value out of bounds = -1 52 - UINT16 parameter max value = 1000 53 - UINT16 parameter max value out of bounds = 1001 54 - UINT16 parameter in nominal case = 50 55 """ 56 import os 57 import commands 58 from Util.PfwUnitTestLib import PfwTestCase 59 from Util import ACTLogging 60 log=ACTLogging.Logger() 61 62 63 # Test of type UINT16 - range [0, 1000] 64 class TestCases(PfwTestCase): 65 def setUp(self): 66 self.param_name = "/Test/Test/TEST_DIR/UINT16" 67 self.pfw.sendCmd("setTuningMode", "on") 68 69 def tearDown(self): 70 self.pfw.sendCmd("setTuningMode", "off") 71 72 def test_Nominal_Case(self): 73 """ 74 Testing UINT16 in nominal case = 50 75 ----------------------------------- 76 Test case description : 77 ~~~~~~~~~~~~~~~~~~~~~~~ 78 - set UINT16 parameter in nominal case = 50 79 Tested commands : 80 ~~~~~~~~~~~~~~~~~ 81 - [setParameter] function 82 Used commands : 83 ~~~~~~~~~~~~~~~ 84 - [getParameter] function 85 Expected result : 86 ~~~~~~~~~~~~~~~~~ 87 - UINT16 parameter set to 50 88 - Blackboard and filesystem values checked 89 """ 90 log.D(self.test_Nominal_Case.__doc__) 91 log.I("UINT16 parameter in nominal case = 50") 92 value = "50" 93 hex_value = "0x32" 94 #Set parameter value 95 out, err = self.pfw.sendCmd("setParameter", self.param_name, value) 96 assert err == None, log.E("when setting parameter %s : %s" 97 % (self.param_name, err)) 98 assert out == "Done", log.F("when setting parameter %s : %s" 99 % (self.param_name, out)) 100 #Check parameter value on blackboard 101 out, err = self.pfw.sendCmd("getParameter", self.param_name, "") 102 assert err == None, log.E("when setting parameter %s : %s" 103 % (self.param_name, err)) 104 assert out == value, log.F("BLACKBOARD : Incorrect value for %s, expected: %s, found: %s" 105 % (self.param_name, value, out)) 106 #Check parameter value on filesystem 107 assert open(os.environ["PFW_RESULT"] + "/UINT16").read()[:-1] == hex_value, log.F("FILESYSTEM : parameter update error") 108 log.I("test OK") 109 110 def test_TypeMin(self): 111 """ 112 Testing UINT16 minimal value = 0 113 -------------------------------- 114 Test case description : 115 ~~~~~~~~~~~~~~~~~~~~~~~ 116 - set UINT16 parameter min value = 0 117 Tested commands : 118 ~~~~~~~~~~~~~~~~~ 119 - [setParameter] function 120 Used commands : 121 ~~~~~~~~~~~~~~~ 122 - [getParameter] function 123 Expected result : 124 ~~~~~~~~~~~~~~~~~ 125 - UINT16 parameter set to 0 126 - Blackboard and filesystem values checked 127 """ 128 log.D(self.test_TypeMin.__doc__) 129 log.I("UINT16 parameter min value = 0") 130 value = "0" 131 hex_value = "0x0" 132 #Set parameter value 133 out, err = self.pfw.sendCmd("setParameter", self.param_name, value) 134 assert err == None, log.E("when setting parameter %s : %s" 135 % (self.param_name, err)) 136 assert out == "Done", log.F("when setting parameter %s : %s" 137 % (self.param_name, out)) 138 #Check parameter value on blackboard 139 out, err = self.pfw.sendCmd("getParameter", self.param_name, "") 140 assert err == None, log.E("when setting parameter %s : %s" 141 % (self.param_name, err)) 142 assert out == value, log.F("BLACKBOARD : Incorrect value for %s, expected: %s, found: %s" 143 % (self.param_name, value, out)) 144 #Check parameter value on filesystem 145 assert open(os.environ["PFW_RESULT"] + "/UINT16").read()[:-1] == hex_value, log.F("FILESYSTEM : parameter update error") 146 log.I("test OK") 147 148 def test_TypeMin_Overflow(self): 149 """ 150 Testing UINT16 parameter value out of negative range 151 ---------------------------------------------------- 152 Test case description : 153 ~~~~~~~~~~~~~~~~~~~~~~~ 154 - set UINT16 to -1 155 Tested commands : 156 ~~~~~~~~~~~~~~~~~ 157 - [setParameter] function 158 Used commands : 159 ~~~~~~~~~~~~~~~ 160 - [getParameter] function 161 Expected result : 162 ~~~~~~~~~~~~~~~~~ 163 - error detected 164 - UINT16 parameter not updated 165 - Blackboard and filesystem values checked 166 """ 167 log.D(self.test_TypeMin_Overflow.__doc__) 168 log.I("UINT16 parameter min value out of bounds = -1") 169 value = "-1" 170 param_check = open(os.environ["PFW_RESULT"] + "/UINT16").read()[:-1] 171 #Set parameter value 172 out, err = self.pfw.sendCmd("setParameter", self.param_name, value, expectSuccess=False) 173 assert err == None, log.E("when setting parameter %s : %s" 174 % (self.param_name, err)) 175 assert out != "Done", log.F("PFW : Error not detected when setting parameter %s out of bounds" 176 % (self.param_name)) 177 #Check parameter value on filesystem 178 assert open(os.environ["PFW_RESULT"] + "/UINT16").read()[:-1] == param_check, log.F("FILESYSTEM : Forbiden parameter change") 179 log.I("test OK") 180 181 def test_TypeMax(self): 182 """ 183 Testing UINT16 parameter maximum value 184 -------------------------------------- 185 Test case description : 186 ~~~~~~~~~~~~~~~~~~~~~~~ 187 - set UINT16 to 1000 188 Tested commands : 189 ~~~~~~~~~~~~~~~~~ 190 - [setParameter] function 191 Used commands : 192 ~~~~~~~~~~~~~~~ 193 - [getParameter] function 194 Expected result : 195 ~~~~~~~~~~~~~~~~~ 196 - UINT16 parameter set to 1000 197 - Blackboard and filesystem values checked 198 """ 199 log.D(self.test_TypeMax.__doc__) 200 log.I("UINT16 parameter max value = 1000") 201 value = "1000" 202 hex_value = "0x3e8" 203 #Set parameter value 204 out, err = self.pfw.sendCmd("setParameter", self.param_name, value) 205 assert err == None, log.E("when setting parameter %s : %s" 206 % (self.param_name, err)) 207 assert out == "Done", log.F("when setting parameter %s : %s" 208 % (self.param_name, out)) 209 #Check parameter value on blackboard 210 out, err = self.pfw.sendCmd("getParameter", self.param_name, "") 211 assert err == None, log.E("when setting parameter %s : %s" 212 % (self.param_name, err)) 213 assert out == value, log.F("BLACKBOARD : Incorrect value for %s, expected: %s, found: %s" 214 % (self.param_name, value, out)) 215 #Check parameter value on filesystem 216 assert open(os.environ["PFW_RESULT"] + "/UINT16").read()[:-1] == hex_value, log.F("FILESYSTEM : parameter update error") 217 log.I("test OK") 218 219 def test_TypeMax_Overflow(self): 220 """ 221 Testing UINT16 parameter value out of positive range 222 ---------------------------------------------------- 223 Test case description : 224 ~~~~~~~~~~~~~~~~~~~~~~~ 225 - set UINT16 to 1001 226 Tested commands : 227 ~~~~~~~~~~~~~~~~~ 228 - [setParameter] function 229 Used commands : 230 ~~~~~~~~~~~~~~~ 231 - [getParameter] function 232 Expected result : 233 ~~~~~~~~~~~~~~~~~ 234 - error detected 235 - UINT16 parameter not updated 236 - Blackboard and filesystem values checked 237 """ 238 log.D(self.test_TypeMax_Overflow.__doc__) 239 log.I("UINT16 parameter max value out of bounds = 1001") 240 value = "1001" 241 param_check = open(os.environ["PFW_RESULT"] + "/UINT16").read()[:-1] 242 #Set parameter value 243 out, err = self.pfw.sendCmd("setParameter", self.param_name, value, expectSuccess=False) 244 assert err == None, log.E("when setting parameter %s : %s" 245 % (self.param_name, err)) 246 assert out != "Done", log.F("PFW : Error not detected when setting parameter %s out of bounds" 247 % (self.param_name)) 248 #Check parameter value on filesystem 249 assert open(os.environ["PFW_RESULT"] + "/UINT16").read()[:-1] == param_check, log.F("FILESYSTEM : Forbiden parameter change") 250 log.I("test OK") 251