1c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero#!/usr/bin/python2
2c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero# -*-coding:utf-8 -*
3c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero
4c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero# Copyright (c) 2011-2015, Intel Corporation
5c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero# All rights reserved.
6c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero#
7c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero# Redistribution and use in source and binary forms, with or without modification,
8c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero# are permitted provided that the following conditions are met:
9c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero#
10c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero# 1. Redistributions of source code must retain the above copyright notice, this
11c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero# list of conditions and the following disclaimer.
12c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero#
13c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero# 2. Redistributions in binary form must reproduce the above copyright notice,
14c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero# this list of conditions and the following disclaimer in the documentation and/or
15c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero# other materials provided with the distribution.
16c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero#
17c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero# 3. Neither the name of the copyright holder nor the names of its contributors
18c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero# may be used to endorse or promote products derived from this software without
19c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero# specific prior written permission.
20c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero#
21c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
22c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
23c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
25c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
26c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
28c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero
32c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero"""
33c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules CleroCreate a test suite for all tests about SET/GET commands
34c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero
35c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules CleroUses PfwSetTsetSuite to create a single instance of the HAL
36c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clerofor all the SET/GEt commands.
37c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero
38c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules CleroThese commands are tested using the methods of the classes
39c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero"BooleanTestCase", etc...
40c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero"""
41c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero
42c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Cleroimport sys
43ec5130b950992fe79400ba66336d19169772a530Adrien Mimport os
44c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Cleroimport unittest
45ec5130b950992fe79400ba66336d19169772a530Adrien Mimport shutil
46c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clerofrom Util import PfwUnitTestLib
47c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero
48c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Cleroclass Logger(object):
49c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero
50c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero    def __init__(self, filename="Default.log"):
51c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero        self.terminal = sys.stdout
52c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero        self.log = open(filename, "a")
53c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero
54c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero    def write(self, message):
55c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero        self.terminal.write(message)
56c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero        self.log.write(message)
57c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero
58c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clerodef testsRunner(testDirectory):
59c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero
60c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero    tests = unittest.defaultTestLoader.discover(testDirectory, pattern='t*.py')
61c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero    runner = unittest.TextTestRunner(verbosity=2)
62c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero
63c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero    return runner.run(tests).wasSuccessful()
64c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero
65c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clerodef main():
66ec5130b950992fe79400ba66336d19169772a530Adrien M
67ec5130b950992fe79400ba66336d19169772a530Adrien M    pfw_root =  os.environ["PFW_ROOT"]
68ec5130b950992fe79400ba66336d19169772a530Adrien M    pfw_result = os.environ["PFW_RESULT"]
69ec5130b950992fe79400ba66336d19169772a530Adrien M    xml_path = "xml/configuration/ParameterFrameworkConfiguration.xml"
70ec5130b950992fe79400ba66336d19169772a530Adrien M
71ec5130b950992fe79400ba66336d19169772a530Adrien M    os.environ["PFW_TEST_TOOLS"] = os.path.dirname(os.path.abspath(__file__))
72ec5130b950992fe79400ba66336d19169772a530Adrien M    os.environ["PFW_TEST_CONFIGURATION"] = os.path.join(pfw_root, xml_path)
73ec5130b950992fe79400ba66336d19169772a530Adrien M
74ec5130b950992fe79400ba66336d19169772a530Adrien M    try:
75ec5130b950992fe79400ba66336d19169772a530Adrien M        # This directory must not exist. An exception will be raised if it does.
76ec5130b950992fe79400ba66336d19169772a530Adrien M        os.makedirs(pfw_result)
77ec5130b950992fe79400ba66336d19169772a530Adrien M
78ec5130b950992fe79400ba66336d19169772a530Adrien M        isAlive =  os.path.join(pfw_result,"isAlive")
79ec5130b950992fe79400ba66336d19169772a530Adrien M        with open(isAlive, 'w') as fout:
80ec5130b950992fe79400ba66336d19169772a530Adrien M            fout.write('true')
81ec5130b950992fe79400ba66336d19169772a530Adrien M
82ec5130b950992fe79400ba66336d19169772a530Adrien M        needResync = os.path.join(pfw_result,"needResync")
83ec5130b950992fe79400ba66336d19169772a530Adrien M        with open(needResync, 'w') as fout:
84ec5130b950992fe79400ba66336d19169772a530Adrien M            fout.write('false')
85ec5130b950992fe79400ba66336d19169772a530Adrien M
86ec5130b950992fe79400ba66336d19169772a530Adrien M        success = testsRunner('PfwTestCase')
87ec5130b950992fe79400ba66336d19169772a530Adrien M
88ec5130b950992fe79400ba66336d19169772a530Adrien M    finally:
89ec5130b950992fe79400ba66336d19169772a530Adrien M        shutil.rmtree(pfw_result)
90ec5130b950992fe79400ba66336d19169772a530Adrien M
91ec5130b950992fe79400ba66336d19169772a530Adrien M    sys.exit(0 if success else 1)
92c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero
93c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Cleroif __name__ == "__main__":
94c4cc78f87e10cd3ac61f936b1c2ee3d11e9b9d02Jules Clero    main()
95