blob: 2ee54148e875149324607adf8c174719e2ecca67 [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.
"""
Renaming domains testcases
List of tested functions :
--------------------------
- [renameDomain] function
Test cases :
------------
- Nominal cases
- Renaming errors
- Special cases
"""
import os
from Util.PfwUnitTestLib import PfwTestCase
from Util import ACTLogging
log=ACTLogging.Logger()
# Test of Domains - Rename
class TestCases(PfwTestCase):
def setUp(self):
self.pfw.sendCmd("setTuningMode", "on")
self.domain_name = "domain_white"
self.new_domain_name = "domain_black"
self.renaming_iterations = 5
def tearDown(self):
self.pfw.sendCmd("setTuningMode", "off")
def test_Nominal_Case(self):
"""
Nominal case
------------
Test case description :
~~~~~~~~~~~~~~~~~~~~~~~
- Renaming a domain
Tested commands :
~~~~~~~~~~~~~~~~~
- [renameDomain] function
- [createDomain] function
- [listDomains] function
Expected result :
~~~~~~~~~~~~~~~~~
- domains correctly renamed
"""
log.D(self.test_Nominal_Case.__doc__)
# New domain creation
log.I("New domain creation : %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))
# Initial domains listing using "listDomains" command
log.I("Creating a domains listing backup")
log.I("command [listDomains]")
out, err = self.pfw.sendCmd("listDomains","","")
assert err == None, "INFO : command [listDomains] - ERROR while listing domains"
log.I("command [listDomains] correctly executed")
# Saving initial domains names
f_init_domains = open("f_init_domains", "w")
f_init_domains.write(out)
f_init_domains.close()
log.I("Domains listing backup created")
# Checking domains number
f_init_domains = open("f_init_domains", "r")
domains_nbr = 0
line=f_init_domains.readline()
while line!="":
line=f_init_domains.readline()
domains_nbr+=1
f_init_domains.close()
os.remove("f_init_domains")
log.I("%s domains names saved" % domains_nbr)
# Domain renaming iterations
log.I("Checking domain renaming - %s iterations" % self.renaming_iterations)
old_name = self.domain_name
new_name = self.new_domain_name
for iteration in range (self.renaming_iterations):
log.I("Iteration %s" % (iteration))
log.I("Renaming domain %s to %s" % (old_name,new_name))
log.I("command [renameDomain]")
out, err = self.pfw.sendCmd("renameDomain",old_name,new_name)
assert out == "Done", out
assert err == None, "ERROR : command [renameDomain] - ERROR while renaming domain %s" % (old_name)
# Domains listing using "listDomains" command
log.I("Creating a domains listing")
log.I("command [listDomains]")
out, err = self.pfw.sendCmd("listDomains","","")
assert err == None, "ERROR : command [listDomains] - ERROR while listing domains"
log.I("command [listDomains] correctly executed")
# Saving domains names
f_domains = open("f_domains", "w")
f_domains.write(out)
f_domains.close()
log.I("Domains listing created")
# Checking renaming
log.I("Checking that renaming is correct in domains listing")
f_domains = open("f_domains", "r")
for line in range(domains_nbr):
if (line >= (domains_nbr - 1)):
domain_renamed = f_domains.readline().strip('\n')
assert domain_renamed==new_name, "ERROR : Error while renaming domain %s" % (old_name)
else:
f_domains.readline()
f_domains.close()
log.I("New domain name %s conform to expected value" % (new_name))
temp = old_name
old_name = new_name
new_name = temp
os.remove("f_domains")
def test_Renaming_Error(self):
"""
Renaming errors
---------------
Test case description :
~~~~~~~~~~~~~~~~~~~~~~~
- renaming a non existent domain
- renaming a domain with an already existent domain name
Tested commands :
~~~~~~~~~~~~~~~~~
- [renameDomain] function
- [createDomain] function
- [renameDomain] function
Expected result :
~~~~~~~~~~~~~~~~~
- error detected
- domains names remain unchanged
"""
log.D(self.test_Renaming_Error.__doc__)
# New domains creation
log.I("New domain creation : %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("command Domain %s created" % (self.domain_name))
# Initial domains listing using "listDomains" command
log.I("Creating a domains listing backup")
log.I("command [listDomains]")
out, err = self.pfw.sendCmd("listDomains","","")
assert err == None, "INFO : command [listDomains] - Error while listing domains"
log.I("command [listDomains] correctly executed")
# Saving initial domains names
f_init_domains = open("f_init_domains", "w")
f_init_domains.write(out)
f_init_domains.close()
log.I("Domains listing backup created")
# Checking domains number
f_init_domains = open("f_init_domains", "r")
domains_nbr = 0
line=f_init_domains.readline()
while line!="":
line=f_init_domains.readline()
domains_nbr+=1
f_init_domains.close()
log.I("%s domains names saved" % domains_nbr)
# Domain renaming error : renamed domain does not exist
log.I("Renaming a non existent domain")
log.I("Renaming domain FAKE to NEW_NAME")
log.I("command [renameDomain]")
out, err = self.pfw.sendCmd("renameDomain",'FAKE','NEW_NAME', expectSuccess=False)
assert out != "Done", out
assert err == None, "ERROR : command [renameDomain] - Error while renaming domain"
log.I("command [renameDomain] - renaming error correctly detected")
# Domains listing using "listDomains" command
log.I("Creating a domains listing")
log.I("command [listDomains]")
out, err = self.pfw.sendCmd("listDomains","","")
assert err == None, "ERROR : command [listDomains] - Error while listing domains"
log.I("command [listDomains] correctly executed")
# Saving domains names
f_domains = open("f_domains", "w")
f_domains.write(out)
f_domains.close()
log.I("Domains listing created")
# Checking domains names integrity
log.I("Checking domains names integrity")
f_domains = open("f_domains", "r")
f_init_domains = open("f_init_domains", "r")
for line in range(domains_nbr):
domain_name = f_domains.readline().strip('\n')
domain_backup_name = f_init_domains.readline().strip('\n')
assert domain_name==domain_backup_name, "ERROR : Domain name %s affected by the renaming error" % (domain_backup_name)
f_domains.close()
f_init_domains.close()
log.I("Domains names not affected by the renaming error")
os.remove("f_domains")
# Domain renaming error : renaming a domain with an already existent domain name
log.I("renaming a domain with an already existent domain name")
log.I("Renaming domain %s to %s" % (self.domain_name,self.new_domain_name) )
log.I("command [renameDomain]")
out, err = self.pfw.sendCmd("renameDomain",self.domain_name,self.new_domain_name, expectSuccess=False)
assert out != "Done", out
assert err == None, "INFO : command [renameDomain] - Error while renaming domain"
log.I("command [renameDomain] - renaming error correctly detected")
# Domains listing using "listDomains" command
log.I("Creating a domains listing")
log.I("command [listDomains]")
out, err = self.pfw.sendCmd("listDomains","","")
assert err == None, "ERROR : command [listDomains] - Error while listing domains"
log.I("command [listDomains] correctly executed")
# Saving domains names
f_domains = open("f_domains", "w")
f_domains.write(out)
f_domains.close()
log.I("Domains listing created")
# Checking domains names integrity
log.I("Checking domains names integrity")
f_domains = open("f_domains", "r")
f_init_domains = open("f_init_domains", "r")
for line in range(domains_nbr):
domain_name = f_domains.readline().strip('\n')
domain_backup_name = f_init_domains.readline().strip('\n')
assert domain_name==domain_backup_name, "ERROR : domain name %s affected by the renaming error" % (domain_backup_name)
f_domains.close()
f_init_domains.close()
log.I("Domains names not affected by the renaming error")
os.remove("f_domains")
os.remove("f_init_domains")
def test_Special_Cases(self):
"""
Special cases
-------------
Test case description :
~~~~~~~~~~~~~~~~~~~~~~~
- renaming a domain with its own name
Tested commands :
~~~~~~~~~~~~~~~~~
- [renameDomain] function
- [createDomain] function
- [listDomains] function
Expected result :
~~~~~~~~~~~~~~~~~
- no error
- domains names remain unchanged
"""
log.D(self.test_Special_Cases.__doc__)
# New domain creation
# Already created in previous test
# Initial domains listing using "listDomains" command
log.I("Creating a domains listing backup")
log.I("command [listDomains]")
out, err = self.pfw.sendCmd("listDomains","","")
assert err == None, "ERROR : command [listDomains] - Error while listing domains"
log.I("command [listDomains] correctly executed")
# Saving initial domains names
f_init_domains = open("f_init_domains", "w")
f_init_domains.write(out)
f_init_domains.close()
log.I("Domains listing backup created")
# Checking domains number
f_init_domains = open("f_init_domains", "r")
domains_nbr = 0
line=f_init_domains.readline()
while line!="":
line=f_init_domains.readline()
domains_nbr+=1
f_init_domains.close()
log.I("%s domains names saved" % domains_nbr)
# Domain renaming error : renaming a domain with its own name
log.I("renaming a domain with its own name")
log.I("Renaming domain %s to %s" % (self.domain_name,self.domain_name))
log.I("command [renameDomain]")
out, err = self.pfw.sendCmd("renameDomain",self.domain_name,self.domain_name)
assert out == "Done", out
assert err == None, "ERROR : command [renameDomain] - Error while renaming domain"
log.I("command [renameDomain] correctly executed")
# Domains listing using "listDomains" command
log.I("Creating a domains listing")
log.I("command [listDomains]")
out, err = self.pfw.sendCmd("listDomains","","")
assert err == None, "ERROR : command [listDomains] - Error while listing domains"
log.I("command [listDomains] correctly executed")
# Saving domains names
f_domains = open("f_domains", "w")
f_domains.write(out)
f_domains.close()
log.I("Domains listing created")
# Checking domains names integrity
log.I("Checking domains names integrity")
f_domains = open("f_domains", "r")
f_init_domains = open("f_init_domains", "r")
for line in range(domains_nbr):
domain_name = f_domains.readline().strip('\n')
domain_backup_name = f_init_domains.readline().strip('\n')
assert domain_name==domain_backup_name, "ERROR : domain name %s affected by the renaming" % (domain_backup_name)
f_domains.close()
f_init_domains.close()
log.I("Domains names not affected by the renaming")
os.remove("f_domains")
os.remove("f_init_domains")