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 os
     54 import commands
     55 import unittest
     56 from Util.PfwUnitTestLib import PfwTestCase
     57 from Util import ACTLogging
     58 log=ACTLogging.Logger()
     59 
     60 # Test of type UINT16 - range [0, 1000]
     61 class TestCases(PfwTestCase):
     62     def setUp(self):
     63         self.block_name = "/Test/Test/TEST_TYPES/BLOCK_PARAMETER"
     64 
     65         self.param_name = []
     66         self.filesystem_name = []
     67 
     68         #UINT8_0, size = 8
     69         self.param_name.append(self.block_name+"/BLOCK_UINT8")
     70         self.filesystem_name.append(os.environ["PFW_RESULT"] + "/BLOCK_UINT8")
     71         #UINT16_1, size = 16
     72         self.param_name.append(self.block_name+"/BLOCK_UINT16")
     73         self.filesystem_name.append(os.environ["PFW_RESULT"] + "/BLOCK_UINT16")
     74         #UINT32_2, size = 32
     75         self.param_name.append(self.block_name+"/BLOCK_UINT32")
     76         self.filesystem_name.append(os.environ["PFW_RESULT"] + "/BLOCK_UINT32")
     77 
     78         self.pfw.sendCmd("setTuningMode", "on")
     79 
     80     def tearDown(self):
     81         self.pfw.sendCmd("setTuningMode", "off")
     82 
     83 
     84     @unittest.expectedFailure
     85     def test_Nominal_Case(self):
     86         """
     87         Testing BLOCK_PARAMETER in nominal case
     88         ---------------------------------------
     89             Test case description :
     90             ~~~~~~~~~~~~~~~~~~~~~~~
     91                 - set UINT parameters in nominal case :
     92                     - UINT8 = 5
     93                     - UINT16 = 5
     94                     - UINT32 = 5
     95             Tested commands :
     96             ~~~~~~~~~~~~~~~~~
     97                 - [setParameter] function
     98             Used commands :
     99             ~~~~~~~~~~~~~~~
    100                 - [getParameter] function
    101             Expected result :
    102             ~~~~~~~~~~~~~~~~~
    103                 - Parameters set to nominal value
    104                 - FILESYSTEM parameters set to nominal value
    105         """
    106         log.D(self.test_Nominal_Case.__doc__)
    107 
    108         value_param = ["5", "5", "5"]
    109         filesystem_value = ["0x5", "0x5", "0x5"]
    110 
    111         for index_param in range(len(self.param_name)) :
    112             log.I("set parameter %s to %s"
    113                   %(self.param_name[index_param],value_param[index_param]))
    114             out,err = self.pfw.sendCmd("setParameter",self.param_name[index_param],value_param[index_param])
    115             assert err == None, log.E("setParameter %s %s : %s"
    116                                       % (self.param_name[index_param],value_param[index_param], err))
    117             assert out == "Done", log.F("setParameter %s %s"
    118                                         %(self.param_name[index_param],value_param[index_param]))
    119             log.I("Check parameter %s value"
    120                   %(self.param_name[index_param]))
    121             out,err = self.pfw.sendCmd("getParameter",self.param_name[index_param])
    122             assert err == None, log.E("getParameter %s : %s"
    123                                       % (self.block_name, err))
    124             assert out == value_param[index_param], log.F("getParameter %s - Expected : %s Found : %s"
    125                                                           %(self.param_name[index_param],value_param[index_param], out))
    126             log.I("Check filesystem value")
    127             assert (open(self.filesystem_name[index_param]).read()[:-1]
    128                     == filesystem_value[index_param]), log.F("FILESYSTEM : parameter update error for %s after setting %s "
    129                                                              %(self.block_name, self.param_name[index_param]))
    130 
    131 
    132     def test_Set_Block_Directly_Case(self):
    133         """
    134         Testing error BLOCK_PARAMETER : set block value directly
    135         --------------------------------------------------------
    136             Test case description :
    137             ~~~~~~~~~~~~~~~~~~~~~~~
    138                 - set Param block directly without setting parameters :
    139                     - BLOCK_PARAMETER = Dec : 1000000 Hexa : 0xF4240
    140             Tested commands :
    141             ~~~~~~~~~~~~~~~~~
    142                 - [setParameter] function
    143             Used commands :
    144             ~~~~~~~~~~~~~~~
    145                 - [getParameter] function
    146             Expected result :
    147             ~~~~~~~~~~~~~~~~~
    148                 - Unable to set directly a parameter block
    149                 - FILESYSTEM parameters set to nominal value
    150         """
    151         log.D(self.test_Set_Block_Directly_Case.__doc__)
    152 
    153         value = "1000000"
    154 
    155         log.I("Load the initial value of parameters")
    156         init_value_param = []
    157         init_filesystem_value = []
    158 
    159         for index_param in range(len(self.param_name)):
    160             out,err = self.pfw.sendCmd("getParameter",self.param_name[index_param])
    161             init_value_param.append(out)
    162             init_filesystem_value.append(open(self.filesystem_name[index_param]).read()[:-1])
    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, expectSuccess=False)
    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, expectSuccess=False)
    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 (open(self.filesystem_name[index_param]).read()[:-1]
    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(open(self.filesystem_name[index_param]).read()[:-1])
    224 
    225         log.I("set parameter %s to %s, failed expected"
    226               %(self.param_name[1],param_value))
    227         out,err = self.pfw.sendCmd("setParameter",self.param_name[1],param_value, expectSuccess=False)
    228         assert err == None, log.E("setParameter %s %s : %s"
    229                                   % (self.param_name[1],param_value, err))
    230         assert out != "Done", log.F("Error not detected when setting parameter %s to out of bound value %s"
    231                                     % (self.param_name[1],param_value))
    232         log.I("Check parameter value")
    233         for index_param in range(len(self.param_name)):
    234             out,err = self.pfw.sendCmd("getParameter",self.param_name[index_param])
    235             assert out == init_value_param[index_param], log.F("BLACKBOARD: Forbidden change value for %s - Expected : %s Found : %s"
    236                                                              %(self.param_name[index_param],init_value_param[index_param],out))
    237         log.I("Check filesystem value")
    238         assert (open(self.filesystem_name[index_param]).read()[:-1]
    239                 == init_filesystem_value[index_param]), log.F("FILESYSTEM : parameter update error for %s"
    240                                                               %(self.block_name))
    241 
    242     def test_Undefined_Param_Case(self):
    243         """
    244         Testing error BLOCK_PARAMETER : Out of range TestCase
    245         -----------------------------------------------------
    246             Test case description :
    247             ~~~~~~~~~~~~~~~~~~~~~~~
    248                 - set parameter PARAM_UNDEF to 1
    249                 - check block parameter Filesystem value
    250             Tested commands :
    251             ~~~~~~~~~~~~~~~~~
    252                 - [setParameter] function
    253             Used commands :
    254             ~~~~~~~~~~~~~~~
    255                 - [getParameter] function
    256             Expected result :
    257             ~~~~~~~~~~~~~~~~~
    258                 - Error detected when setting PARAM_UNDEF
    259                 - FILESYSTEM parameters set to nominal value
    260         """
    261         log.D(self.test_Undefined_Param_Case.__doc__)
    262 
    263         param_value = "1"
    264         param_undefined_name = self.block_name + "/PARAM_UNDEF"
    265 
    266         log.I("Load the initial value of parameters")
    267         init_value_param=[]
    268         init_filesystem_value=[]
    269 
    270         for index_param in range(len(self.param_name)) :
    271             out,err = self.pfw.sendCmd("getParameter",self.param_name[index_param])
    272             init_value_param.append(out)
    273             init_filesystem_value.append(open(self.filesystem_name[index_param]).read()[:-1])
    274 
    275         log.I("set parameter %s to %s, failed expected"
    276               %(param_undefined_name,param_value))
    277         out,err = self.pfw.sendCmd("setParameter",param_undefined_name,param_value, expectSuccess=False)
    278         assert err == None, log.E("setParameter %s %s : %s"
    279                                   % (param_undefined_name,param_value, err))
    280         assert out != "Done", log.F("Error not detected when setting parameter %s to out of bound value %s"
    281                                     % (param_undefined_name,param_value))
    282         log.I("Check parameter value")
    283         for index_param in range(len(self.param_name)):
    284             out,err = self.pfw.sendCmd("getParameter",self.param_name[index_param])
    285             assert out == init_value_param[index_param], log.F("BLACKBOARD: Forbidden change value for %s - Expected : %s Found : %s"
    286                                                              %(self.param_name[index_param],init_value_param[index_param],out))
    287         log.I("Check filesystem value")
    288         assert (open(self.filesystem_name[index_param]).read()[:-1]
    289                 == init_filesystem_value[index_param]), log.F("FILESYSTEM : parameter update error for %s"
    290                                                               %(self.block_name))
    291