diff options
Diffstat (limited to 'test/functional-tests/PfwTestCase/Domains/tDomain_Configuration_Selection.py')
-rw-r--r-- | test/functional-tests/PfwTestCase/Domains/tDomain_Configuration_Selection.py | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/test/functional-tests/PfwTestCase/Domains/tDomain_Configuration_Selection.py b/test/functional-tests/PfwTestCase/Domains/tDomain_Configuration_Selection.py new file mode 100644 index 0000000..f67ab5f --- /dev/null +++ b/test/functional-tests/PfwTestCase/Domains/tDomain_Configuration_Selection.py @@ -0,0 +1,185 @@ +# -*-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. + +""" +Effect of criteria changes on configuration testcases + +List of tested functions : +-------------------------- + - [applyConfigurations] function + - [setCriterionState] function + +Test cases : +------------ + - test_Combinatorial_Criteria +""" +import os +from Util.PfwUnitTestLib import PfwTestCase +from Util import ACTLogging +log=ACTLogging.Logger() + +class TestCases(PfwTestCase): + + def setUp(self): + self.pfw.sendCmd("setTuningMode", "on") + self.reference_xml = "$PFW_TEST_TOOLS/xml/XML_Test/Reference_Criteria.xml" + self.temp_domain="f_Domains_Backup" + self.temp_status="f_Config_Status" + # Expected results are defined by Reference_Criteria.xml configuration settings + self.expected_result = [["Conf_1_1", "<none>", "Conf_3_0"] , + ["Conf_1_1", "Conf_2_1", "Conf_3_1"] , + ["Conf_1_1", "Conf_2_1", "Conf_3_0"] , + ["Conf_1_1", "Conf_2_0", "Conf_3_0"] , + ["Conf_1_0", "Conf_2_0", "Conf_3_0"] , + ["Conf_1_1", "Conf_2_0", "Conf_3_0"] , + ["Conf_1_1", "Conf_2_0", "Conf_3_1"]] + self.criterion_setup = [["0x2", "1"] , + ["0x2", "0"] , + ["0x1", "0"] , + ["0x1", "1"] , + ["0x3", "4"] , + ["0x0", "1"]] + # names used in this test refer to names used in Reference_Criteria.xml + self.new_domain_name = "Domain" + self.crit_change_iteration = 6 + + def tearDown(self): + self.pfw.sendCmd("setTuningMode", "off") + + def test_Combinatorial_Criteria(self): + """ + Testing combinatorial criteria + ------------------------------ + Test case description : + ~~~~~~~~~~~~~~~~~~~~~~~ + Checking that PFW behaviour is in line with expectations when setting criteria states. + - Test of all combinatorial of criteria and possible errors + - nominal case in configuration selection + - conflict in configuration selection + - no configuration selected + - error in criterion setting + - test of compound rules : All / Any + - test of matches cases : Is / IsNot / Include / Exclude + - test of criteria types : Inclusive / Exclusive + Tested commands : + ~~~~~~~~~~~~~~~~~ + - [applyConfigurations] function + - [setCriterionState] function + Expected result : + ~~~~~~~~~~~~~~~~~ + - Configurations setting conform to expected behavior + """ + log.D(self.test_Combinatorial_Criteria.__doc__) + + # Import a reference XML file + log.I("Import Domains with settings from %s"%(self.reference_xml)) + out, err = self.pfw.sendCmd("importDomainsWithSettingsXML",self.reference_xml, "") + assert err == None, log.E("Command [importDomainsWithSettingsXML %s] : %s"%(self.reference_xml,err)) + assert out == "Done", log.F("When using function importDomainsWithSettingsXML %s]"%(self.reference_xml)) + + # Check number of domain + log.I("Current domains listing") + log.I("Command [listDomains]") + out, err = self.pfw.sendCmd("listDomains","","") + assert err == None, log.E("Command [listDomains] : %s"%(err)) + log.I("Command [listDomains] : correctly executed") + + # Domains listing backup + f_Domains_Backup = open(self.temp_domain, "w") + f_Domains_Backup.write(out) + f_Domains_Backup.close() + f_Domains_Backup = open(self.temp_domain, "r") + domains_nbr = 0 + line=f_Domains_Backup.readline() + while line!="": + line=f_Domains_Backup.readline() + domains_nbr+=1 + f_Domains_Backup.close() + + # Applying default configurations + out, err = self.pfw.sendCmd("setTuningMode", "off") + assert err == None, log.E("Command [setTuningMode]") + out, err = self.hal.sendCmd("applyConfigurations") + assert err == None, log.E("Command HAL [applyConfigurations]") + + # Saving default status + out, err = self.pfw.sendCmd("status") + f_Config_Status = open(self.temp_status, "w") + f_Config_Status.write(out) + f_Config_Status.close() + + # Test cases iterations + for iteration in range (self.crit_change_iteration+1): + + # Criteria settings + # No criteria are set at the first iteration for testing default configurations + if iteration != 0: + log.I("Setting criterion %s to %s" % ("Crit_0", str(self.criterion_setup[iteration-1][0]))) + state = str(self.criterion_setup[iteration-1][0]) + out, err = self.hal.sendCmd("setCriterionState", "Crit_0", state) + assert err == None, log.E("Command HAL [setCriterionState]") + log.I("Setting criterion %s to %s" % ("Crit_1", str(self.criterion_setup[iteration-1][1]))) + state = str(self.criterion_setup[iteration-1][1]) + out, err = self.hal.sendCmd("setCriterionState", "Crit_1", state) + assert err == None, log.E("Command HAL [setCriterionState]") + log.I("Applaying new configurations") + out, err = self.hal.sendCmd("applyConfigurations") + assert err == None, log.E("Command HAL [applyConfigurations]") + out, err = self.pfw.sendCmd("status") + assert err == None, log.E("Command [status]") + os.remove(self.temp_status) + f_Config_Status = open(self.temp_status, "w") + f_Config_Status.write(out) + f_Config_Status.close() + else : + log.I("Default Configurations - no criteria are set :") + out, err = self.pfw.sendCmd("status") + os.remove(self.temp_status) + f_Config_Status = open(self.temp_status, "w") + f_Config_Status.write(out) + f_Config_Status.close() + + # Configurations checking + for domain in range (domains_nbr): + domain_name = "".join([self.new_domain_name, "_", str(domain+1)]) + config = str(self.expected_result[iteration][domain]) + log.I("Checking that domain %s is set to configuration : %s" % (domain_name,config)) + for line in open(self.temp_status, "r"): + if domain_name in line: + line = line.replace(domain_name,'') + line = line.replace(":","") + line = line.replace(' ','') + line = line.replace("\n","") + assert line == config, log.F("Domain %s - Expected configuration : %s, found : %s" % (domain_name,config,line)) + log.I("Domain %s - configuration correctly set to %s" % (domain_name,line)) + + # Temporary files deletion + os.remove(self.temp_domain) + os.remove(self.temp_status) |