Home | History | Annotate | Download | only in Functions
      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 synchronization functions testcases
     33 
     34 List of tested functions :
     35 --------------------------
     36     - [getAutoSync]  function
     37     - [setAutoSync]  function
     38     - [sync]  function
     39 
     40 Test cases :
     41 ------------
     42     - Testing getAutoSync nominal case
     43     - Testing setAutoSync nominal case
     44     - Testing sync nominal case
     45     - Testing errors
     46 """
     47 import os
     48 import unittest
     49 from Util.PfwUnitTestLib import PfwTestCase
     50 from Util import ACTLogging
     51 log=ACTLogging.Logger()
     52 
     53 class TestCases(PfwTestCase):
     54 
     55     def setUp(self):
     56 
     57         pfw_filesystem=os.environ["PFW_RESULT"]
     58 
     59         self.pfw.sendCmd("setTuningMode", "on")
     60         self.param_name_01 = "/Test/Test/TEST_DIR/BOOL"
     61         self.filesystem_01 = pfw_filesystem+"/BOOL"
     62         self.param_name_02 = "/Test/Test/TEST_DIR/INT16"
     63         self.filesystem_02 = pfw_filesystem+"/INT16"
     64         self.param_name_03 = "/Test/Test/TEST_DIR/UINT32"
     65         self.filesystem_03 = pfw_filesystem+"/UINT32"
     66 
     67     def tearDown(self):
     68         self.pfw.sendCmd("setTuningMode", "off")
     69 
     70     def test_01_getAutoSync_Case(self):
     71         """
     72         Testing getAutoSync nominal case
     73         ----------------------------
     74             Test case description :
     75             ~~~~~~~~~~~~~~~~~~~~~~~
     76                 - enable autosync
     77                 - get autosync state
     78                 - disable autosync
     79                 - get autosync state
     80             Tested commands :
     81             ~~~~~~~~~~~~~~~~~
     82                 - [setAutoSync] function
     83                 - [getAutoSync] function
     84             Expected result :
     85             ~~~~~~~~~~~~~~~~~
     86                 - getAutoSync return expected state
     87         """
     88         log.D(self.test_01_getAutoSync_Case.__doc__)
     89         value = "on"
     90         log.I("Enable autosync")
     91         out,err = self.pfw.sendCmd("setAutoSync", value)
     92         assert err == None, log.E("When enabling autosync : %s" % (err))
     93         assert out == "Done", log.F("setAutoSync - expected : Done , found : %s" % (out))
     94         log.I("Check autosync state")
     95         out, err = self.pfw.sendCmd("getAutoSync","")
     96         assert err == None, log.E("When getting autosync state : %s" % (err))
     97         assert out == value, log.F("setAutoSync - expected : %s , found : %s" % (value,out))
     98         value = "off"
     99         log.I("Disable autosync")
    100         out,err = self.pfw.sendCmd("setAutoSync", value)
    101         assert err == None, log.E("When enabling autosync : %s" % (err))
    102         assert out == "Done", log.F("setAutoSync - expected : Done , found : %s" % (out))
    103         log.I("Check autosync state")
    104         out, err = self.pfw.sendCmd("getAutoSync","")
    105         assert err == None, log.E("When getting autosync state : %s" % (err))
    106         assert out == value, log.F("setAutoSync - expected : %s , found : %s" % (value,out))
    107 
    108     def test_02_setAutoSync_Case(self):
    109         """
    110         Testing getAutoSync nominal case
    111         -------------------------------------------------
    112             Test case description :
    113             ~~~~~~~~~~~~~~~~~~~~~~~
    114                 - enable autosync
    115                 - set differents parameters
    116                 - check the value on the filesystem
    117                 - disable autosync
    118                 - set differents parameters
    119                 - check the value on the filesystem
    120             Tested commands :
    121             ~~~~~~~~~~~~~~~~~
    122                 - [setAutoSync] function
    123             Used commands :
    124             ~~~~~~~~~~~~~~~
    125                 - [getAutoSync] function
    126             Expected result :
    127             ~~~~~~~~~~~~~~~~~
    128                 - When autosync is enabled, the filesystem is automatically
    129                 synchronized with the blackboard.
    130         """
    131         log.D(self.test_02_setAutoSync_Case.__doc__)
    132         #Check the initial parameter value
    133         init_value_01, err = self.pfw.sendCmd("getParameter", self.param_name_01, "")
    134         init_value_02, err = self.pfw.sendCmd("getParameter", self.param_name_02, "")
    135         init_value_03, err = self.pfw.sendCmd("getParameter", self.param_name_03, "")
    136         init_filesystem_01 = open(self.filesystem_01).read()[:-1]
    137         init_filesystem_02 = open(self.filesystem_02).read()[:-1]
    138         init_filesystem_03 = open(self.filesystem_03).read()[:-1]
    139         #Implement a new value
    140         if int(init_value_01)==0 :
    141             new_value_01 = "1"
    142         else :
    143             new_value_01 = "0"
    144         new_value_02 = str(int(init_value_02)+1)
    145         new_value_03 = str(int(init_value_03)+1)
    146         #Enable the autosync
    147         value = "on"
    148         log.I("Enable autosync")
    149         out,err = self.pfw.sendCmd("setAutoSync", value)
    150         assert err == None, log.E("When enabling autosync : %s" % (err))
    151         assert out == "Done", log.F("setAutoSync - expected : Done , found : %s" % (out))
    152         #Set the new parameter value
    153         self.pfw.sendCmd("setParameter", self.param_name_01, new_value_01)
    154         self.pfw.sendCmd("setParameter", self.param_name_02, new_value_02)
    155         self.pfw.sendCmd("setParameter", self.param_name_03, new_value_03)
    156         #Check the filesystem values
    157         #BOOL
    158         assert open(self.filesystem_01).read()[:-1] != init_filesystem_01, log.F("FILESYSTEM : parameter %s update error"%self.param_name_01)
    159         #INT16
    160         assert open(self.filesystem_02).read()[:-1] != init_filesystem_02, log.F("FILESYSTEM : parameter %s update error"%self.param_name_02)
    161         #UINT32
    162         assert open(self.filesystem_03).read()[:-1] != init_filesystem_03, log.F("FILESYSTEM : parameter %s update error"%self.param_name_03)
    163         log.I("test setAutoSync %s : OK"%(value))
    164         #Enable the autosync
    165         value = "off"
    166         log.I("Disable autosync")
    167         out,err = self.pfw.sendCmd("setAutoSync", value)
    168         assert err == None, log.E("When enabling autosync : %s" % (err))
    169         assert out == "Done", log.F("setAutoSync - expected : Done , found : %s" % (out))
    170         #Set the new parameter value
    171         self.pfw.sendCmd("setParameter", self.param_name_01, init_value_01)
    172         self.pfw.sendCmd("setParameter", self.param_name_02, init_value_02)
    173         self.pfw.sendCmd("setParameter", self.param_name_03, init_value_03)
    174         #Check the filesystem values
    175         #BOOL
    176         assert open(self.filesystem_01).read()[:-1] != init_filesystem_01, log.F("FILESYSTEM : parameter %s  is updated, autosync is still enabled"%self.param_name_01)
    177         #INT16
    178         assert open(self.filesystem_02).read()[:-1] != init_filesystem_02, log.F("FILESYSTEM : parameter %s  is updated, autosync is still enabled"%self.param_name_02)
    179         #UINT32
    180         assert open(self.filesystem_03).read()[:-1] != init_filesystem_03, log.F("FILESYSTEM : parameter %s  is updated, autosync is still enabled"%self.param_name_03)
    181         log.I("test setAutoSync %s : OK"%(value))
    182 
    183 
    184     @unittest.expectedFailure
    185     def test_03_Manual_Sync_Case(self):
    186         """
    187         Testing getAutoSync nominal case
    188         -------------------------------------------------
    189             Test case description :
    190             ~~~~~~~~~~~~~~~~~~~~~~~
    191                 - disable autosync
    192                 - set differents parameters
    193                 - check the value on the filesystem
    194                 - sync
    195                 - check the value on the filesystem
    196             Tested commands :
    197             ~~~~~~~~~~~~~~~~~
    198                 - [sync] function
    199             Used commands :
    200             ~~~~~~~~~~~~~~~
    201                 - [setAutoSync] function
    202             Expected result :
    203             ~~~~~~~~~~~~~~~~~
    204                 - sync should synchronized filessystem with blackboard
    205         """
    206         log.D(self.test_03_Manual_Sync_Case.__doc__)
    207         #Check the initial parameter value
    208         init_value_01, err = self.pfw.sendCmd("getParameter", self.param_name_01, "")
    209         init_value_02, err = self.pfw.sendCmd("getParameter", self.param_name_02, "")
    210         init_value_03, err = self.pfw.sendCmd("getParameter", self.param_name_03, "")
    211         init_filesystem_01 = open(self.filesystem_01).read()[:-1]
    212         init_filesystem_02 = open(self.filesystem_02).read()[:-1]
    213         init_filesystem_03 = open(self.filesystem_03).read()[:-1]
    214         #Implement a new value
    215         if int(init_value_01)==0 :
    216             new_value_01 = "1"
    217         else :
    218             new_value_01 = "0"
    219         new_value_02 = str(int(init_value_02)+1)
    220         new_value_03 = str(int(init_value_03)+1)
    221         #Enable the autosync
    222         value = "off"
    223         log.I("Disable autosync")
    224         out,err = self.pfw.sendCmd("setAutoSync", value)
    225         assert err == None, log.E("When enabling autosync : %s" % (err))
    226         assert out == "Done", log.F("setAutoSync - expected : Done , found : %s" % (out))
    227         #Set the new parameter value
    228         self.pfw.sendCmd("setParameter", self.param_name_01, new_value_01)
    229         self.pfw.sendCmd("setParameter", self.param_name_02, new_value_02)
    230         self.pfw.sendCmd("setParameter", self.param_name_03, new_value_03)
    231         #Check the filesystem values, must not changed
    232         #BOOL
    233         assert open(self.filesystem_01).read()[:-1] == init_filesystem_01, log.F("FILESYSTEM : parameter %s update error"%self.param_name_01)
    234         #INT16
    235         assert open(self.filesystem_02).read()[:-1] == init_filesystem_02, log.F("FILESYSTEM : parameter %s update error"%self.param_name_02)
    236         #UINT32
    237         assert open(self.filesystem_03).read()[:-1] == init_filesystem_03, log.F("FILESYSTEM : parameter %s update error"%self.param_name_03)
    238         log.I("test setAutoSync %s : OK"%(value))
    239         log.I("Sync")
    240         out,err = self.pfw.sendCmd("sync", "")
    241         assert err == None, log.E("When syncing : %s" % (err))
    242         assert out == "Done", log.F("Sync - expected : Done , found : %s" % (out))
    243         #Check the filesystem values
    244         #BOOL
    245         assert open(self.filesystem_01).read()[:-1] != init_filesystem_01, log.F("FILESYSTEM : parameter %s  is updated, autosync is still enabled"%self.param_name_01)
    246         #INT16
    247         assert open(self.filesystem_02).read()[:-1] != init_filesystem_02, log.F("FILESYSTEM : parameter %s  is updated, autosync is still enabled"%self.param_name_02)
    248         #UINT32
    249         assert open(self.filesystem_03).read()[:-1] != init_filesystem_03, log.F("FILESYSTEM : parameter %s  is updated, autosync is still enabled"%self.param_name_03)
    250         log.I("test setAutoSync %s : OK"%(value))
    251