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 Save and restore configuration testcases 33 34 List of tested functions : 35 -------------------------- 36 - [saveConfiguration] function 37 - [restoreConfiguration] function 38 39 Test cases : 40 ------------ 41 - Testing nominal case 42 - Testing saveConfiguration errors 43 - Testing restoreConfiguration errors 44 """ 45 46 from Util.PfwUnitTestLib import PfwTestCase 47 from Util import ACTLogging 48 log=ACTLogging.Logger() 49 50 # Test of Domains - save/restore configuration 51 class TestCases(PfwTestCase): 52 def setUp(self): 53 self.pfw.sendCmd("setTuningMode", "on") 54 self.domain_name = "Domain_0" 55 self.conf_1 = "Conf_0" 56 self.conf_2 = "Conf_1" 57 self.param_name = "/Test/Test/TEST_DIR/INT8" 58 59 def tearDown(self): 60 self.pfw.sendCmd("setTuningMode", "off") 61 62 def test_Nominal_Case(self): 63 """ 64 Testing nominal case 65 -------------------- 66 Test case description : 67 ~~~~~~~~~~~~~~~~~~~~~~~ 68 - save a configuration 69 - restore a configuration 70 Tested commands : 71 ~~~~~~~~~~~~~~~~~ 72 - [saveConfiguration] function 73 - [restoreConfiguration] function 74 Expected result : 75 ~~~~~~~~~~~~~~~~~ 76 - all operations succeed 77 """ 78 log.D(self.test_Nominal_Case.__doc__) 79 80 # Saving original parameter value 81 log.I("restoring configuration %s from domain %s" % (self.conf_1, self.domain_name)) 82 out, err = self.pfw.sendCmd("restoreConfiguration", self.domain_name, self.conf_1) 83 assert err == None, "Error when restoring configuration %s from domain %s : %s" % (self.conf_1, self.domain_name, err) 84 assert out == "Done", out 85 out, err = self.pfw.sendCmd("getParameter", self.param_name) 86 assert err == None, "Error when getting parameter %s : %s" % (self.param_name, err) 87 Param_saved_1 = int(out) 88 log.I("saved parameter %s value on %s from domain %s = %s" % (self.param_name, self.conf_1, self.domain_name, Param_saved_1)) 89 90 # Modifying parameter value 91 log.I("modifying parameter %s value on configuration %s from domain %s" % (self.param_name, self.conf_1, self.domain_name)) 92 out, err = self.pfw.sendCmd("setParameter", self.param_name, str(Param_saved_1+1)) 93 assert err == None, "Error when setting parameter %s : %s" % (self.param_name, err) 94 log.I("new parameter %s value = %s in place of %s" % (self.param_name, str(Param_saved_1+1), Param_saved_1)) 95 96 # Saving new parameter value 97 log.I("saving configuration %s from domain %s" % (self.conf_1, self.domain_name)) 98 out, err = self.pfw.sendCmd("saveConfiguration", self.domain_name, self.conf_1) 99 assert err == None, "Error when saving configuration %s from domain %s : %s" % (self.conf_1, self.domain_name, err) 100 assert out == "Done", out 101 out, err = self.pfw.sendCmd("getParameter", self.param_name) 102 assert err == None, "Error when getting parameter %s : %s" % (self.param_name, err) 103 Param_saved_1 = int(out) 104 log.I("new saved parameter %s value on %s from domain %s = %s" % (self.param_name, self.conf_1, self.domain_name, Param_saved_1)) 105 106 # Modifying and restoring parameter value 107 log.I("modifying parameter %s value on configuration %s from domain %s" % (self.param_name, self.conf_1, self.domain_name)) 108 out, err = self.pfw.sendCmd("setParameter", self.param_name, str(Param_saved_1+1)) 109 assert err == None, "Error when setting parameter %s : %s" % (self.param_name, err) 110 out, err = self.pfw.sendCmd("getParameter", self.param_name) 111 assert err == None, "Error when getting parameter %s : %s" % (self.param_name, err) 112 Param_saved_2 = int(out) 113 log.I("new parameter %s value on %s = %s in place of %s" % (self.param_name, self.conf_1, str(Param_saved_2), Param_saved_1)) 114 log.I("restoring configuration %s from domain %s" % (self.conf_1, self.domain_name)) 115 out, err = self.pfw.sendCmd("restoreConfiguration", self.domain_name, self.conf_1) 116 assert err == None, "Error when restoring configuration %s from domain %s : %s" % (self.conf_1, self.domain_name, err) 117 assert out == "Done", out 118 out, err = self.pfw.sendCmd("getParameter", self.param_name) 119 assert err == None, "Error when getting parameter %s : %s" % (self.param_name, err) 120 Param_saved_2 = int(out) 121 assert Param_saved_2 == Param_saved_1, "Error when restoring configuration %s from domain %s" % (self.conf_1, self.domain_name) 122 log.I("saving and restoring configuration works fine") 123 124 def test_Save_Config_Error(self): 125 """ 126 Testing saveConfiguration error 127 ------------------------------- 128 Test case description : 129 ~~~~~~~~~~~~~~~~~~~~~~~ 130 - save a configuration with a missing argument 131 - save a configuration with a wrong domain name 132 - save a configuration with a wrong configuration name 133 Tested commands : 134 ~~~~~~~~~~~~~~~~~ 135 - [saveConfiguration] function 136 Expected result : 137 ~~~~~~~~~~~~~~~~~ 138 - errors correctly detected 139 """ 140 log.D(self.test_Save_Config_Error.__doc__) 141 # Saving original parameter value and setting a new value to parameter for testing purpose 142 log.I("restoring configuration %s from domain %s" % (self.conf_1, self.domain_name)) 143 out, err = self.pfw.sendCmd("restoreConfiguration", self.domain_name, self.conf_1) 144 assert err == None, "Error when restoring configuration %s from domain %s : %s" % (self.conf_1, self.domain_name, err) 145 assert out == "Done", out 146 out, err = self.pfw.sendCmd("getParameter", self.param_name) 147 assert err == None, "Error when getting parameter %s : %s" % (self.param_name, err) 148 Param_saved_1 = int(out) 149 log.I("saved parameter %s value on %s from domain %s = %s" % (self.param_name, self.conf_1, self.domain_name, Param_saved_1)) 150 log.I("modifying parameter %s value on configuration %s from domain %s" % (self.param_name, self.conf_1, self.domain_name)) 151 out, err = self.pfw.sendCmd("setParameter", self.param_name, str(Param_saved_1+1)) 152 assert err == None, "Error when setting parameter %s : %s" % (self.param_name, err) 153 log.I("new parameter %s value = %s in place of %s" % (self.param_name, str(Param_saved_1+1), Param_saved_1)) 154 155 # Configuration saving errors 156 log.I("saving configuration error test cases :") 157 log.I("saving configuration with a missing argument") 158 out, err = self.pfw.sendCmd("saveConfiguration", self.domain_name, expectSuccess=False) 159 assert err == None, "ERROR : Error when saving configuration with a missing argument" 160 assert out != "Done", "ERROR : Error not detected when saving configuration with a missing argument" 161 log.I("saving configuration with a wrong domain name") 162 out, err = self.pfw.sendCmd("saveConfiguration", "Wrong_Domain_Name", self.conf_1, expectSuccess=False) 163 assert err == None, "ERROR : Error when saving configuration with a wrong domain name" 164 assert out != "Done", "ERROR : Error not detected when saving configuration with a wrong domain name" 165 log.I("saving configuration with a wrong configuration name") 166 out, err = self.pfw.sendCmd("saveConfiguration", self.domain_name, "Wrong_Configuration_Name", expectSuccess=False) 167 assert err == None, "ERROR : Error when saving configuration with a wrong configuration name" 168 assert out != "Done", "ERROR : Error not detected when saving configuration with a wrong configuration name" 169 log.I("saving configuration error test cases : errors correctly detected") 170 171 # Checking that no error has affected original configuration save 172 log.I("restoring configuration %s from domain %s" % (self.conf_1, self.domain_name)) 173 out, err = self.pfw.sendCmd("restoreConfiguration", self.domain_name, self.conf_1) 174 assert err == None, "error when restoring configuration %s from domain %s : %s" % (self.conf_1, self.domain_name, err) 175 assert out == "Done", out 176 out, err = self.pfw.sendCmd("getParameter", self.param_name) 177 assert err == None, "error when getting parameter %s : %s" % (self.param_name, err) 178 Param_saved_2 = int(out) 179 assert Param_saved_2 == Param_saved_1, "error when restoring configuration %s from domain %s, parameter %s affected by configuration saving error" % (self.conf_1, self.domain_name, Param_saved_1) 180 log.I("Test passed : saving errors correctly detected, no impact on previously saved configuration") 181 182 def test_Restore_Config_Error(self): 183 """ 184 Testing restoreConfiguration error 185 ---------------------------------- 186 Test case description : 187 ~~~~~~~~~~~~~~~~~~~~~~~ 188 - restore a configuration with a missing argument 189 - restore a configuration with a wrong domain name 190 - restore a configuration with a wrong configuration name 191 Tested commands : 192 ~~~~~~~~~~~~~~~~~ 193 - [restoreConfiguration] function 194 Expected result : 195 ~~~~~~~~~~~~~~~~~ 196 - errors correctly detected 197 - configuration's parameters not affected by errors 198 """ 199 200 log.D(self.test_Restore_Config_Error.__doc__) 201 # Saving original parameter value and setting a new value to parameter for testing purpose 202 log.I("restore configuration %s from domain %s" % (self.conf_1, self.domain_name)) 203 out, err = self.pfw.sendCmd("restoreConfiguration", self.domain_name, self.conf_1) 204 assert err == None, "Error when restoring configuration %s from domain %s : %s" % (self.conf_1, self.domain_name, err) 205 assert out == "Done", out 206 out, err = self.pfw.sendCmd("getParameter", self.param_name) 207 assert err == None, "Error when getting parameter %s : %s" % (self.param_name, err) 208 Param_saved_1 = int(out) 209 log.I("saved parameter %s value on %s from domain %s = %s" % (self.param_name, self.conf_1, self.domain_name, Param_saved_1)) 210 log.I("modifying parameter %s value on configuration %s from domain %s" % (self.param_name, self.conf_1, self.domain_name)) 211 out, err = self.pfw.sendCmd("setParameter", self.param_name, str(Param_saved_1+1)) 212 assert err == None, "Error when setting parameter %s : %s" % (self.param_name, err) 213 log.I("new parameter %s value = %s in place of %s" % (self.param_name, str(Param_saved_1+1), Param_saved_1)) 214 out, err = self.pfw.sendCmd("getParameter", self.param_name) 215 assert err == None, "Error when getting parameter %s : %s" % (self.param_name, err) 216 Param_saved_2 = int(out) 217 218 # Configuration restore errors 219 log.I("restoring configuration error test cases :") 220 log.I("restoring configuration with a missing argument") 221 out, err = self.pfw.sendCmd("restoreConfiguration", self.domain_name, expectSuccess=False) 222 assert err == None, "ERROR : Error when restoring configuration with a missing argument" 223 assert out != "Done", "ERROR : Error not detected when restoring configuration with a missing argument" 224 log.I("restoring configuration with a wrong domain name") 225 out, err = self.pfw.sendCmd("restoreConfiguration", "Wrong_Domain_Name", self.conf_1, expectSuccess=False) 226 assert err == None, "ERROR : Error when restoring configuration with a wrong domain name" 227 assert out != "Done", "ERROR : Error not detected when restoring configuration with a wrong domain name" 228 log.I("restoring configuration with a wrong configuration name") 229 out, err = self.pfw.sendCmd("restoreConfiguration", self.domain_name, "Wrong_Configuration_Name", expectSuccess=False) 230 assert err == None, "ERROR : Error when restoring configuration with a wrong configuration name" 231 assert out != "Done", "ERROR : Error not detected when restoring configuration with a wrong configuration name" 232 log.I("restoring configuration error test cases : errors correctly detected") 233 234 # Checking that no error has affected configuration's parameter value 235 out, err = self.pfw.sendCmd("getParameter", self.param_name) 236 assert err == None, "error when getting parameter %s : %s" % (self.param_name, err) 237 Param_saved_1 = int(out) 238 assert Param_saved_2 == Param_saved_1, "error when restoring configuration %s from domain %s, parameter %s affected by configuration restoration error" % (self.conf_1, self.domain_name, Param_saved_1) 239 log.I("Test passed : restoring errors correctly detected, no impact on previously modified configuration's parameter") 240