[PATCH weston v3 00/15] Implement screenshot-based testing with the headless renderer

Derek Foreman derekf at osg.samsung.com
Thu May 21 14:44:41 PDT 2015


With the tiny stride change mentioned on IRC, which, for those that
weren't present, was basically little more than:
if (stride != bpp * reference->width) FAIL
in load_surface_from_png()

for the series:
Reviewed-By: Derek Foreman <derekf at osg.samsung.com>


On 21/05/15 03:39 AM, Bryce Harrington wrote:
> Thought I'd try one last run at the football...
> 
> This series adds support for implementing test cases that can check
> rendering output without needing connection to a physical output.  It
> utilizes the pixman renderer in the headless backend to generate
> screenshots at the request of the test client.
> 
> The test creates a shm buffer and passes it to the server via the
> Weston-Test protocol ('capture_screenshot').  The server then renders
> the display contents into the buffer and returns it as a response
> ('capture_screenshot_done').
> 
> The test then loads a corresponding reference PNG from disk using Cairo,
> and then compares it with the captured screenshot.  Note that the
> screenshot includes the current time in the desktop clock, which will of
> course be different in the captured screenshot from the reference image.
> So this checks a small clipped out section of each of the two images to
> verify congruence.
> 
> By default, Wayland fades in the display and will show a patterned
> background.  The former feature causes a black or nearly-black image to
> be captured (the darkness of which may vary from system to system), and
> the latter merely adds noise in our comparison, so both features are
> disabled via a test-specific configuration .ini file.
> 
> [Update v2]
>  * Refactor cairo out of the test client backend code entirely
>    by utilizing the weston test surface structure to carry the
>    specific data that the check_ routines need.
>  * Drop refactoring redundant pixel copying code to shared
>  * Take stride and bpp into account in check functions
>  * In test case, set the bpp for the screenshot
>  * Fix screenshot protocol description
>  * Convert C++ style comments to C
>  * Don't leak screenshot object
>  * s/ec/compositor/
>  * Instead of spinning on client_roundtrip, check for client's wl_display
>  * Drop unneeded wl_surface in test case
>  * Restore missing weston_log in idle_launch_client()
>  * Drop unused test object from capture_screenshot
>  * check_ function variable cleanup
>  * Prefer tracking stride rather than bpp
>  * Cleanup character calculation in check_ routines
>  * Drop unnecessary data copying before write to disk
>  * Split up test case code into several functions
>  * Use screenshot_output_filename() so output files respect the
>    WESTON_TEST_OUTPUT_PATH env var
> 
> [Update v3]
>  * Stripped out support for handling dissimilar strides.  This probably
>    will never come up in practice; if it does it can be handled then.
>  * Improve code style in a few places.
> 
> 
> Bryce Harrington (15):
>   tests: Add error handling for system calls
>   tests: Add client helper routines for output and reference filenames
>   tests: Add an xmalloc helper function
>   tests: Add surface checks
>   tests: Support --config to enable tests to override config defaults
>   protocol: Add test screenshot capability
>   tests: Add screenshot recording capability to weston-test
>   tests: Handle screenshot done event in weston-test
>   tests: Add internal test for the weston test screenshot capability
>   tests: Add write_surface_as_png() helper
>   tests: Add create_screenshot_surface()
>   tests: Add load_surface_from_png()
>   tests: Add check_surfaces_geometry()
>   tests: Add capture_screenshot_of_output()
>   tests: Fix code style on path/filename routines
> 
>  Makefile.am                                |  23 ++-
>  protocol/weston-test.xml                   |  16 ++
>  tests/internal-screenshot-test.c           | 233 +++++++++++++++++++++++++++
>  tests/internal-screenshot.ini              |   3 +
>  tests/reference/internal-screenshot-00.png | Bin 0 -> 5149 bytes
>  tests/weston-test-client-helper.c          | 164 +++++++++++++++++++
>  tests/weston-test-client-helper.h          |  40 ++++-
>  tests/weston-test.c                        | 243 +++++++++++++++++++++++++++++
>  tests/weston-tests-env                     |  18 ++-
>  9 files changed, 728 insertions(+), 12 deletions(-)
>  create mode 100644 tests/internal-screenshot-test.c
>  create mode 100644 tests/internal-screenshot.ini
>  create mode 100644 tests/reference/internal-screenshot-00.png
> 



More information about the wayland-devel mailing list