[Piglit] [PATCH v3 3/3] framework/backends/json: Don't convert to TestrunResult while updating

Michel Dänzer michel at daenzer.net
Tue Oct 25 06:10:04 UTC 2016

On 13/10/16 05:59 AM, Dylan Baker wrote:
> This changes the way updates are done in the backend, instead of
> converting to a TestrunResult immediately, all of the transformations
> are done to the JSON data in it's rawest form, ie, as dicts and lists,
> and then transform to a TestrunResult (and children) after that.
> This makes the loading code more robust and simpler, since it's
> decoupled from the representation, making the transformations easier to
> test and manage.
> Part of this change is fixing the .to_json and .from_dict methods, many
> of which "worked" because they're short comings were papered over by
> using json.load with a custom decoder. This patch fixes them to actually
> work correctly. Despite my best attempts I couldn't decouple this work
> for this patch because of the close coupling of the JSON loading code
> and the class representations.
> There are a number of fixups to the tests in this patch, since a number
> of issues were being covered by the TestrunResult.to_json() method
> filling it missing values.
> Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>

This change broke HTML summary generation for me. Interestingly, two
possible invocations fail slightly differently:

> ./piglit summary html summary/quick_cl results/quick_cl.20161024-baseline results/quick_cl.20161025-baseline
usage: piglit [-h] {print-cmd,run,resume,summary} ...

positional arguments:
    print-cmd           Print piglit commands, one per line.
    run                 Run a piglit test
    resume              resume an interrupted piglit run
    summary             summary generators

optional arguments:
  -h, --help            show this help message and exit

> ./piglit-summary-html.py summary/quick_cl results/quick_cl.20161024-baseline results/quick_cl.20161025-baseline
/home/daenzer/src/piglit-git/piglit/framework/test/base.py:77: UserWarning: Timeouts are not available
  warnings.warn('Timeouts are not available')
Traceback (most recent call last):
  File "./piglit-summary-html.py", line 35, in <module>
    html([i.decode('utf-8') for i in sys.argv[1:]])
  File "/home/daenzer/src/piglit-git/piglit/framework/exceptions.py", line 51, in _inner
    func(*args, **kwargs)
  File "/home/daenzer/src/piglit-git/piglit/framework/programs/summary.py", line 117, in html
    summary.html(args.resultsFiles, args.summaryDir, args.exclude_details)
  File "/home/daenzer/src/piglit-git/piglit/framework/summary/html_.py", line 178, in html
    _make_testrun_info(results, destination, exclude)
  File "/home/daenzer/src/piglit-git/piglit/framework/summary/html_.py", line 100, in _make_testrun_info
AttributeError: 'dict' object has no attribute 'delta'

Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer

More information about the Piglit mailing list