# -*-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. """ synchronization functions testcases List of tested functions : -------------------------- - [getAutoSync] function - [setAutoSync] function - [sync] function Test cases : ------------ - Testing getAutoSync nominal case - Testing setAutoSync nominal case - Testing sync nominal case - Testing errors """ import commands, os import unittest from Util.PfwUnitTestLib import PfwTestCase from Util import ACTLogging log=ACTLogging.Logger() class TestCases(PfwTestCase): def setUp(self): pfw_filesystem=os.environ["PFW_RESULT"] self.pfw.sendCmd("setTuningMode", "on") self.param_name_01 = "/Test/Test/TEST_DIR/BOOL" self.filesystem_01 = pfw_filesystem+"/BOOL" self.param_name_02 = "/Test/Test/TEST_DIR/INT16" self.filesystem_02 = pfw_filesystem+"/INT16" self.param_name_03 = "/Test/Test/TEST_DIR/UINT32" self.filesystem_03 = pfw_filesystem+"/UINT32" def tearDown(self): self.pfw.sendCmd("setTuningMode", "off") def test_01_getAutoSync_Case(self): """ Testing getAutoSync nominal case ---------------------------- Test case description : ~~~~~~~~~~~~~~~~~~~~~~~ - enable autosync - get autosync state - disable autosync - get autosync state Tested commands : ~~~~~~~~~~~~~~~~~ - [setAutoSync] function - [getAutoSync] function Expected result : ~~~~~~~~~~~~~~~~~ - getAutoSync return expected state """ log.D(self.test_01_getAutoSync_Case.__doc__) value = "on" log.I("Enable autosync") out,err = self.pfw.sendCmd("setAutoSync", value) assert err == None, log.E("When enabling autosync : %s" % (err)) assert out == "Done", log.F("setAutoSync - expected : Done , found : %s" % (out)) log.I("Check autosync state") out, err = self.pfw.sendCmd("getAutoSync","") assert err == None, log.E("When getting autosync state : %s" % (err)) assert out == value, log.F("setAutoSync - expected : %s , found : %s" % (value,out)) value = "off" log.I("Disable autosync") out,err = self.pfw.sendCmd("setAutoSync", value) assert err == None, log.E("When enabling autosync : %s" % (err)) assert out == "Done", log.F("setAutoSync - expected : Done , found : %s" % (out)) log.I("Check autosync state") out, err = self.pfw.sendCmd("getAutoSync","") assert err == None, log.E("When getting autosync state : %s" % (err)) assert out == value, log.F("setAutoSync - expected : %s , found : %s" % (value,out)) def test_02_setAutoSync_Case(self): """ Testing getAutoSync nominal case ------------------------------------------------- Test case description : ~~~~~~~~~~~~~~~~~~~~~~~ - enable autosync - set differents parameters - check the value on the filesystem - disable autosync - set differents parameters - check the value on the filesystem Tested commands : ~~~~~~~~~~~~~~~~~ - [setAutoSync] function Used commands : ~~~~~~~~~~~~~~~ - [getAutoSync] function Expected result : ~~~~~~~~~~~~~~~~~ - When autosync is enabled, the filesystem is automatically synchronized with the blackboard. """ log.D(self.test_02_setAutoSync_Case.__doc__) #Check the initial parameter value init_value_01, err = self.pfw.sendCmd("getParameter", self.param_name_01, "") init_value_02, err = self.pfw.sendCmd("getParameter", self.param_name_02, "") init_value_03, err = self.pfw.sendCmd("getParameter", self.param_name_03, "") init_filesystem_01 = open(self.filesystem_01).read()[:-1] init_filesystem_02 = open(self.filesystem_02).read()[:-1] init_filesystem_03 = open(self.filesystem_03).read()[:-1] #Implement a new value if int(init_value_01)==0 : new_value_01 = "1" else : new_value_01 = "0" new_value_02 = str(int(init_value_02)+1) new_value_03 = str(int(init_value_03)+1) #Enable the autosync value = "on" log.I("Enable autosync") out,err = self.pfw.sendCmd("setAutoSync", value) assert err == None, log.E("When enabling autosync : %s" % (err)) assert out == "Done", log.F("setAutoSync - expected : Done , found : %s" % (out)) #Set the new parameter value self.pfw.sendCmd("setParameter", self.param_name_01, new_value_01) self.pfw.sendCmd("setParameter", self.param_name_02, new_value_02) self.pfw.sendCmd("setParameter", self.param_name_03, new_value_03) #Check the filesystem values #BOOL assert open(self.filesystem_01).read()[:-1] != init_filesystem_01, log.F("FILESYSTEM : parameter %s update error"%self.param_name_01) #INT16 assert open(self.filesystem_02).read()[:-1] != init_filesystem_02, log.F("FILESYSTEM : parameter %s update error"%self.param_name_02) #UINT32 assert open(self.filesystem_03).read()[:-1] != init_filesystem_03, log.F("FILESYSTEM : parameter %s update error"%self.param_name_03) log.I("test setAutoSync %s : OK"%(value)) #Enable the autosync value = "off" log.I("Disable autosync") out,err = self.pfw.sendCmd("setAutoSync", value) assert err == None, log.E("When enabling autosync : %s" % (err)) assert out == "Done", log.F("setAutoSync - expected : Done , found : %s" % (out)) #Set the new parameter value self.pfw.sendCmd("setParameter", self.param_name_01, init_value_01) self.pfw.sendCmd("setParameter", self.param_name_02, init_value_02) self.pfw.sendCmd("setParameter", self.param_name_03, init_value_03) #Check the filesystem values #BOOL 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) #INT16 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) #UINT32 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) log.I("test setAutoSync %s : OK"%(value)) @unittest.expectedFailure def test_03_Manual_Sync_Case(self): """ Testing getAutoSync nominal case ------------------------------------------------- Test case description : ~~~~~~~~~~~~~~~~~~~~~~~ - disable autosync - set differents parameters - check the value on the filesystem - sync - check the value on the filesystem Tested commands : ~~~~~~~~~~~~~~~~~ - [sync] function Used commands : ~~~~~~~~~~~~~~~ - [setAutoSync] function Expected result : ~~~~~~~~~~~~~~~~~ - sync should synchronized filessystem with blackboard """ log.D(self.test_03_Manual_Sync_Case.__doc__) #Check the initial parameter value init_value_01, err = self.pfw.sendCmd("getParameter", self.param_name_01, "") init_value_02, err = self.pfw.sendCmd("getParameter", self.param_name_02, "") init_value_03, err = self.pfw.sendCmd("getParameter", self.param_name_03, "") init_filesystem_01 = open(self.filesystem_01).read()[:-1] init_filesystem_02 = open(self.filesystem_02).read()[:-1] init_filesystem_03 = open(self.filesystem_03).read()[:-1] #Implement a new value if int(init_value_01)==0 : new_value_01 = "1" else : new_value_01 = "0" new_value_02 = str(int(init_value_02)+1) new_value_03 = str(int(init_value_03)+1) #Enable the autosync value = "off" log.I("Disable autosync") out,err = self.pfw.sendCmd("setAutoSync", value) assert err == None, log.E("When enabling autosync : %s" % (err)) assert out == "Done", log.F("setAutoSync - expected : Done , found : %s" % (out)) #Set the new parameter value self.pfw.sendCmd("setParameter", self.param_name_01, new_value_01) self.pfw.sendCmd("setParameter", self.param_name_02, new_value_02) self.pfw.sendCmd("setParameter", self.param_name_03, new_value_03) #Check the filesystem values, must not changed #BOOL assert open(self.filesystem_01).read()[:-1] == init_filesystem_01, log.F("FILESYSTEM : parameter %s update error"%self.param_name_01) #INT16 assert open(self.filesystem_02).read()[:-1] == init_filesystem_02, log.F("FILESYSTEM : parameter %s update error"%self.param_name_02) #UINT32 assert open(self.filesystem_03).read()[:-1] == init_filesystem_03, log.F("FILESYSTEM : parameter %s update error"%self.param_name_03) log.I("test setAutoSync %s : OK"%(value)) log.I("Sync") out,err = self.pfw.sendCmd("sync", "") assert err == None, log.E("When syncing : %s" % (err)) assert out == "Done", log.F("Sync - expected : Done , found : %s" % (out)) #Check the filesystem values #BOOL 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) #INT16 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) #UINT32 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) log.I("test setAutoSync %s : OK"%(value))