Home | History | Annotate | Download | only in Domains
      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)
    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)
    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")
    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)
    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)
    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")
    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