blob: 0084e2296c4a0b265f8bdcc82ec13af23b28a06d [file] [log] [blame]
# -*-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.
"""
Rules management testcases
List of tested functions :
--------------------------
- [setRule] function
- [clearRule] function
- [getRule] function
Test cases :
------------
- Testing clearRule errors
- Testing setRule errors
- Testing getRule errors
- Testing nominal case
"""
from Util.PfwUnitTestLib import PfwTestCase
from Util import ACTLogging
log=ACTLogging.Logger()
# Test of Domains - Rules
class TestCases(PfwTestCase):
def setUp(self):
self.pfw.sendCmd("setTuningMode", "on")
self.domain_name = "domain_test"
self.conf_1 = "conf_1"
self.conf_2 = "conf_2"
self.rule_1 = "Any{Crit_0 Includes State_0x2, Crit_1 IsNot State_1}"
self.rule_2 = "All{Crit_0 Includes State_0x1, Crit_1 Is State_1}"
self.rule_error_1 = "All{Crit_Error Includes State_0x1, Crit_1 Is State_1}"
self.rule_error_2 = "Any{Crit_0 Includes State_0x2, Crit_0 IsNot State_1}"
self.rule_error_3 = "Ay{Crit_0 Includes State_0x2, Crit_1 IsNot State_1}"
self.rule_error_4 = "All{Crit_0 Includes State_0x4, Crit_1 IsNot State_1}"
self.rule_error_5 = "All{Crit_0 Includes State_0x2, Crit_1 IsNot 1}"
self.rule_error_nbr = 5
def tearDown(self):
self.pfw.sendCmd("setTuningMode", "off")
def test_ClearRule_Errors(self):
"""
Testing configuration creation error
------------------------------------
Test case description :
~~~~~~~~~~~~~~~~~~~~~~~
- Clearing rule on a non-existent configuration
- Clearing rule on a non-existent domain
- Clearing rule with wrong parameters order
Tested commands :
~~~~~~~~~~~~~~~~~
- [clearRule] function
- [setRule] function
- [getRule] function
- [createDomain] function
- [createConfiguration] function
- [deleteDomain] function
Expected result :
~~~~~~~~~~~~~~~~~
- all errors are detected
- no rule is deleted
"""
log.D(self.test_ClearRule_Errors.__doc__)
# New domain creation for testing purpose
log.I("New domain creation for testing purpose : %s" % (self.domain_name))
log.I("command [createDomain]")
out, err = self.pfw.sendCmd("createDomain",self.domain_name, "")
assert out == "Done", out
assert err == None, "ERROR : command [createDomain] - Error while creating domain %s" % (self.domain_name)
log.I("command [createDomain] correctly executed")
log.I("Domain %s created" % (self.domain_name))
# New configurations creation for testing purpose
log.I("New configuration %s creation for domain %s for testing purpose" % (self.conf_1,self.domain_name))
log.I("command [createConfiguration]")
out, err = self.pfw.sendCmd("createConfiguration",self.domain_name,self.conf_1)
assert out == "Done", out
assert err == None, "ERROR : command [createConfiguration] - Error while creating configuration %s" % (self.conf_1)
log.I("command [createConfiguration] correctly executed")
log.I("Configuration %s created for domain %s" % (self.conf_1,self.domain_name))
log.I("New configuration %s creation for domain %s for testing purpose" % (self.conf_2,self.domain_name))
log.I("command [createConfiguration]")
out, err = self.pfw.sendCmd("createConfiguration",self.domain_name,self.conf_2)
assert out == "Done", out
assert err == None, "ERROR : command [createConfiguration] - Error while creating configuration %s" % (self.conf_2)
log.I("command [createConfiguration] correctly executed")
log.I("Configuration %s created for domain %s" % (self.conf_2,self.domain_name))
# Applying rules to configurations
log.I("Applying rules to configurations %s and %s from domain %s" % (self.conf_1,self.conf_2,self.domain_name))
log.I("command [setRule]")
out, err = self.pfw.sendCmd("setRule",self.domain_name,self.conf_1,self.rule_1)
assert err == None, "ERROR : command [setRule] - Error while setting rule for configurations %s" % (self.conf_1)
assert out == "Done", "FAIL : command [setRule] - Error while setting rule for configuration %s" % (self.conf_1)
log.I("command [setRule] correctly executed")
log.I("rule correctly created for configuration %s" % (self.conf_1))
out, err = self.pfw.sendCmd("setRule",self.domain_name,self.conf_2,self.rule_2)
assert err == None, "ERROR : command [setRule] - Error while setting rule for configurations %s" % (self.conf_2)
assert out == "Done", "FAIL : command [setRule] - Error while setting rule for configuration %s" % (self.conf_2)
log.I("command [setRule] correctly executed")
log.I("rule correctly created for configuration %s" % (self.conf_2))
# Clearing rule errors
log.I("Clearing a rule on domain %s to a non-existent configuration" % (self.domain_name))
log.I("command [clearRule]")
out, err = self.pfw.sendCmd("clearRule",self.domain_name,"Wrong_Config_Name")
assert err == None, "ERROR : command [clearRule] - Error while clearing rule on domain %s to a non-existent configuration" % (self.domain_name)
assert out != "Done", "ERROR : command [clearRule] - Error not detected while clearing rule on domain %s to a non-existent configuration" % (self.domain_name)
log.I("error correctly detected when clearing a rule to a non-existent configuration")
log.I("Clearing a rule on a non-existent domain")
log.I("command [clearRule]")
out, err = self.pfw.sendCmd("clearRule","Wrong_Domain_Name",self.conf_2)
assert err == None, "ERROR : command [clearRule] - Error while clearing rule on a non-existent domain"
assert out != "Done", "ERROR : command [clearRule] - Error not detected while clearing rule on a non-existent domain"
log.I("error correctly detected while clearing rule on a non-existent domain")
log.I("Clearing a rule with wrong parameters order")
log.I("command [clearRule]")
out, err = self.pfw.sendCmd("clearRule",self.conf_1,self.domain_name)
assert err == None, "ERROR : command [clearRule] - Error when clearing a rule with incorrect paramaters order"
assert out != "Done", "ERROR : command [clearRule] - Error not detected when clearing a rule with incorrect paramaters order"
log.I("error correctly detected when clearing a rule with incorrect paramaters order on domain %s and configuration %s" % (self.domain_name,self.conf_1))
#Checking that no rule has been cleared
out, err = self.pfw.sendCmd("getRule",self.domain_name,self.conf_1)
assert out == self.rule_1, "FAIL : command [clearRule] - clearRule error has affected configuration %s" % (self.conf_1)
out, err = self.pfw.sendCmd("getRule",self.domain_name,self.conf_2)
assert out == self.rule_2, "FAIL : command [clearRule] - clearRule error has affected configuration %s" % (self.conf_2)
log.I("command [ClearRule] correctly executed, no impact due to clearing errors")
log.I("no rule removed from configurations %s and %s on domain %s" % (self.conf_1,self.conf_2,self.domain_name))
# New domain deletion
log.I("Domain %s deletion" % (self.domain_name))
log.I("command [deleteDomain]")
out, err = self.pfw.sendCmd("deleteDomain",self.domain_name, "")
assert out == "Done", out
assert err == None, "ERROR : command [deleteDomain] - Error while delting domain %s" % (self.domain_name)
log.I("command [deleteDomain] correctly executed")
log.I("Domain %s deleted" % (self.domain_name))
def test_SetRule_Errors(self):
"""
Testing setRule errors
----------------------
Test case description :
~~~~~~~~~~~~~~~~~~~~~~~
- Setting rule on a non-existent configuration
- Setting rule on a non-existent domain
- Setting various incorrect format rules
Tested commands :
~~~~~~~~~~~~~~~~~
- [setRule] function
- [getRule] function
- [createDomain] function
- [createConfiguration] function
- [deleteDomain] function
Expected result :
~~~~~~~~~~~~~~~~~
- all errors are detected
- no new rule is created
"""
log.D(self.test_SetRule_Errors.__doc__)
# New domain creation for testing purpose
log.I("New domain creation for testing purpose : %s" % (self.domain_name))
log.I("command [createDomain]")
out, err = self.pfw.sendCmd("createDomain",self.domain_name, "")
assert out == "Done", out
assert err == None, "ERROR : command [createDomain] - Error while creating domain %s" % (self.domain_name)
log.I("command [createDomain] correctly executed")
log.I("Domain %s created" % (self.domain_name))
# New configuration creation for testing purpose
log.I("New configuration %s creation for domain %s for testing purpose" % (self.conf_1,self.domain_name))
log.I("command [createConfiguration]")
out, err = self.pfw.sendCmd("createConfiguration",self.domain_name,self.conf_1)
assert out == "Done", out
assert err == None, "ERROR : command [createConfiguration] - Error while creating configuration %s" % (self.conf_1)
log.I("command [createConfiguration] correctly executed")
log.I("Configuration %s created for domain %s" % (self.conf_1,self.domain_name))
# setRule :basic error cases
log.I("Applying a new rule on domain %s to a non-existent configuration" % (self.domain_name))
log.I("command [setRule]")
out, err = self.pfw.sendCmd("setRule",self.domain_name,"Wrong_Config_Name",self.rule_1)
assert err == None, "ERROR : command [setRule] - Error while setting rule on domain %s to a non-existent configuration" % (self.domain_name)
assert out != "Done", "ERROR : command [setRule] - Error not detected while setting rule on domain %s to a non-existent configuration" % (self.domain_name)
log.I("error correctly detected when creating a rule to a non-existent configuration")
log.I("Applying a new rule on a non-existent domain")
log.I("command [setRule]")
out, err = self.pfw.sendCmd("setRule","Wrong_Domain_Name",self.conf_1,self.rule_1)
assert err == None, "ERROR : command [setRule] - Error while setting rule on a non-existent domain"
assert out != "Done", "ERROR : command [setRule] - Error not detected while setting rule on a non-existent domain"
log.I("error correctly detected while setting rule on a non-existent domain")
log.I("Applying a new rule with incorrect format")
log.I("command [setRule]")
out, err = self.pfw.sendCmd("setRule",self.domain_name,self.conf_1,"Wrong_Rule_Format")
assert err == None, "ERROR : command [setRule] - Error when setting incorrect format rule"
assert out != "Done", "ERROR : command [setRule] - Error not detected when setting incorrect format rule"
log.I("error correctly detected when setting incorrect format rule on domain %s and configuration %s" % (self.domain_name,self.conf_1))
# setRule : various rules errors
log.I("Various rules errors setting :")
for index in range (self.rule_error_nbr):
log.I("Rule error number %s" % (str(index)))
rule_name = "".join(["self.rule_error_", "_", str(index)])
out, err = self.pfw.sendCmd("setRule",self.domain_name,self.conf_1, rule_name)
assert err == None, "ERROR : command [setRule] - Error when setting incorrect format rule %s" % (str(rule_name))
assert out != "Done", "ERROR : command [setRule] - Error not detected when setting incorrect format rule %s" % (str(rule_name))
log.I("error correctly detected when setting incorrect format rule on domain %s and configuration %s" % (self.domain_name,self.conf_1))
#Checking that no rule has been created
out, err = self.pfw.sendCmd("getRule",self.domain_name,self.conf_1)
assert out == "<none>", "FAIL : command [setRule] - setRule not working for configuration %s" % (self.conf_1)
log.I("command [setRule] correctly executed, no impact due to setting errors")
log.I("no rule added to configurations %s on domain %s" % (self.conf_1,self.domain_name))
# New domain deletion
log.I("Domain %s deletion" % (self.domain_name))
log.I("command [deleteDomain]")
out, err = self.pfw.sendCmd("deleteDomain",self.domain_name, "")
assert out == "Done", out
assert err == None, "ERROR : command [deleteDomain] - Error while delting domain %s" % (self.domain_name)
log.I("command [deleteDomain] correctly executed")
log.I("Domain %s deleted" % (self.domain_name))
def test_GetRule_Errors(self):
"""
Testing getRule errors
----------------------
Test case description :
~~~~~~~~~~~~~~~~~~~~~~~
- Getting rule on a non-existent configuration
- Getting rule on a non-existent domain
- Getting rule with wrong parameters order
Tested commands :
~~~~~~~~~~~~~~~~~
- [getRule] function
- [setRule] function
- [clearRule] function
- [createDomain] function
- [createConfiguration] function
- [deleteDomain] function
Expected result :
~~~~~~~~~~~~~~~~~
- all errors are detected
"""
log.D(self.test_GetRule_Errors.__doc__)
# New domain creation for testing purpose
log.I("New domain creation for testing purpose : %s" % (self.domain_name))
log.I("command [createDomain]")
out, err = self.pfw.sendCmd("createDomain",self.domain_name, "")
assert out == "Done", out
assert err == None, "ERROR : command [createDomain] - Error while creating domain %s" % (self.domain_name)
log.I("command [createDomain] correctly executed")
log.I("Domain %s created" % (self.domain_name))
# New configurations creation for testing purpose
log.I("New configuration %s creation for domain %s for testing purpose" % (self.conf_1,self.domain_name))
log.I("command [createConfiguration]")
out, err = self.pfw.sendCmd("createConfiguration",self.domain_name,self.conf_1)
assert out == "Done", out
assert err == None, "ERROR : command [createConfiguration] - Error while creating configuration %s" % (self.conf_1)
log.I("command [createConfiguration] correctly executed")
log.I("Configuration %s created for domain %s" % (self.conf_1,self.domain_name))
log.I("New configuration %s creation for domain %s for testing purpose" % (self.conf_2,self.domain_name))
log.I("command [createConfiguration]")
out, err = self.pfw.sendCmd("createConfiguration",self.domain_name,self.conf_2)
assert out == "Done", out
assert err == None, "ERROR : command [createConfiguration] - Error while creating configuration %s" % (self.conf_2)
log.I("command [createConfiguration] correctly executed")
log.I("Configuration %s created for domain %s" % (self.conf_2,self.domain_name))
# Applying rules to configurations
log.I("Applying rules to configurations %s and %s from domain %s" % (self.conf_1,self.conf_2,self.domain_name))
log.I("command [setRule]")
out, err = self.pfw.sendCmd("setRule",self.domain_name,self.conf_1,self.rule_1)
assert err == None, "ERROR : command [setRule] - Error while setting rule for configurations %s" % (self.conf_1)
assert out == "Done", "FAIL : command [setRule] - Error while setting rule for configuration %s" % (self.conf_1)
log.I("command [setRule] correctly executed")
log.I("rule correctly created for configuration %s" % (self.conf_1))
out, err = self.pfw.sendCmd("setRule",self.domain_name,self.conf_2,self.rule_2)
assert err == None, "ERROR : command [setRule] - Error while setting rule for configurations %s" % (self.conf_2)
assert out == "Done", "FAIL : command [setRule] - Error while setting rule for configuration %s" % (self.conf_2)
log.I("command [setRule] correctly executed")
log.I("rule correctly created for configuration %s" % (self.conf_2))
# Getting rule errors
log.I("Getting a rule on domain %s from a non-existent configuration" % (self.domain_name))
log.I("command [getRule]")
out, err = self.pfw.sendCmd("getRule",self.domain_name,"Wrong_Config_Name")
assert err == None, "ERROR : command [getRule] - Error when getting rule on domain %s from a non-existent configuration" % (self.domain_name)
assert out != "Done", "ERROR : command [getRule] - Error not detected while getting rule on domain %s from a non-existent configuration" % (self.domain_name)
log.I("error correctly detected when getting a rule from a non-existent configuration")
log.I("getting a rule from a non-existent domain")
log.I("command [getRule]")
out, err = self.pfw.sendCmd("getRule","Wrong_Domain_Name",self.conf_2)
assert err == None, "ERROR : command [getRule] - Error when getting rule from a non-existent domain"
assert out != "Done", "ERROR : command [getRule] - Error not detected while getting rule from a non-existent domain"
log.I("error correctly detected when getting rule from a non-existent domain")
log.I("getting a rule with wrong parameters order")
log.I("command [getRule]")
out, err = self.pfw.sendCmd("getRule",self.conf_1,self.domain_name)
assert err == None, "ERROR : command [getRule] - Error when getting a rule with incorrect paramaters order"
assert out != "Done", "ERROR : command [getRule] - Error not detected when getting a rule with incorrect paramaters order"
log.I("error correctly detected when getting a rule with incorrect paramaters order on domain %s and configuration %s" % (self.domain_name,self.conf_1))
# New domain deletion
log.I("Domain %s deletion" % (self.domain_name))
log.I("command [deleteDomain]")
out, err = self.pfw.sendCmd("deleteDomain",self.domain_name, "")
assert out == "Done", out
assert err == None, "ERROR : command [deleteDomain] - Error while delting domain %s" % (self.domain_name)
log.I("command [deleteDomain] correctly executed")
log.I("Domain %s deleted" % (self.domain_name))
def test_Nominal_Case(self):
"""
Testing nominal case
--------------------
Test case description :
~~~~~~~~~~~~~~~~~~~~~~~
- setting rules for configurations
- getting rules from configurations
- Clear created rules
Tested commands :
~~~~~~~~~~~~~~~~~
- [getRule] function
- [setRule] function
- [clearRule] function
- [createDomain] function
- [createConfiguration] function
- [deleteConfiguration] function
- [deleteDomain] function
Expected result :
~~~~~~~~~~~~~~~~~
- all operations succeed
"""
log.D(self.test_Nominal_Case.__doc__)
# New domain creation for testing purpose
log.I("New domain creation for testing purpose : %s" % (self.domain_name))
log.I("command [createDomain]")
out, err = self.pfw.sendCmd("createDomain",self.domain_name, "")
assert out == "Done", out
assert err == None, "ERROR : command [createDomain] - Error while creating domain %s" % (self.domain_name)
log.I("command [createDomain] correctly executed")
log.I("Domain %s created" % (self.domain_name))
# New configurations creation for testing purpose
log.I("New configuration %s creation for domain %s for testing purpose" % (self.conf_1,self.domain_name))
log.I("command [createConfiguration]")
out, err = self.pfw.sendCmd("createConfiguration",self.domain_name,self.conf_1)
assert out == "Done", out
assert err == None, "ERROR : command [createConfiguration] - Error while creating configuration %s" % (self.conf_1)
log.I("command [createConfiguration] correctly executed")
log.I("Configuration %s created for domain %s" % (self.conf_1,self.domain_name))
log.I("New configuration %s creation for domain %s for testing purpose" % (self.conf_2,self.domain_name))
log.I("command [createConfiguration]")
out, err = self.pfw.sendCmd("createConfiguration",self.domain_name,self.conf_2)
assert out == "Done", out
assert err == None, "ERROR : command [createConfiguration] - Error while creating configuration %s" % (self.conf_2)
log.I("command [createConfiguration] correctly executed")
log.I("Configuration %s created for domain %s" % (self.conf_2,self.domain_name))
# Applying rules to configurations
log.I("Applying rules to configurations %s and %s from domain %s" % (self.conf_1,self.conf_2,self.domain_name))
log.I("command [setRule]")
out, err = self.pfw.sendCmd("setRule",self.domain_name,self.conf_1,self.rule_1)
assert err == None, "ERROR : command [setRule] - Error while setting rule for configurations %s" % (self.conf_1)
assert out == "Done", "FAIL : command [setRule] - Error while setting rule for configuration %s" % (self.conf_1)
log.I("command [setRule] correctly executed")
log.I("rule correctly created for configuration %s" % (self.conf_1))
out, err = self.pfw.sendCmd("setRule",self.domain_name,self.conf_2,self.rule_2)
assert err == None, "ERROR : command [setRule] - Error while setting rule for configurations %s" % (self.conf_2)
assert out == "Done", "FAIL : command [setRule] - Error while setting rule for configuration %s" % (self.conf_2)
log.I("command [setRule] correctly executed")
log.I("rule correctly created for configuration %s" % (self.conf_2))
# Checking rules recovered
log.I("Recovering rules for configurations %s and %s from domain %s" % (self.conf_1,self.conf_2,self.domain_name))
log.I("command [getRule]")
out, err = self.pfw.sendCmd("getRule",self.domain_name,self.conf_1)
assert err == None, "ERROR : command [getRule] - Error while setting rule to configurations %s" % (self.conf_1)
assert out == str(self.rule_1), "FAIL : command [getRule] - Error while recovering rule from configuration %s, incorrect value" % (self.conf_1)
log.I("command [getRule] correctly executed")
log.I("rule correctly recovered from configuration %s" % (self.conf_1))
out, err = self.pfw.sendCmd("getRule",self.domain_name,self.conf_2)
assert err == None, "ERROR : command [getRule] - Error while setting rule to configurations %s" % (self.conf_2)
assert out == str(self.rule_2), "FAIL : command [getRule] - Error while recovering rule from configuration %s, incorrect value" % (self.conf_2)
log.I("command [getRule] correctly executed")
log.I("rule correctly recovered from configuration %s" % (self.conf_2))
# Clearing rules
log.I("Clear rules for configurations %s and %s from domain %s" % (self.conf_1,self.conf_2,self.domain_name))
log.I("command [clearRule]")
out, err = self.pfw.sendCmd("clearRule",self.domain_name,self.conf_1)
assert err == None, "ERROR : command [clearRule] - Error on clearRule for configuration %s" % (self.conf_1)
assert out == "Done", "FAIL : command [clearRule] - Error on clearRule for configuration %s" % (self.conf_1)
out, err = self.pfw.sendCmd("getRule",self.domain_name,self.conf_1)
assert out == "<none>", "ERROR : command [clearRule] - ClearRule not working for configuration %s" % (self.conf_1)
out, err = self.pfw.sendCmd("clearRule",self.domain_name,self.conf_2)
assert err == None, "ERROR : command [clearRule] - Error on clearRule for configuration %s" % (self.conf_2)
assert out == "Done", "FAIL : command [clearRule] - Error on clearRule for configuration %s" % (self.conf_2)
out, err = self.pfw.sendCmd("getRule",self.domain_name,self.conf_2)
assert out == "<none>", "ERROR : command [clearRule] - ClearRule not working for configuration %s" % (self.conf_2)
log.I("command [clearRule] correctly executed")
log.I("ClearRule effective for configurations %s and %s" % (self.conf_1,self.conf_2))
# New domain deletion
log.I("Domain %s deletion" % (self.domain_name))
log.I("command [deleteDomain]")
out, err = self.pfw.sendCmd("deleteDomain",self.domain_name, "")
assert out == "Done", out
assert err == None, "ERROR : command [deleteDomain] - Error while delting domain %s" % (self.domain_name)
log.I("command [deleteDomain] correctly executed")
log.I("Domain %s deleted" % (self.domain_name))