summaryrefslogtreecommitdiffstats
path: root/test/functional-tests/Util/PfwUnitTestLib.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional-tests/Util/PfwUnitTestLib.py')
-rw-r--r--test/functional-tests/Util/PfwUnitTestLib.py110
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)