summaryrefslogtreecommitdiff
path: root/piglit-run.py
diff options
context:
space:
mode:
authorDylan Baker <baker.dylan.c@gmail.com>2014-05-02 00:23:28 -0700
committerDylan Baker <baker.dylan.c@gmail.com>2014-05-06 20:10:22 -0700
commit9b1e7da290cd612690e85bcacc99b50c65d83fe6 (patch)
tree2368cf51b5639a666245636b50d42dde5bf7fd24 /piglit-run.py
parent463b049bf3b0a9cc41bc4886d013f161b8156e74 (diff)
framework: move executable functions to modules
This moves piglit-run and piglit-resume main() functions to framework.programs.run as run() and resume() respectively, and moves piglit-summary-* to framework.programs.summary. It then creates compatibility wrappers as piglit-*.py for the functions. This is groundwork for a combined piglit interface. The original files could not be imported directly since they have dash (-) in their name, and python considers dash an illegal character for function, class, and modules names, and python would raise an ImportError when attempting to import one of them. Signed-off-by: Dylan Baker <baker.dylan.c@gmail.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Diffstat (limited to 'piglit-run.py')
-rwxr-xr-xpiglit-run.py199
1 files changed, 22 insertions, 177 deletions
diff --git a/piglit-run.py b/piglit-run.py
index e5b1b4381..fd7cd72b3 100755
--- a/piglit-run.py
+++ b/piglit-run.py
@@ -1,187 +1,32 @@
#!/usr/bin/env python
-#
-# Permission is hereby granted, free of charge, to any person
-# obtaining a copy of this software and associated documentation
-# files (the "Software"), to deal in the Software without
-# restriction, including without limitation the rights to use,
-# copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following
-# conditions:
-#
-# This permission notice shall be included in all copies or
-# substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
-# PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR(S) BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-# OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-# DEALINGS IN THE SOFTWARE.
+# Copyright (c) 2014 Intel Corporation
-from __future__ import print_function
-import argparse
-import sys
-import os
-import os.path as path
-import time
-
-sys.path.append(path.dirname(path.realpath(sys.argv[0])))
-import framework.core as core
-import framework.profile
-
-
-def main():
- parser = argparse.ArgumentParser(sys.argv)
- parser.add_argument("-n", "--name",
- metavar="<test name>",
- default=None,
- help="Name of this test run")
- parser.add_argument("-d", "--dry-run",
- action="store_false",
- dest="execute",
- help="Do not execute the tests")
- parser.add_argument("-t", "--include-tests",
- default=[],
- action="append",
- metavar="<regex>",
- help="Run only matching tests "
- "(can be used more than once)")
- parser.add_argument("-x", "--exclude-tests",
- default=[],
- action="append",
- metavar="<regex>",
- help="Exclude matching tests "
- "(can be used more than once)")
- conc_parser = parser.add_mutually_exclusive_group()
- conc_parser.add_argument('-c', '--all-concurrent',
- action="store_const",
- default="some",
- const="all",
- dest="concurrency",
- help="Run all tests concurrently")
- conc_parser.add_argument("-1", "--no-concurrency",
- action="store_const",
- default="some",
- const="none",
- dest="concurrency",
- help="Disable concurrent test runs")
- parser.add_argument("-p", "--platform",
- choices=["glx", "x11_egl", "wayland", "gbm"],
- help="Name of windows system passed to waffle")
- parser.add_argument("-f", "--config",
- dest="config_file",
- type=argparse.FileType("r"),
- help="Optionally specify a piglit config file to use. "
- "Default is piglit.conf")
- parser.add_argument("--valgrind",
- action="store_true",
- help="Run tests in valgrind's memcheck")
- parser.add_argument("--dmesg",
- action="store_true",
- help="Capture a difference in dmesg before and "
- "after each test. Implies -1/--no-concurrency")
- parser.add_argument("-v", "--verbose",
- action="store_true",
- help="Produce a line of output for each test before "
- "and after it runs")
- parser.add_argument("test_profile",
- metavar="<Path to one or more test profile(s)>",
- nargs='+',
- help="Path to testfile to run")
- parser.add_argument("results_path",
- type=path.realpath,
- metavar="<Results Path>",
- help="Path to results folder")
- args = parser.parse_args()
-
- # Set the platform to pass to waffle
- if args.platform:
- os.environ['PIGLIT_PLATFORM'] = args.platform
-
- # If dmesg is requested we must have serial run, this is becasue dmesg
- # isn't reliable with threaded run
- if args.dmesg:
- args.concurrency = "none"
-
- # Read the config file
- if args.config_file:
- core.PIGLIT_CONFIG.readfp(args.config_file)
- args.config_file.close()
- else:
- core.PIGLIT_CONFIG.read(os.path.join(os.path.dirname(__file__),
- 'piglit.conf'))
-
- # Pass arguments into Environment
- env = core.Environment(concurrent=args.concurrency,
- exclude_filter=args.exclude_tests,
- include_filter=args.include_tests,
- execute=args.execute,
- valgrind=args.valgrind,
- dmesg=args.dmesg,
- verbose=args.verbose)
-
- # Change working directory to the root of the piglit directory
- piglit_dir = path.dirname(path.realpath(sys.argv[0]))
- os.chdir(piglit_dir)
- core.checkDir(args.results_path, False)
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
- results = core.TestrunResult()
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
- # Set results.name
- if args.name is not None:
- results.name = args.name
- else:
- results.name = path.basename(args.results_path)
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
- # Begin json.
- result_filepath = path.join(args.results_path, 'main')
- result_file = open(result_filepath, 'w')
- json_writer = core.JSONWriter(result_file)
- json_writer.open_dict()
+""" Run a piglit test profile
- # Write out command line options for use in resuming.
- json_writer.write_dict_key('options')
- json_writer.open_dict()
- json_writer.write_dict_item('profile', args.test_profile)
- for key, value in env:
- json_writer.write_dict_item(key, value)
- if args.platform:
- json_writer.write_dict_item('platform', args.platform)
- json_writer.close_dict()
+Deprecated compatability wrapper
- json_writer.write_dict_item('name', results.name)
-
- for (key, value) in env.collectData().items():
- json_writer.write_dict_item(key, value)
-
- profile = framework.profile.merge_test_profiles(args.test_profile)
- profile.results_dir = args.results_path
-
- json_writer.write_dict_key('tests')
- json_writer.open_dict()
- time_start = time.time()
- # Set the dmesg type
- if args.dmesg:
- profile.dmesg = args.dmesg
- profile.run(env, json_writer)
- time_end = time.time()
-
- json_writer.close_dict()
-
- results.time_elapsed = time_end - time_start
- json_writer.write_dict_item('time_elapsed', results.time_elapsed)
-
- # End json.
- json_writer.close_dict()
- json_writer.file.close()
-
- print('Thank you for running Piglit!\n'
- 'Results have been written to ' + result_filepath)
+"""
+import sys
+from framework.programs.run import run
-if __name__ == "__main__":
- main()
+run(sys.argv)