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