diff options
Diffstat (limited to 'yocto-poky/bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py')
-rwxr-xr-x | yocto-poky/bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py | 155 |
1 files changed, 0 insertions, 155 deletions
diff --git a/yocto-poky/bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py b/yocto-poky/bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py deleted file mode 100755 index 754636f0f..000000000 --- a/yocto-poky/bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py +++ /dev/null @@ -1,155 +0,0 @@ -#!/usr/bin/python - -# Copyright - -# DESCRIPTION -# This is script for running all selected toaster cases on -# selected web browsers manifested in toaster_test.cfg. - -# 1. How to start toaster in yocto: -# $ source poky/oe-init-build-env -# $ source toaster start -# $ bitbake core-image-minimal - -# 2. How to install selenium on Ubuntu: -# $ sudo apt-get install scrot python-pip -# $ sudo pip install selenium - -# 3. How to install selenium addon in firefox: -# Download the lastest firefox addon from http://release.seleniumhq.org/selenium-ide/ -# Then install it. You can also install firebug and firepath addon - -# 4. How to start writing a new case: -# All you need to do is to implement the function test_xxx() and pile it on. - -# 5. How to test with Chrome browser -# Download/install chrome on host -# Download chromedriver from https://code.google.com/p/chromedriver/downloads/list according to your host type -# put chromedriver in PATH, (e.g. /usr/bin/, bear in mind to chmod) -# For windows host, you may put chromedriver.exe in the same directory as chrome.exe - -import unittest, sys, os, platform -import ConfigParser -import argparse -from toaster_automation_test import toaster_cases - - -def get_args_parser(): - description = "Script that runs toaster auto tests." - parser = argparse.ArgumentParser(description=description) - parser.add_argument('--run-all-tests', required=False, action="store_true", dest="run_all_tests", default=False, - help='Run all tests.') - parser.add_argument('--run-suite', required=False, dest='run_suite', default=False, - help='run suite (defined in cfg file)') - - return parser - - -def get_tests(): - testslist = [] - - prefix = 'toaster_automation_test.toaster_cases' - - for t in dir(toaster_cases): - if t.startswith('test_'): - testslist.append('.'.join((prefix, t))) - - return testslist - - -def get_tests_from_cfg(suite=None): - - testslist = [] - config = ConfigParser.SafeConfigParser() - config.read('toaster_test.cfg') - - if suite is not None: - target_suite = suite.lower() - - # TODO: if suite is valid suite - - else: - target_suite = platform.system().lower() - - try: - tests_from_cfg = eval(config.get('toaster_test_' + target_suite, 'test_cases')) - except: - print 'Failed to get test cases from cfg file. Make sure the format is correct.' - return None - - prefix = 'toaster_automation_test.toaster_cases.test_' - for t in tests_from_cfg: - testslist.append(prefix + str(t)) - - return testslist - -def main(): - - # In case this script is called from other directory - os.chdir(os.path.abspath(sys.path[0])) - - parser = get_args_parser() - args = parser.parse_args() - - if args.run_all_tests: - testslist = get_tests() - elif args.run_suite: - testslist = get_tests_from_cfg(args.run_suite) - os.environ['TOASTER_SUITE'] = args.run_suite - else: - testslist = get_tests_from_cfg() - - if not testslist: - print 'Failed to get test cases.' - exit(1) - - suite = unittest.TestSuite() - loader = unittest.TestLoader() - loader.sortTestMethodsUsing = None - runner = unittest.TextTestRunner(verbosity=2, resultclass=buildResultClass(args)) - - for test in testslist: - try: - suite.addTests(loader.loadTestsFromName(test)) - except: - return 1 - - result = runner.run(suite) - - if result.wasSuccessful(): - return 0 - else: - return 1 - - -def buildResultClass(args): - """Build a Result Class to use in the testcase execution""" - - class StampedResult(unittest.TextTestResult): - """ - Custom TestResult that prints the time when a test starts. As toaster-auto - can take a long time (ie a few hours) to run, timestamps help us understand - what tests are taking a long time to execute. - """ - def startTest(self, test): - import time - self.stream.write(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + " - ") - super(StampedResult, self).startTest(test) - - return StampedResult - - -if __name__ == "__main__": - - try: - ret = main() - except: - ret = 1 - import traceback - traceback.print_exc() - finally: - if os.getenv('TOASTER_SUITE'): - del os.environ['TOASTER_SUITE'] - sys.exit(ret) - - |