Home | History | Annotate | Download | only in Domains
      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 Adding and Removing elements from domain testcases
     33 
     34 List of tested functions :
     35 --------------------------
     36     - [listDomainElements]  function
     37     - [addElement] function
     38     - [removeElement] function
     39 
     40 Test cases :
     41 ------------
     42     - Testing nominal case
     43     - Testing addElement errors
     44     - Testing removeElement errors
     45 """
     46 import os
     47 from Util.PfwUnitTestLib import PfwTestCase
     48 from Util import ACTLogging
     49 log=ACTLogging.Logger()
     50 
     51 class TestCases(PfwTestCase):
     52     def setUp(self):
     53         self.pfw.sendCmd("setTuningMode", "on")
     54         self.domain_name = "Domain_0"
     55         self.elem_0_path = "/Test/Test/TEST_DIR"
     56         self.elem_1_path = "/Test/Test/TEST_DOMAIN_0"
     57         self.elem_2_path = "/Test/Test/TEST_DOMAIN_1"
     58 
     59     def tearDown(self):
     60         self.pfw.sendCmd("setTuningMode", "off")
     61 
     62     def test_Nominal_Case(self):
     63         """
     64         Testing nominal case
     65         --------------------
     66             Test case description :
     67             ~~~~~~~~~~~~~~~~~~~~~~~
     68                 - list and backup initial domain elements
     69                 - add a domain element
     70                 - remove a domain element
     71                 - list and check domains elements
     72             Tested commands :
     73             ~~~~~~~~~~~~~~~~~
     74                 - [listDomainElements] function
     75                 - [addElement] function
     76                 - [removeElement] function
     77             Expected result :
     78             ~~~~~~~~~~~~~~~~~
     79                 - all operations succeed
     80         """
     81         log.D(self.test_Nominal_Case.__doc__)
     82 
     83         # List and backup initial domain elements
     84         log.I("Listing initial domain %s elements" % (self.domain_name))
     85         out, err = self.pfw.sendCmd("listDomainElements",str(self.domain_name))
     86         assert err == None, "ERROR : command [listDomainElements] - Error while listing domain elements"
     87         f_DomainElements_Backup = open("f_DomainElements_Backup", "w")
     88         f_DomainElements_Backup.write(out)
     89         f_DomainElements_Backup.close()
     90         log.I("command [listDomainElements] correctly executed")
     91         f_DomainElements_Backup = open("f_DomainElements_Backup", "r")
     92         element_nbr_init = 0
     93         line=f_DomainElements_Backup.readline()
     94         while line!="":
     95             line=f_DomainElements_Backup.readline()
     96             element_nbr_init+=1
     97         f_DomainElements_Backup.close()
     98         log.I("Actual domain %s elements number is %s" % (self.domain_name,element_nbr_init))
     99 
    100         # Adding a new domain element
    101         log.I("Adding a new domain element to domain %s" % (self.domain_name))
    102         out, err = self.pfw.sendCmd("addElement", str(self.domain_name), str(self.elem_1_path))
    103         assert err == None, "ERROR : command [addElement] - Error while adding new domain element %s" % (self.elem_1_path)
    104         assert out == "Done", "ERROR : command [addElement] - Error while adding new domain element %s" % (self.elem_1_path)
    105         log.I("Adding a new domain element to domain %s" % (self.domain_name))
    106         out, err = self.pfw.sendCmd("addElement", str(self.domain_name), str(self.elem_2_path))
    107         assert err == None, "ERROR : command [addElement] - Error while adding new domain element %s" % (self.elem_2_path)
    108         assert out == "Done", "ERROR : command [addElement] - Error while adding new domain element %s" % (self.elem_2_path)
    109         log.I("New domain elements %s and %s added to domain %s" % (self.elem_1_path, self.elem_2_path, self.domain_name))
    110 
    111         # Removing a domain element
    112         log.I("Removing domain element %s from domain %s" % (self.elem_1_path,self.domain_name))
    113         out, err = self.pfw.sendCmd("removeElement", str(self.domain_name), str(self.elem_1_path))
    114         assert err == None, "ERROR : command [removeElement] - Error while removing domain element %s" % (self.elem_1_path)
    115         assert out == "Done", "ERROR : command [removeElement] - Error while removing domain element %s" % (self.elem_1_path)
    116 
    117         # Checking final domain elements
    118         log.I("Listing final domain %s elements" % (self.domain_name))
    119         out, err = self.pfw.sendCmd("listDomainElements",str(self.domain_name))
    120         assert err == None, "ERROR : command [listDomainElements] - Error while listing domain elements"
    121         f_DomainElements = open("f_DomainElements", "w")
    122         f_DomainElements.write(out)
    123         f_DomainElements.close()
    124         log.I("command [listDomainElements] correctly executed")
    125         f_DomainElements = open("f_DomainElements", "r")
    126         element_nbr = 0
    127         line=f_DomainElements.readline()
    128         while line!="":
    129             line=f_DomainElements.readline()
    130             element_nbr+=1
    131         f_DomainElements.close()
    132         log.I("Actual domain %s elements number is %s" % (self.domain_name,element_nbr))
    133         log.I("Checking domain %s elements names conformity" % (self.domain_name))
    134         f_DomainElements = open("f_DomainElements", "r")
    135         f_DomainElements_Backup = open("f_DomainElements_Backup", "r")
    136         for line in range(element_nbr):
    137             # initial domain elements shall not have been impacted by current test
    138             if (line < element_nbr_init):
    139                 element_name = f_DomainElements.readline().strip('\r\n')
    140                 element_name_backup = f_DomainElements_Backup.readline().strip('\r\n')
    141                 assert element_name==element_name_backup, "ERROR : Error while modifying domain elements on domain %s" % (self.domain_name)
    142             # last listed element shall be equal to the only one element added previously
    143             else:
    144                 element_name = f_DomainElements.readline().strip('\r\n')
    145                 assert element_name==str(self.elem_2_path), "ERROR : Error while modifying domain elements on domain %s" % (self.domain_name)
    146         log.I("Actual domain %s elements names conform to expected values" % (self.domain_name))
    147         # Temporary files deletion
    148         f_DomainElements.close()
    149         f_DomainElements_Backup.close()
    150         os.remove("f_DomainElements_Backup")
    151         os.remove("f_DomainElements")
    152         # Removing created domain element
    153         out, err = self.pfw.sendCmd("removeElement", str(self.domain_name), str(self.elem_2_path))
    154         assert err == None, "ERROR : command [removeElement] - Error while removing domain element %s" % (self.elem_2_path)
    155         assert out == "Done", "ERROR : command [removeElement] - Error while removing domain element %s" % (self.elem_2_path)
    156 
    157     def test_addElement_Error(self):
    158         """
    159         Testing addElement error
    160         ------------------------
    161             Test case description :
    162             ~~~~~~~~~~~~~~~~~~~~~~~
    163                 - add an already existing domain element
    164                 - add a non defined domain element
    165             Tested commands :
    166             ~~~~~~~~~~~~~~~~~
    167                 - [addElement] function
    168                 - [listDomainElements] function
    169             Expected result :
    170             ~~~~~~~~~~~~~~~~~
    171                 - Errors correctly detected
    172                 - No side effect
    173         """
    174         log.D(self.test_addElement_Error.__doc__)
    175 
    176         # List and backup initial domain elements
    177         log.I("Listing initial domain %s elements" % (self.domain_name))
    178         out, err = self.pfw.sendCmd("listDomainElements",str(self.domain_name))
    179         assert err == None, "ERROR : command [listDomainElements] - Error while listing domain elements"
    180         f_DomainElements_Backup = open("f_DomainElements_Backup", "w")
    181         f_DomainElements_Backup.write(out)
    182         f_DomainElements_Backup.close()
    183         log.I("command [listDomainElements] correctly executed")
    184         f_DomainElements_Backup = open("f_DomainElements_Backup", "r")
    185         element_nbr_init = 0
    186         line=f_DomainElements_Backup.readline()
    187         while line!="":
    188             line=f_DomainElements_Backup.readline()
    189             element_nbr_init+=1
    190         f_DomainElements_Backup.close()
    191         log.I("Actual domain %s elements number is %s" % (self.domain_name,element_nbr_init))
    192 
    193         # Adding a new domain element errors
    194         log.I("Adding an already existing domain element to domain %s" % (self.domain_name))
    195         out, err = self.pfw.sendCmd("addElement", str(self.domain_name), str(self.elem_0_path), expectSuccess=False)
    196         assert err == None, "ERROR : command [addElement] - Error while adding new domain element %s" % (self.elem_0_path)
    197         assert out != "Done", "ERROR : command [addElement] - Error not detected while adding an already existing domain element to domain %s" % (self.domain_name)
    198         log.I("Adding a non defined domain element to domain %s" % (self.domain_name))
    199         out, err = self.pfw.sendCmd("addElement", str(self.domain_name), "Non_Defined_Element", expectSuccess=False)
    200         assert err == None, "ERROR : command [addElement] - Error while adding new domain element %s" % (self.elem_2_path)
    201         assert out != "Done", "ERROR : command [addElement] - Error not detected while adding a non defined domain element to domain %s" % (self.domain_name)
    202         log.I("Error when adding elements correctly detected")
    203 
    204         # Checking final domain elements
    205         log.I("Listing final domain %s elements" % (self.domain_name))
    206         out, err = self.pfw.sendCmd("listDomainElements",str(self.domain_name))
    207         assert err == None, "ERROR : command [listDomainElements] - Error while listing domain elements"
    208         f_DomainElements = open("f_DomainElements", "w")
    209         f_DomainElements.write(out)
    210         f_DomainElements.close()
    211         log.I("command [listDomainElements] correctly executed")
    212         f_DomainElements = open("f_DomainElements", "r")
    213         element_nbr = 0
    214         line=f_DomainElements.readline()
    215         while line!="":
    216             line=f_DomainElements.readline()
    217             element_nbr+=1
    218         f_DomainElements.close()
    219         log.I("Actual domain %s elements number is %s" % (self.domain_name,element_nbr))
    220         log.I("Checking domain %s elements names conformity" % (self.domain_name))
    221         f_DomainElements = open("f_DomainElements", "r")
    222         f_DomainElements_Backup = open("f_DomainElements_Backup", "r")
    223         for line in range(element_nbr):
    224             # initial domain elements shall not have been impacted by current test
    225             element_name = f_DomainElements.readline().strip('\r\n')
    226             element_name_backup = f_DomainElements_Backup.readline().strip('\r\n')
    227             assert element_name==element_name_backup, "ERROR : domain %s elements affected by addElement errors" % (self.domain_name)
    228         log.I("Actual domain %s elements names conform to expected values" % (self.domain_name))
    229         # Temporary files deletion
    230         f_DomainElements.close()
    231         f_DomainElements_Backup.close()
    232         os.remove("f_DomainElements_Backup")
    233         os.remove("f_DomainElements")
    234 
    235     def test_removeElement_Error(self):
    236         """
    237         Testing removeElement error
    238         ---------------------------
    239             Test case description :
    240             ~~~~~~~~~~~~~~~~~~~~~~~
    241                 - remove a non defined domain element
    242                 - remove a domain element on a wrong domain name
    243             Tested commands :
    244             ~~~~~~~~~~~~~~~~~
    245                 - [removeElement] function
    246                 - [listDomainElements] function
    247             Expected result :
    248             ~~~~~~~~~~~~~~~~~
    249                 - Errors correctly detected
    250                 - No side effect
    251         """
    252         log.D(self.test_removeElement_Error.__doc__)
    253 
    254         # List and backup initial domain elements
    255         log.I("Listing initial domain %s elements" % (self.domain_name))
    256         out, err = self.pfw.sendCmd("listDomainElements",str(self.domain_name))
    257         assert err == None, "ERROR : command [listDomainElements] - Error while listing domain elements"
    258         f_DomainElements_Backup = open("f_DomainElements_Backup", "w")
    259         f_DomainElements_Backup.write(out)
    260         f_DomainElements_Backup.close()
    261         log.I("command [listDomainElements] correctly executed")
    262         f_DomainElements_Backup = open("f_DomainElements_Backup", "r")
    263         element_nbr_init = 0
    264         line=f_DomainElements_Backup.readline()
    265         while line!="":
    266             line=f_DomainElements_Backup.readline()
    267             element_nbr_init+=1
    268         f_DomainElements_Backup.close()
    269         log.I("Actual domain %s elements number is %s" % (self.domain_name,element_nbr_init))
    270 
    271         # Error when removing domain elements
    272         log.I("Removing a domain element from a non defined domain")
    273         out, err = self.pfw.sendCmd("removeElement", "Wrong_Domain_Name", str(self.elem_0_path), expectSuccess=False)
    274         assert err == None, "ERROR : command [removeElement] - Error when removing domain element %s" % (self.elem_0_path)
    275         assert out != "Done", "ERROR : command [removeElement] - Error not detected when removing domain element %s from an undefined domain"% (self.elem_0_path)
    276         log.I("Removing a non existent domain element from domain %s" % (self.domain_name))
    277         out, err = self.pfw.sendCmd("removeElement", str(self.domain_name), "Wrong_Element_Name", expectSuccess=False)
    278         assert err == None, "ERROR : command [removeElement] - Error when removing domain element %s" % (self.elem_0_path)
    279         assert out != "Done", "ERROR : command [removeElement] - Error not detected when removing a non existent domain element from domain %s" % (self.domain_name)
    280         log.I("Error when removing elements correctly detected")
    281 
    282         # Checking final domain elements
    283         log.I("Listing final domain %s elements" % (self.domain_name))
    284         out, err = self.pfw.sendCmd("listDomainElements",str(self.domain_name))
    285         assert err == None, "ERROR : command [listDomainElements] - Error while listing domain elements"
    286         f_DomainElements = open("f_DomainElements", "w")
    287         f_DomainElements.write(out)
    288         f_DomainElements.close()
    289         log.I("command [listDomainElements] correctly executed")
    290         f_DomainElements = open("f_DomainElements", "r")
    291         element_nbr = 0
    292         line=f_DomainElements.readline()
    293         while line!="":
    294             line=f_DomainElements.readline()
    295             element_nbr+=1
    296         f_DomainElements.close()
    297         log.I("Actual domain %s elements number is %s" % (self.domain_name,element_nbr))
    298         log.I("Checking domain %s elements names conformity" % (self.domain_name))
    299         f_DomainElements = open("f_DomainElements", "r")
    300         f_DomainElements_Backup = open("f_DomainElements_Backup", "r")
    301         for line in range(element_nbr):
    302             # initial domain elements shall not have been impacted by current test
    303             element_name = f_DomainElements.readline().strip('\r\n')
    304             element_name_backup = f_DomainElements_Backup.readline().strip('\r\n')
    305             assert element_name==element_name_backup, "ERROR : domain %s elements affected by addElement errors" % (self.domain_name)
    306         log.I("Actual domain %s elements names conform to expected values" % (self.domain_name))
    307         # Temporary files deletion
    308         f_DomainElements.close()
    309         f_DomainElements_Backup.close()
    310         os.remove("f_DomainElements_Backup")
    311         os.remove("f_DomainElements")
    312