<div dir="ltr">Pardon me for the delayed response. I was on a vacation.<div><br></div><div>Thank you very much for the reply. As I told I am new to Wayland (indeed new to Display server). I am going through the documentation of the Wayland which is available in the website. </div>

<div><br></div><div>My understanding of Wayland is very little, so I won't be able to develop the test suite myself. I will now start going through the code and logs to understand how Wayland actually works. If any of you can guide me initially, I would be happy to develop.</div>

<div><br></div><div>Thank-you,</div><div>Sri</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Apr 17, 2014 at 12:23 PM, Pekka Paalanen <span dir="ltr"><<a href="mailto:ppaalanen@gmail.com" target="_blank">ppaalanen@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Wed, 16 Apr 2014 20:41:50 +0000<br>
"Bryce W. Harrington" <<a href="mailto:b.harrington@samsung.com">b.harrington@samsung.com</a>> wrote:<br>
<br>
> On Wed, Apr 16, 2014 at 08:51:21AM +0300, Pekka Paalanen wrote:<br>
> > On Tue, 15 Apr 2014 19:08:12 +0000<br>
> > "Bryce W. Harrington" <<a href="mailto:b.harrington@samsung.com">b.harrington@samsung.com</a>> wrote:<br>
> ><br>
> > > Maybe adding more tests?  Any particular features recently added that<br>
> > > could benefit from tests added?<br>
> ><br>
> > Yes! That is a good one. Either adding completely new tests, or maybe<br>
> > working with Marek Chalupa in converting all possible FAIL_TEST cases to<br>
> > normal TEST cases, as permitted by Marek's<br>
> > <a href="http://lists.freedesktop.org/archives/wayland-devel/2014-April/014190.html" target="_blank">http://lists.freedesktop.org/archives/wayland-devel/2014-April/014190.html</a><br>
> ><br>
> > I can't list any features off-hand that would need new tests which would<br>
> > be easy to implement.<br>
><br>
> Would there be value to just basic unit tests on some of the established<br>
> API's?  E.g. like take xdg-shell's API, check passing in negative or<br>
> zero dimentions, crazy long strings for string params, stuff like that.<br>
> A lot of the protocol's code is generated so it's unclear to me whether<br>
> this level of testing would be useful or not, but if it is, it tends to<br>
> be pretty newbie-friendly.<br>
<br>
Even when the wrappers are generated, argument validity checks are<br>
written manually, so yes, there would be value in writing those.<br>
<br>
Another easy bit is testing object destruction orders for somehow<br>
related objects. Like if you create a wl_viewport for wl_surface, and<br>
then the wl_surface is destroyed, the wl_viewport should be inert and<br>
using it should only be ignored in the compositor, not cause crashes or<br>
protocol errors. "Inert" is a specific term in the specification<br>
language for exactly that.<br>
<br>
The sub-surface tests do extensive destroy order testing, but I think<br>
it might lack testing the "ignore" part, and I'm sure there would be<br>
other places to add more such tests.<br>
<br>
Also, every defined protocol error in the protocol specifications should<br>
be excercised by a test, that should be easy, too.<br>
<br>
However, I'm not sure if xdg_shell particularly is a good target at the<br>
moment, as I think there might still be changes coming?<br>
<br>
> > But I guess we should at some point hook up a<br>
> > real renderer to the headless backend, and add infrastructure for the<br>
> > test framework to do screencaptures, so we could test also rendering<br>
> > and things like window stacking and surface/buffer transformations.<br>
><br>
> That sounds keen, and could open up a lot of testing potential.  Shame<br>
> it's not already in place!  Could you elaborate on how you think this<br>
> could be created?  I'd like to explore this further myself.<br>
<br>
Well, there is the test protocol extension, you could add<br>
client-initiated screenshooting feature to it, perhaps on a designated<br>
sub-rectangle.<br>
<br>
Easiest for headless would probably be to start by plugging in the<br>
pixman renderer, and defining a hardcoded single-resolution output.<br>
<br>
Since tests also run the desktop-shell client which draws "random"<br>
things like takes colors from configs and paints the clock, maybe it<br>
could on init check if the test extension is advertised by the<br>
compositor. If the test extension is there, desktop-shell client would<br>
use only hardcoded configs, and paint a hardcoded time in the clock,<br>
etc. so that the rendered output should always be the same.<br>
<br>
Window initial position randomization in shell.c might be a problem.<br>
<br>
You'd also need to save the screenshots into image files, so a<br>
developer can check the result.<br>
<br>
> > Pixman's fuzzer test might be a good inspiration on how to actually do<br>
> > the tests once the infrastructure is up:<br>
> > <a href="http://lists.freedesktop.org/archives/pixman/2014-April/003229.html" target="_blank">http://lists.freedesktop.org/archives/pixman/2014-April/003229.html</a><br>
> > Provided we can guarantee pixel-perfect rendering, which might not<br>
> > always be true, so a checksum-based checking might not always work.<br>
><br>
> I take it this is similar to the Cairo testsuite's perceptual diff<br>
> stuff?  (Checksumming two bitmaps pixel by pixel)<br>
<br>
I suppose, though I haven't looked at Cairo.<br>
<br>
> What we're seeing in Cairo is that sometimes pixel differences indicate<br>
> issues, but a lot of time it's ignorable, and deciding which is which is<br>
> fairly hard.  But used in situations where you are 100% sure exactly<br>
> what the images should look like, this can be quite effective.<br>
<br>
Yes, Pixman does the same separation. Some tests require bit-perfect<br>
results, others are known to have a little variance.<br>
<br>
I suppose with a Pixman renderer, we can have the guarantees Pixman<br>
has since we know which operations we use (or do we?), but with a<br>
gl-renderer, or say, rpi-renderer, I don't think we can require<br>
bit-perfect reproduction.<br>
<br>
We can already choose the backend to use when running 'make check', we<br>
could have the headless backend expose pixman renderer by default and<br>
software rendered gl-renderer as an option.<br>
<br>
> In practice, just having all the different rendering tests can be a<br>
> handy workload for exposing crashes.  I suspect coupling it with some<br>
> timing measurements it might also help expose performance regressions.<br>
<br>
I don't think we can make automated performance testing too reliable. I<br>
wouldn't want a build-bot for some distribution to fail 'make check'<br>
just because it runs in a virtual machine on some heavily loaded<br>
hardware.<br>
<br>
So performance testing would be a separate case.<br>
<br>
> > But I think that is getting quite heavy for just introductory work.<br>
><br>
> For something like this, 80% of the work is just deciding on a good<br>
> design.  Most of the implementation work is going to be basic coding.<br>
> There's going to be a few hard tasks (like attaching a snapshot renderer<br>
> functionality to the headless backend), but even those are likely to get<br>
> owners if they're well enough described.<br>
<br>
Right. We need someone to put in the infrastructure. :-)<br>
<br>
<br>
Thanks,<br>
pq<br>
</blockquote></div><br></div>