diff options
author | Jules Clero <julesx.clero@intel.com> | 2015-02-18 18:04:39 +0100 |
---|---|---|
committer | Eric Laurent <elaurent@google.com> | 2015-04-24 13:39:12 -0700 |
commit | c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02 (patch) | |
tree | 750df1de30e43327ec9a594890ec728882ea1162 /test/functional-tests/Util/PfwUnitTestLib.py | |
parent | 4e5e78b2c3669d308003713e758d6b3a59d50b0c (diff) | |
download | external_parameter-framework-c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02.zip external_parameter-framework-c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02.tar.gz external_parameter-framework-c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02.tar.bz2 |
Parameter-Framework functional tests initial commit
Import of parameter-framework tests.
Simplified test engine and use of python test discovery.
Signed-off-by: Herve Garanto <hervex.garanto@intel.com>
Signed-off-by: Sylvère Billout <sylverex.billout@intel.com>
Signed-off-by: Philippe Colonges <philippeX.colonges@intel.com>
Signed-off-by: Jules Clero <julesx.clero@intel.com>
Diffstat (limited to 'test/functional-tests/Util/PfwUnitTestLib.py')
-rw-r--r-- | test/functional-tests/Util/PfwUnitTestLib.py | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/test/functional-tests/Util/PfwUnitTestLib.py b/test/functional-tests/Util/PfwUnitTestLib.py new file mode 100644 index 0000000..d9c2f8c --- /dev/null +++ b/test/functional-tests/Util/PfwUnitTestLib.py @@ -0,0 +1,110 @@ +# -*-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. + +import subprocess +import unittest +import time + +class RemoteCli(object): + def sendCmd(self, cmd, *args): + shell_cmd = " ".join([self.platform_command, cmd]) + if args is not None: + shell_cmd += " " + " ".join(args) + print "CMD :", + print "[" + shell_cmd + "]" + try: + p = subprocess.Popen(shell_cmd, shell=True, stdout=subprocess.PIPE) + except Exception as (errno, strerror): + return None, strerror + out, err = p.communicate() + if out is not None: + out = out.strip() + return out, err + +class Pfw(RemoteCli): + def __init__(self): + self.platform_command = "remote-process localhost 5000 " + +class Hal(RemoteCli): + def __init__(self): + self.platform_command = "remote-process localhost 5001 " + + # Starts the HAL exe + def startHal(self): + cmd= "test-platform $PFW_TEST_CONFIGURATION" + subprocess.Popen(cmd, shell=True) + pass + + # Send command "stop" to the HAL + def stopHal(self): + subprocess.call("remote-process localhost 5001 exit", shell=True) + + def createInclusiveCriterion(self, name, nb): + self.sendCmd("createInclusiveSelectionCriterion", name, nb) + + def createExclusiveCriterion(self, name, nb): + self.sendCmd("createExclusiveSelectionCriterion", name, nb) + + # Starts the Pfw + def start(self): + self.sendCmd("start") + +# A PfwTestCase gather tests performed on one instance of the PFW. +class PfwTestCase(unittest.TestCase): + + hal = Hal() + + def __init__(self, argv): + super(PfwTestCase, self).__init__(argv) + self.pfw = Pfw() + + @classmethod + def setUpClass(cls): + cls.startHal() + + @classmethod + def tearDownClass(cls): + cls.stopHal() + + @classmethod + def startHal(cls): + # set up the Hal & pfw + cls.hal.startHal() + time.sleep(0.1) + # create criterions + cls.hal.createInclusiveCriterion("Crit_0", "2") + cls.hal.createExclusiveCriterion("Crit_1", "2") + # start the Pfw + cls.hal.start() + + @classmethod + def stopHal(cls): + cls.hal.stopHal() + time.sleep(0.1) |