# -*-coding:utf-8 -* # Copyright (c) 2011-2015, Intel Corporation # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, # are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, this # list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation and/or # other materials provided with the distribution. # # 3. Neither the name of the copyright holder nor the names of its contributors # may be used to endorse or promote products derived from this software without # specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ Save and restore configuration testcases List of tested functions : -------------------------- - [saveConfiguration] function - [restoreConfiguration] function Test cases : ------------ - Testing nominal case - Testing saveConfiguration errors - Testing restoreConfiguration errors """ from Util.PfwUnitTestLib import PfwTestCase from Util import ACTLogging log=ACTLogging.Logger() # Test of Domains - save/restore configuration class TestCases(PfwTestCase): def setUp(self): self.pfw.sendCmd("setTuningMode", "on") self.domain_name = "Domain_0" self.conf_1 = "Conf_0" self.conf_2 = "Conf_1" self.param_name = "/Test/Test/TEST_DIR/INT8" def tearDown(self): self.pfw.sendCmd("setTuningMode", "off") def test_Nominal_Case(self): """ Testing nominal case -------------------- Test case description : ~~~~~~~~~~~~~~~~~~~~~~~ - save a configuration - restore a configuration Tested commands : ~~~~~~~~~~~~~~~~~ - [saveConfiguration] function - [restoreConfiguration] function Expected result : ~~~~~~~~~~~~~~~~~ - all operations succeed """ log.D(self.test_Nominal_Case.__doc__) # Saving original parameter value log.I("restoring configuration %s from domain %s" % (self.conf_1, self.domain_name)) out, err = self.pfw.sendCmd("restoreConfiguration", self.domain_name, self.conf_1) assert err == None, "Error when restoring configuration %s from domain %s : %s" % (self.conf_1, self.domain_name, err) assert out == "Done", out out, err = self.pfw.sendCmd("getParameter", self.param_name) assert err == None, "Error when getting parameter %s : %s" % (self.param_name, err) Param_saved_1 = int(out) log.I("saved parameter %s value on %s from domain %s = %s" % (self.param_name, self.conf_1, self.domain_name, Param_saved_1)) # Modifying parameter value log.I("modifying parameter %s value on configuration %s from domain %s" % (self.param_name, self.conf_1, self.domain_name)) out, err = self.pfw.sendCmd("setParameter", self.param_name, str(Param_saved_1+1)) assert err == None, "Error when setting parameter %s : %s" % (self.param_name, err) log.I("new parameter %s value = %s in place of %s" % (self.param_name, str(Param_saved_1+1), Param_saved_1)) # Saving new parameter value log.I("saving configuration %s from domain %s" % (self.conf_1, self.domain_name)) out, err = self.pfw.sendCmd("saveConfiguration", self.domain_name, self.conf_1) assert err == None, "Error when saving configuration %s from domain %s : %s" % (self.conf_1, self.domain_name, err) assert out == "Done", out out, err = self.pfw.sendCmd("getParameter", self.param_name) assert err == None, "Error when getting parameter %s : %s" % (self.param_name, err) Param_saved_1 = int(out) 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)) # Modifying and restoring parameter value log.I("modifying parameter %s value on configuration %s from domain %s" % (self.param_name, self.conf_1, self.domain_name)) out, err = self.pfw.sendCmd("setParameter", self.param_name, str(Param_saved_1+1)) assert err == None, "Error when setting parameter %s : %s" % (self.param_name, err) out, err = self.pfw.sendCmd("getParameter", self.param_name) assert err == None, "Error when getting parameter %s : %s" % (self.param_name, err) Param_saved_2 = int(out) 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)) log.I("restoring configuration %s from domain %s" % (self.conf_1, self.domain_name)) out, err = self.pfw.sendCmd("restoreConfiguration", self.domain_name, self.conf_1) assert err == None, "Error when restoring configuration %s from domain %s : %s" % (self.conf_1, self.domain_name, err) assert out == "Done", out out, err = self.pfw.sendCmd("getParameter", self.param_name) assert err == None, "Error when getting parameter %s : %s" % (self.param_name, err) Param_saved_2 = int(out) assert Param_saved_2 == Param_saved_1, "Error when restoring configuration %s from domain %s" % (self.conf_1, self.domain_name) log.I("saving and restoring configuration works fine") def test_Save_Config_Error(self): """ Testing saveConfiguration error ------------------------------- Test case description : ~~~~~~~~~~~~~~~~~~~~~~~ - save a configuration with a missing argument - save a configuration with a wrong domain name - save a configuration with a wrong configuration name Tested commands : ~~~~~~~~~~~~~~~~~ - [saveConfiguration] function Expected result : ~~~~~~~~~~~~~~~~~ - errors correctly detected """ log.D(self.test_Save_Config_Error.__doc__) # Saving original parameter value and setting a new value to parameter for testing purpose log.I("restoring configuration %s from domain %s" % (self.conf_1, self.domain_name)) out, err = self.pfw.sendCmd("restoreConfiguration", self.domain_name, self.conf_1) assert err == None, "Error when restoring configuration %s from domain %s : %s" % (self.conf_1, self.domain_name, err) assert out == "Done", out out, err = self.pfw.sendCmd("getParameter", self.param_name) assert err == None, "Error when getting parameter %s : %s" % (self.param_name, err) Param_saved_1 = int(out) log.I("saved parameter %s value on %s from domain %s = %s" % (self.param_name, self.conf_1, self.domain_name, Param_saved_1)) log.I("modifying parameter %s value on configuration %s from domain %s" % (self.param_name, self.conf_1, self.domain_name)) out, err = self.pfw.sendCmd("setParameter", self.param_name, str(Param_saved_1+1)) assert err == None, "Error when setting parameter %s : %s" % (self.param_name, err) log.I("new parameter %s value = %s in place of %s" % (self.param_name, str(Param_saved_1+1), Param_saved_1)) # Configuration saving errors log.I("saving configuration error test cases :") log.I("saving configuration with a missing argument") out, err = self.pfw.sendCmd("saveConfiguration", self.domain_name) assert err == None, "ERROR : Error when saving configuration with a missing argument" assert out != "Done", "ERROR : Error not detected when saving configuration with a missing argument" log.I("saving configuration with a wrong domain name") out, err = self.pfw.sendCmd("saveConfiguration", "Wrong_Domain_Name", self.conf_1) assert err == None, "ERROR : Error when saving configuration with a wrong domain name" assert out != "Done", "ERROR : Error not detected when saving configuration with a wrong domain name" log.I("saving configuration with a wrong configuration name") out, err = self.pfw.sendCmd("saveConfiguration", self.domain_name, "Wrong_Configuration_Name") assert err == None, "ERROR : Error when saving configuration with a wrong configuration name" assert out != "Done", "ERROR : Error not detected when saving configuration with a wrong configuration name" log.I("saving configuration error test cases : errors correctly detected") # Checking that no error has affected original configuration save log.I("restoring configuration %s from domain %s" % (self.conf_1, self.domain_name)) out, err = self.pfw.sendCmd("restoreConfiguration", self.domain_name, self.conf_1) assert err == None, "error when restoring configuration %s from domain %s : %s" % (self.conf_1, self.domain_name, err) assert out == "Done", out out, err = self.pfw.sendCmd("getParameter", self.param_name) assert err == None, "error when getting parameter %s : %s" % (self.param_name, err) Param_saved_2 = int(out) 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) log.I("Test passed : saving errors correctly detected, no impact on previously saved configuration") def test_Restore_Config_Error(self): """ Testing restoreConfiguration error ---------------------------------- Test case description : ~~~~~~~~~~~~~~~~~~~~~~~ - restore a configuration with a missing argument - restore a configuration with a wrong domain name - restore a configuration with a wrong configuration name Tested commands : ~~~~~~~~~~~~~~~~~ - [restoreConfiguration] function Expected result : ~~~~~~~~~~~~~~~~~ - errors correctly detected - configuration's parameters not affected by errors """ log.D(self.test_Restore_Config_Error.__doc__) # Saving original parameter value and setting a new value to parameter for testing purpose log.I("restore configuration %s from domain %s" % (self.conf_1, self.domain_name)) out, err = self.pfw.sendCmd("restoreConfiguration", self.domain_name, self.conf_1) assert err == None, "Error when restoring configuration %s from domain %s : %s" % (self.conf_1, self.domain_name, err) assert out == "Done", out out, err = self.pfw.sendCmd("getParameter", self.param_name) assert err == None, "Error when getting parameter %s : %s" % (self.param_name, err) Param_saved_1 = int(out) log.I("saved parameter %s value on %s from domain %s = %s" % (self.param_name, self.conf_1, self.domain_name, Param_saved_1)) log.I("modifying parameter %s value on configuration %s from domain %s" % (self.param_name, self.conf_1, self.domain_name)) out, err = self.pfw.sendCmd("setParameter", self.param_name, str(Param_saved_1+1)) assert err == None, "Error when setting parameter %s : %s" % (self.param_name, err) log.I("new parameter %s value = %s in place of %s" % (self.param_name, str(Param_saved_1+1), Param_saved_1)) out, err = self.pfw.sendCmd("getParameter", self.param_name) assert err == None, "Error when getting parameter %s : %s" % (self.param_name, err) Param_saved_2 = int(out) # Configuration restore errors log.I("restoring configuration error test cases :") log.I("restoring configuration with a missing argument") out, err = self.pfw.sendCmd("restoreConfiguration", self.domain_name) assert err == None, "ERROR : Error when restoring configuration with a missing argument" assert out != "Done", "ERROR : Error not detected when restoring configuration with a missing argument" log.I("restoring configuration with a wrong domain name") out, err = self.pfw.sendCmd("restoreConfiguration", "Wrong_Domain_Name", self.conf_1) assert err == None, "ERROR : Error when restoring configuration with a wrong domain name" assert out != "Done", "ERROR : Error not detected when restoring configuration with a wrong domain name" log.I("restoring configuration with a wrong configuration name") out, err = self.pfw.sendCmd("restoreConfiguration", self.domain_name, "Wrong_Configuration_Name") assert err == None, "ERROR : Error when restoring configuration with a wrong configuration name" assert out != "Done", "ERROR : Error not detected when restoring configuration with a wrong configuration name" log.I("restoring configuration error test cases : errors correctly detected") # Checking that no error has affected configuration's parameter value out, err = self.pfw.sendCmd("getParameter", self.param_name) assert err == None, "error when getting parameter %s : %s" % (self.param_name, err) Param_saved_1 = int(out) 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) log.I("Test passed : restoring errors correctly detected, no impact on previously modified configuration's parameter")