[Piglit] [PATCH 00/32] Rework summary

Dylan Baker baker.dylan.c at gmail.com
Fri Sep 11 15:49:26 PDT 2015


This is a pretty substantial patch series, much larger than what I
really wanted to produce, but at this point I don't see any way to
split it in a practical matter.

To sum of the changes of this series:
1) Replace the TestResult dict with an Object derived class, this allows
   us two advantages. First, it allows us to use Descriptors to create
   getters/setters. Second, it allows us to limit the memory consumption
   using __slots__
2) Replace the Summary class with several different classes. This uses
   more composition, which is nice. And also makes extensive use of lazy
   data creation. It also removes several data structures that are
   created, but really don't need to be stored, since their data is only
   used once.
3) Store the group totals in the json. This speeds up loading results by
   moving more of the code to one time use, and with compression it
   doesn't hurt too much
4) Fix the console generator. This generator was always a little weird,
   it now generates nice columns out of each result it's passed and
   generates proper comparisons. It also counts subtests now.

This is available at my github:
https://github.com/dcbaker/piglit submit/summary-rework

Dylan Baker (32):
  framework/programs/summary.py: Fix summaries compression when updating
  framework/grouptools: fix commonprefix to handle non-overlapping
    values
  framework/backends/json.py: call set_meta() on resume
  framework: replace TestResult dict with an object
  framework/results: make the result of a test the worst of its subtests
  framework: move unicode conversion handling to TestResult
  framework/results.py: Add a method to TestrunResult to calculate
    totals
  framework/results.py: Add a to_json method to the TestrunResults
  framework/results.py: add TestrunResult.from_dict method
  framework/backends/json.py: store totals data in json
  framework/summary.py: stop calculating totals at run time
  framework/summary.py: Make the text mode less weird
  framework/summary.py: make text columns width variable
  framework/summary.py: split diff generating code into toplevel
    function
  framework/summary.py: Add a class to summary for calculating
    categories
  framework/summary.py: split console generator from Summary object
  framework/summary.py: sort tests in console output
  framework/summary.py: calculate fractions and colors for html on the
    fly
  framework/summary.py: simplify templates by using a TemplateLookup
  framework/summary.py: remove the Summary object.
  framework/summary.py: add helper to turn times into time deltas
  framework/summary.py: drop HTMLIndex class
  framework/summary.py: add a module docstring
  framework/summary.py: update copyright header
  framework/status.py: Speed up status_lookup
  framework/tests/summary_tests.py: Add a few additional tests
  framework/summary.py: split summary module into a package
  framework/summary/console_.py: split summary printer out
  framework/summary/console_.py: split the code print tests out
  framework/summary/html_.py: split the html function
  framework/backends.json.py: dont resume if results.json.<comp> exists
  framework/backends.json.py: use TestrunResult.from_dict for resume

 framework/backends/abstract.py               |   2 +-
 framework/backends/json.py                   | 114 +++--
 framework/backends/junit.py                  |  30 +-
 framework/core.py                            |  21 +
 framework/dmesg.py                           |   9 +-
 framework/grouptools.py                      |   6 +-
 framework/programs/run.py                    |   2 +-
 framework/programs/summary.py                |  29 +-
 framework/results.py                         | 258 +++++++++--
 framework/status.py                          |  30 +-
 framework/summary.py                         | 620 ---------------------------
 framework/summary/__init__.py                |  29 ++
 framework/summary/common.py                  | 317 ++++++++++++++
 framework/summary/console_.py                | 113 +++++
 framework/summary/html_.py                   | 165 +++++++
 framework/test/base.py                       |  73 ++--
 framework/test/deqp.py                       |  10 +-
 framework/test/gleantest.py                  |   6 +-
 framework/test/gtest.py                      |   8 +-
 framework/test/oclconform.py                 |   6 +-
 framework/test/piglit_test.py                |   7 +-
 framework/tests/base_tests.py                |  38 +-
 framework/tests/compressed_backend_tests.py  |   3 +-
 framework/tests/deqp_tests.py                |  16 +-
 framework/tests/dmesg_tests.py               |  51 ++-
 framework/tests/gleantest_tests.py           |   4 +-
 framework/tests/grouptools_tests.py          |   5 +
 framework/tests/json_backend_tests.py        |  66 +--
 framework/tests/json_results_update_tests.py | 134 +++++-
 framework/tests/json_tests.py                |   4 +-
 framework/tests/junit_backends_tests.py      |  89 ++--
 framework/tests/piglit_test_tests.py         |  20 +-
 framework/tests/results_tests.py             | 523 +++++++++++++++++++++-
 framework/tests/summary_common_tests.py      | 373 ++++++++++++++++
 framework/tests/summary_console_tests.py     | 165 +++++++
 framework/tests/summary_html_tests.py        |  39 ++
 framework/tests/summary_tests.py             | 132 ------
 framework/tests/utils.py                     |  23 +-
 templates/index.css                          |   4 +-
 templates/index.mako                         | 177 ++++++--
 templates/test_result.mako                   |  24 +-
 tests/es3conform.py                          |   6 +-
 tests/igt.py                                 |  14 +-
 tests/xts.py                                 |  40 +-
 44 files changed, 2615 insertions(+), 1190 deletions(-)
 delete mode 100644 framework/summary.py
 create mode 100644 framework/summary/__init__.py
 create mode 100644 framework/summary/common.py
 create mode 100644 framework/summary/console_.py
 create mode 100644 framework/summary/html_.py
 create mode 100644 framework/tests/summary_common_tests.py
 create mode 100644 framework/tests/summary_console_tests.py
 create mode 100644 framework/tests/summary_html_tests.py
 delete mode 100644 framework/tests/summary_tests.py

-- 
2.5.1



More information about the Piglit mailing list