[Piglit] [PATCH 0/5] Python 3 port, again

Dylan Baker baker.dylan.c at gmail.com
Thu Jul 9 14:25:40 PDT 2015


This series ports the python framework to python 3. This is an updated
version of the previous incarnations of this series, rebased on master.

So what does python3 buy us? 
First, it buys us new features, and new features in the future. Python
2.x is in maintenance mode, so no new features. Features that this
series takes advantage of:
 - builtin xz support. Everyone gets xz, no modules required, no xz
   binary required, it "just works"
 - subprocess timeouts. Finally, a reliable, cross platform method for
   allowing tests to time out
 - 'raise from' gives better error reporting
 - no argument super(), which is, admittedly probably not very
   interesting to most people, but it's awesome to me.

I have an additional series that can land after these land that take
advantage of these features:
 - a new spinner-less, lock-less Log class. With timeouts we don't need to
   worry about tests running forever, they'll be killed automatically.
   This allows us to simplify the Log class significantly, and since
   it's now lock-less we don't spend time in lock contention.


But there are still users that don't have the option of python 3!
Here's my idea for handling this:
Before I push python3 to master, I'll create a new branch,
python2-master. The idea would be that any non framework change could be
cherry picked over to this branch as long as there are uses that need
it, and they will work. Obviously any framework changes that are needed
to make this work will get backported.

This is available at my github:
https://github.com/dcbaker/piglit submit/python3

Dylan Baker (5):
  framework: Port framework to python3
  framework: Improve test timeouts
  framework/test: allow tests to set per instance timeouts from
    initializer
  framework: Simplify super calls as python3 allows
  framework: make exception reporting better using `raise from`

 CMakeLists.txt                               |   2 +-
 framework/backends/__init__.py               |   2 +-
 framework/backends/abstract.py               |  11 +-
 framework/backends/compression.py            | 103 ++---------------
 framework/backends/json.py                   |  15 ++-
 framework/backends/junit.py                  |  14 +--
 framework/core.py                            |  20 ++--
 framework/dmesg.py                           |   8 +-
 framework/grouptools.py                      |   2 +-
 framework/log.py                             |  17 ++-
 framework/profile.py                         |  32 +++---
 framework/programs/run.py                    |  10 +-
 framework/programs/summary.py                |   3 +-
 framework/results.py                         |   3 +-
 framework/status.py                          |  24 ++--
 framework/summary.py                         |  17 ++-
 framework/test/__init__.py                   |   2 +-
 framework/test/base.py                       | 160 +++++++--------------------
 framework/test/deqp.py                       |   6 +-
 framework/test/gleantest.py                  |  12 +-
 framework/test/glsl_parser_test.py           |   7 +-
 framework/test/gtest.py                      |   2 +-
 framework/test/oclconform.py                 |   2 +-
 framework/test/opencv.py                     |   2 +-
 framework/test/piglit_test.py                |  24 ++--
 framework/test/shader_test.py                |   3 +-
 framework/tests/backends_tests.py            |   4 +-
 framework/tests/base_tests.py                |  23 +++-
 framework/tests/core_tests.py                |  10 +-
 framework/tests/deqp_tests.py                |   2 +-
 framework/tests/dmesg_tests.py               |  16 +--
 framework/tests/gleantest_tests.py           |   2 +-
 framework/tests/glsl_parser_test_tests.py    |   8 +-
 framework/tests/grouptools_tests.py          |   2 -
 framework/tests/gtest_tests.py               |   2 +-
 framework/tests/integration_tests.py         |   2 +-
 framework/tests/json_backend_tests.py        |   5 +-
 framework/tests/json_results_update_tests.py |   7 +-
 framework/tests/json_tests.py                |   4 +-
 framework/tests/junit_backends_tests.py      |  15 ++-
 framework/tests/log_tests.py                 |   4 +-
 framework/tests/opencv_tests.py              |   2 +-
 framework/tests/piglit_test_tests.py         |   2 +-
 framework/tests/profile_tests.py             |   1 -
 framework/tests/results_tests.py             |   1 -
 framework/tests/run_parser_tests.py          |   2 +-
 framework/tests/shader_test_tests.py         |   2 +-
 framework/tests/status_tests.py              |   4 +-
 framework/tests/summary_tests.py             |   3 +-
 framework/tests/test_lists.py                |   2 +-
 framework/tests/utils.py                     |  22 ++--
 piglit                                       |   4 +-
 piglit-print-commands.py                     |   4 +-
 piglit-resume.py                             |   2 +-
 piglit-run.py                                |   2 +-
 piglit-summary-html.py                       |   2 +-
 piglit-summary.py                            |   2 +-
 templates/index.mako                         |   2 +-
 templates/testrun_info.mako                  |   4 +-
 tests/all.py                                 |   9 +-
 tests/cl.py                                  |   2 +-
 tests/deqp_gles3.py                          |   2 +-
 tests/es3conform.py                          |   6 +-
 tests/igt.py                                 |   6 +-
 tests/oglconform.py                          |   4 +-
 tests/quick.py                               |   1 +
 tests/xts.py                                 |   5 +-
 67 files changed, 276 insertions(+), 431 deletions(-)

-- 
2.4.5



More information about the Piglit mailing list