Home | History | Annotate | Download | only in Types
      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 Parameter block type testcases.
     33 
     34 List of tested functions :
     35 --------------------------
     36     - [setParameter]  function
     37     - [getParameter] function
     38 
     39 Initial Settings :
     40 ------------------
     41     Block component - 3 UINT:
     42         - UINT8, size = 8 bits, range : [0, 100]
     43         - UINT16, size = 16 bits, range : [0, 1000]
     44         - UINT16, size = 32 bits, range : [0, 1000]
     45 
     46 Test cases :
     47 ------------
     48     - Testing nominal situation
     49     - Testing one-shot setting (setting directly a value for the block)
     50     - Testing error : Out of range TestCase
     51     - Testing error : Try to set an undefined param
     52 """
     53 import commands
     54 import unittest
     55 from Util.PfwUnitTestLib import PfwTestCase
     56 from Util import ACTLogging
     57 log=ACTLogging.Logger()
     58 
     59 # Test of type UINT16 - range [0, 1000]
     60 class TestCases(PfwTestCase):
     61     def setUp(self):
     62         self.block_name = "/Test/Test/TEST_TYPES/BLOCK_PARAMETER"
     63 
     64         self.param_name = []
     65         self.filesystem_name = []
     66 
     67         #UINT8_0, size = 8
     68         self.param_name.append(self.block_name+"/UINT8")
     69         self.filesystem_name.append("$PFW_RESULT/BLOCK_UINT8")
     70         #UINT16_1, size = 16
     71         self.param_name.append(self.block_name+"/UINT16")
     72         self.filesystem_name.append("$PFW_RESULT/BLOCK_UINT16")
     73         #UINT32_2, size = 32
     74         self.param_name.append(self.block_name+"/UINT32")
     75         self.filesystem_name.append("$PFW_RESULT/BLOCK_UINT32")
     76 
     77         self.pfw.sendCmd("setTuningMode", "on")
     78 
     79     def tearDown(self):
     80         self.pfw.sendCmd("setTuningMode", "off")
     81 
     82 
     83     @unittest.expectedFailure
     84     def test_Nominal_Case(self):
     85         """
     86         Testing BLOCK_PARAMETER in nominal case
     87         ---------------------------------------
     88             Test case description :
     89             ~~~~~~~~~~~~~~~~~~~~~~~
     90                 - set UINT parameters in nominal case :
     91                     - UINT8 = 5
     92                     - UINT16 = 5
     93                     - UINT32 = 5
     94             Tested commands :
     95             ~~~~~~~~~~~~~~~~~
     96                 - [setParameter] function
     97             Used commands :
     98             ~~~~~~~~~~~~~~~
     99                 - [getParameter] function
    100             Expected result :
    101             ~~~~~~~~~~~~~~~~~
    102                 - Parameters set to nominal value
    103                 - FILESYSTEM parameters set to nominal value
    104         """
    105         log.D(self.test_Nominal_Case.__doc__)
    106 
    107         value_param = ["5", "5", "5"]
    108         filesystem_value = ["0x5", "0x5", "0x5"]
    109 
    110         for index_param in range(len(self.param_name)) :
    111             log.I("set parameter %s to %s"
    112                   %(self.param_name[index_param],value_param[index_param]))
    113             out,err = self.pfw.sendCmd("setParameter",self.param_name[index_param],value_param[index_param])
    114             assert err == None, log.E("setParameter %s %s : %s"
    115                                       % (self.param_name[index_param],value_param[index_param], err))
    116             assert out == "Done", log.F("setParameter %s %s"
    117                                         %(self.param_name[index_param],value_param[index_param]))
    118             log.I("Check parameter %s value"
    119                   %(self.param_name[index_param]))
    120             out,err = self.pfw.sendCmd("getParameter",self.param_name[index_param])
    121             assert err == None, log.E("getParameter %s : %s"
    122                                       % (self.block_name, err))
    123             assert out == value_param[index_param], log.F("getParameter %s - Expected : %s Found : %s"
    124                                                           %(self.param_name[index_param],value_param[index_param], out))
    125             log.I("Check filesystem value")
    126             assert (commands.getoutput("cat %s" % (self.filesystem_name[index_param]))
    127                     == filesystem_value[index_param]), log.F("FILESYSTEM : parameter update error for %s after setting %s "
    128                                                              %(self.block_name, self.param_name[index_param]))
    129 
    130 
    131     def test_Set_Block_Directly_Case(self):
    132         """
    133         Testing error BLOCK_PARAMETER : set block value directly
    134         --------------------------------------------------------
    135             Test case description :
    136             ~~~~~~~~~~~~~~~~~~~~~~~
    137                 - set Param block directly without setting parameters :
    138                     - BLOCK_PARAMETER = Dec : 1000000 Hexa : 0xF4240
    139             Tested commands :
    140             ~~~~~~~~~~~~~~~~~
    141                 - [setParameter] function
    142             Used commands :
    143             ~~~~~~~~~~~~~~~
    144                 - [getParameter] function
    145             Expected result :
    146             ~~~~~~~~~~~~~~~~~
    147                 - Unable to set directly a parameter block
    148                 - FILESYSTEM parameters set to nominal value
    149         """
    150         log.D(self.test_Set_Block_Directly_Case.__doc__)
    151 
    152         value = "1000000"
    153 
    154         log.I("Load the initial value of parameters")
    155         init_value_param = []
    156         init_filesystem_value = []
    157 
    158         for index_param in range(len(self.param_name)):
    159             out,err = self.pfw.sendCmd("getParameter",self.param_name[index_param])
    160             init_value_param.append(out)
    161             init_filesystem_value.append(commands.getoutput("cat %s"
    162                                                             %(self.filesystem_name[index_param])))
    163 
    164         log.I("Try to set parameter %s to %s, failed expected"
    165               %(self.block_name,value))
    166         out,err = self.pfw.sendCmd("setParameter",self.block_name, value)
    167         assert err == None, log.E("setParameter %s %s : %s"
    168                                    % (self.block_name, value, err))
    169         assert out != "Done", log.F("Error not detected when setting directly the block %s"
    170                                     % (self.block_name))
    171         log.I("Try to get parameter %s to %s, failed expected"
    172               %(self.block_name,value))
    173         out,err = self.pfw.sendCmd("getParameter",self.block_name, value)
    174         assert err == None, log.E("getParameter %s : %s"
    175                                   % (self.block_name, err))
    176         assert out != value, log.F("Error not detected when getting directly the block %s"
    177                                    % (self.block_name))
    178         log.I("Check filesystem value")
    179         for index_param in range(len(self.param_name)):
    180             assert (commands.getoutput("cat %s"%(self.filesystem_name[index_param]))
    181                 == init_filesystem_value[index_param]), log.F("FILESYSTEM : parameter update error for %s"
    182                                                             %(self.block_name))
    183 
    184         log.I("Check Param value")
    185         for index_param in range(len(self.param_name)):
    186             out,err = self.pfw.sendCmd("getParameter",self.param_name[index_param])
    187             assert (out == init_value_param[index_param]), log.F("BLACKBOARD: Forbidden change value for parameter %s - Expected : %s Found : %s"
    188                                                                %(self.param_name[index_param],init_value_param[index_param],out))
    189 
    190     def test_Out_Of_Bound_Param_Value_Case(self):
    191         """
    192         Testing error BLOCK_PARAMETER : Out of range TestCase
    193         -----------------------------------------------------
    194             Test case description :
    195             ~~~~~~~~~~~~~~~~~~~~~~~
    196                 - set param UINT16 to 65536
    197                 - check parameter UINT16 value
    198                 - check parameter UINT8 value
    199                 - check parameter UINT32 value
    200                 - check block Filesystem value
    201             Tested commands :
    202             ~~~~~~~~~~~~~~~~~
    203                 - [setParameter] function
    204             Used commands :
    205             ~~~~~~~~~~~~~~~
    206                 - [getParameter] function
    207             Expected result :
    208             ~~~~~~~~~~~~~~~~~
    209                 - Error detected when setting UINT16_1 to wrong value
    210                 - FILESYSTEM parameters set to nominal value
    211         """
    212         log.D(self.test_Out_Of_Bound_Param_Value_Case.__doc__)
    213 
    214         param_value = "65536"
    215 
    216         log.I("Load the initial value of parameters")
    217         init_value_param = []
    218         init_filesystem_value = []
    219 
    220         for index_param in range(len(self.param_name)):
    221             out,err = self.pfw.sendCmd("getParameter",self.param_name[index_param])
    222             init_value_param.append(out)
    223             init_filesystem_value.append(commands.getoutput("cat %s"
    224                                                             %(self.filesystem_name[index_param])))
    225 
    226         log.I("set parameter %s to %s, failed expected"
    227               %(self.param_name[1],param_value))
    228         out,err = self.pfw.sendCmd("setParameter",self.param_name[1],param_value)
    229         assert err == None, log.E("setParameter %s %s : %s"
    230                                   % (self.param_name[1],param_value, err))
    231         assert out != "Done", log.F("Error not detected when setting parameter %s to out of bound value %s"
    232                                     % (self.param_name[1],param_value))
    233         log.I("Check parameter value")
    234         for index_param in range(len(self.param_name)):
    235             out,err = self.pfw.sendCmd("getParameter",self.param_name[index_param])
    236             assert out == init_value_param[index_param], log.F("BLACKBOARD: Forbidden change value for %s - Expected : %s Found : %s"
    237                                                              %(self.param_name[index_param],init_value_param[index_param],out))
    238         log.I("Check filesystem value")
    239         assert (commands.getoutput("cat %s"%(self.filesystem_name[index_param]))
    240                 == init_filesystem_value[index_param]), log.F("FILESYSTEM : parameter update error for %s"
    241                                                               %(self.block_name))
    242 
    243     def test_Undefined_Param_Case(self):
    244         """
    245         Testing error BLOCK_PARAMETER : Out of range TestCase
    246         -----------------------------------------------------
    247             Test case description :
    248             ~~~~~~~~~~~~~~~~~~~~~~~
    249                 - set parameter PARAM_UNDEF to 1
    250                 - check block parameter Filesystem value
    251             Tested commands :
    252             ~~~~~~~~~~~~~~~~~
    253                 - [setParameter] function
    254             Used commands :
    255             ~~~~~~~~~~~~~~~
    256                 - [getParameter] function
    257             Expected result :
    258             ~~~~~~~~~~~~~~~~~
    259                 - Error detected when setting PARAM_UNDEF
    260                 - FILESYSTEM parameters set to nominal value
    261         """
    262         log.D(self.test_Undefined_Param_Case.__doc__)
    263 
    264         param_value = "1"
    265         param_undefined_name = self.block_name + "/PARAM_UNDEF"
    266 
    267         log.I("Load the initial value of parameters")
    268         init_value_param=[]
    269         init_filesystem_value=[]
    270 
    271         for index_param in range(len(self.param_name)) :
    272             out,err = self.pfw.sendCmd("getParameter",self.param_name[index_param])
    273             init_value_param.append(out)
    274             init_filesystem_value.append(commands.getoutput("cat %s"
    275                                                             %(self.filesystem_name[index_param])))
    276 
    277         log.I("set parameter %s to %s, failed expected"
    278               %(param_undefined_name,param_value))
    279         out,err = self.pfw.sendCmd("setParameter",param_undefined_name,param_value)
    280         assert err == None, log.E("setParameter %s %s : %s"
    281                                   % (param_undefined_name,param_value, err))
    282         assert out != "Done", log.F("Error not detected when setting parameter %s to out of bound value %s"
    283                                     % (param_undefined_name,param_value))
    284         log.I("Check parameter value")
    285         for index_param in range(len(self.param_name)):
    286             out,err = self.pfw.sendCmd("getParameter",self.param_name[index_param])
    287             assert out == init_value_param[index_param], log.F("BLACKBOARD: Forbidden change value for %s - Expected : %s Found : %s"
    288                                                              %(self.param_name[index_param],init_value_param[index_param],out))
    289         log.I("Check filesystem value")
    290         assert (commands.getoutput("cat %s"%(self.filesystem_name[index_param]))
    291                 == init_filesystem_value[index_param]), log.F("FILESYSTEM : parameter update error for %s"
    292                                                               %(self.block_name))
    293