WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
Bug 70484
[WK2] add flag to only check pixel results if png files exist
https://bugs.webkit.org/show_bug.cgi?id=70484
Summary
[WK2] add flag to only check pixel results if png files exist
Fehér Zsolt
Reported
2011-10-20 02:09:06 PDT
Turn on the pixel test on WK2
Attachments
Patch
(7.18 KB, patch)
2011-10-20 02:10 PDT
,
Fehér Zsolt
no flags
Details
Formatted Diff
Diff
Patch
(8.24 KB, patch)
2011-10-20 09:15 PDT
,
Fehér Zsolt
ojan
: review-
ojan
: commit-queue-
Details
Formatted Diff
Diff
Diff
(4.00 KB, text/plain)
2011-10-26 10:13 PDT
,
Fehér Zsolt
no flags
Details
Patch
(4.14 KB, patch)
2011-10-27 01:21 PDT
,
Fehér Zsolt
no flags
Details
Formatted Diff
Diff
Patch
(4.17 KB, patch)
2011-10-28 00:43 PDT
,
Fehér Zsolt
tony
: review-
tony
: commit-queue-
Details
Formatted Diff
Diff
Patch
(10.67 KB, patch)
2011-11-20 18:22 PST
,
Fehér Zsolt
dpranke
: review-
Details
Formatted Diff
Diff
Patch
(10.70 KB, patch)
2011-11-30 05:20 PST
,
Fehér Zsolt
dpranke
: review-
dpranke
: commit-queue-
Details
Formatted Diff
Diff
Patch
(5.77 KB, patch)
2012-01-24 05:29 PST
,
Fehér Zsolt
no flags
Details
Formatted Diff
Diff
Patch
(5.95 KB, patch)
2012-01-29 19:24 PST
,
Fehér Zsolt
no flags
Details
Formatted Diff
Diff
Patch
(7.18 KB, patch)
2012-01-30 01:30 PST
,
Fehér Zsolt
no flags
Details
Formatted Diff
Diff
Patch
(11.22 KB, patch)
2012-02-08 08:59 PST
,
Fehér Zsolt
no flags
Details
Formatted Diff
Diff
Show Obsolete
(10)
View All
Add attachment
proposed patch, testcase, etc.
Fehér Zsolt
Comment 1
2011-10-20 02:10:13 PDT
Created
attachment 111744
[details]
Patch
Fehér Zsolt
Comment 2
2011-10-20 09:15:35 PDT
Created
attachment 111789
[details]
Patch
Balazs Kelemen
Comment 3
2011-10-20 09:28:13 PDT
Comment on
attachment 111744
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=111744&action=review
In general the concept is good but I'm not happy with the semantics of the new switch (wk2_pixel_test).
> Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:100 > + if self._port.driver_name() == "WebKitTestRunner" and self._port.get_option('wk2_pixel_test'): > + return self._should_run_pixel_test
1. wk2_pixel_test does not express the concept. I would use a separate switch, something like --skip-pixel-test-if-no-baseline. It would be valid only with -p (alias --pixel-tests), so it should be ignored with a warning otherwise 2. it's ok to only support it with WTR, but in that case we should die with error message if it is used with DRT
> Tools/WebKitTestRunner/TestInvocation.cpp:118 > +void TestInvocation::setIsWK2PixelTest(const std::string& expectedPixelHash) > +{ > + if (!expectedPixelHash.length()) > + return; > + m_dumpPixels = true; > + m_expectedPixelHash = expectedPixelHash; > +}
According to 1, you could do it in setIsPixelTest. You should still have an extra bool if you want to check that there is no empty hash when running without the --skip... switch, but I don't thing it is really necessary.
Ojan Vafai
Comment 4
2011-10-20 09:30:25 PDT
Comment on
attachment 111789
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=111789&action=review
> Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:289 > + optparse.make_option("--wk2-pixel-test", action="store_true", > + dest="wk2_pixel_test", help="Enable pixel-to-pixel PNG comparisons on WebKit2"),
Why not just reuse --pixel? You already know if you're webkit2 from the driver_name. Seems like you could simplify this patch a lot if you did so. If there's a reason you need a new flag, you should explain it in the changelog.
Fehér Zsolt
Comment 5
2011-10-26 10:13:32 PDT
Created
attachment 112558
[details]
Diff
Fehér Zsolt
Comment 6
2011-10-26 10:16:51 PDT
(In reply to
comment #4
)
> (From update of
attachment 111789
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=111789&action=review
> > > Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:289 > > + optparse.make_option("--wk2-pixel-test", action="store_true", > > + dest="wk2_pixel_test", help="Enable pixel-to-pixel PNG comparisons on WebKit2"), > > Why not just reuse --pixel? You already know if you're webkit2 from the driver_name. Seems like you could simplify this patch a lot if you did so. > > If there's a reason you need a new flag, you should explain it in the changelog.
The new flag have a speaking name now. What do you think, that would be good?
Fehér Zsolt
Comment 7
2011-10-27 01:21:17 PDT
Created
attachment 112648
[details]
Patch
Zoltan Horvath
Comment 8
2011-10-27 05:51:22 PDT
Comment on
attachment 112648
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=112648&action=review
If you don't set r? on the patch consider that it won't be reviewed!
> Tools/ChangeLog:9 > + we will run pixel-tests in WebKit2, when the *-expected.png file is
you don't need 'is', you need 'for' rather than 'to' => when the *-expected.png file exists for the test.
> Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:87 > + _log.error("--skip-pixel-test-if-no-baseline is only supperted in WebKitTestRunner")
supported rather than supperted
Fehér Zsolt
Comment 9
2011-10-28 00:43:49 PDT
Created
attachment 112825
[details]
Patch
Zoltan Horvath
Comment 10
2011-11-04 00:47:49 PDT
Ping for review.
Csaba Osztrogonác
Comment 11
2011-11-04 00:55:10 PDT
I cc-ed NRWT experts, Tony and Dirk. I think we should change the name of the bug, because the patch and the bug title is different. The proposed patch isn't enable pixel tests for Qt-WK2 platform, but make it possible to run pixel tests if there aren't checked in png results for all tests.
Tony Chang
Comment 12
2011-11-04 10:12:49 PDT
Comment on
attachment 112825
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=112825&action=review
Can you write some python unit tests for this flag?
> Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:113 > + if self._port.driver_name() == "WebKitTestRunner" and self._port.get_option('skip_pixel_test_if_no_baseline') and self._port.get_option('pixel_tests'):
Can you use self._options.skip_pixel_test_if_no_baseline and self._options.pixel_tests instead?
> Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:86 > + if options.skip_pixel_test_if_no_baseline and not (port.driver_name() == "WebKitTestRunner"):
Nit: != seems a little clearer than not (...)
Dirk Pranke
Comment 13
2011-11-04 17:41:22 PDT
Comment on
attachment 112825
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=112825&action=review
>> Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:113 >> + if self._port.driver_name() == "WebKitTestRunner" and self._port.get_option('skip_pixel_test_if_no_baseline') and self._port.get_option('pixel_tests'): > > Can you use self._options.skip_pixel_test_if_no_baseline and self._options.pixel_tests instead?
I think self._options is shared between this object and the enclosing worker object, meaning if you set this to False here, all subsequent tests run in that worker will also not use pixel tests. I'm guessing you don't want that.
>> Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:86 >> + if options.skip_pixel_test_if_no_baseline and not (port.driver_name() == "WebKitTestRunner"): > > Nit: != seems a little clearer than not (...)
Why is this change specific to WebKitTestRunner ? Why wouldn't we want to support this in DRT as well?
Fehér Zsolt
Comment 14
2011-11-07 07:02:32 PST
Comment on
attachment 112825
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=112825&action=review
>>> Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:86 >>> + if options.skip_pixel_test_if_no_baseline and not (port.driver_name() == "WebKitTestRunner"): >> >> Nit: != seems a little clearer than not (...) > > Why is this change specific to WebKitTestRunner ? Why wouldn't we want to support this in DRT as well?
Because we need now this patch on WK2, but an another patch we can supported in DRT also.
Fehér Zsolt
Comment 15
2011-11-07 07:06:38 PST
Comment on
attachment 112825
[details]
Patch I can make the fix, based on your comments and i write some unit test to this patch.
Fehér Zsolt
Comment 16
2011-11-20 18:22:50 PST
Created
attachment 116019
[details]
Patch The unittest, don't work for me, i think it is, becasue of a bug in nrwt. Any idea why don't work?
WebKit Review Bot
Comment 17
2011-11-20 18:25:29 PST
Attachment 116019
[details]
did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Tools/Scripts/webkitpy/layout_tests/contro..." exit_code: 1 Tools/Scripts/webkitpy/layout_tests/controllers/skip_pixel_test_if_no_baseline.py:25: expected 2 blank lines, found 1 [pep8/E302] [5] Tools/Scripts/webkitpy/layout_tests/models/test_input.py:55: no newline at end of file [pep8/W292] [5] Total errors found: 2 in 7 files If any of these errors are false positives, please file a bug against check-webkit-style.
Dirk Pranke
Comment 18
2011-11-21 12:39:23 PST
Comment on
attachment 116019
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=116019&action=review
> Tools/Scripts/webkitpy/layout_tests/controllers/worker.py:113 > + if skip_pixel_test_if_no_baseline.skip_pixel_test(self._port, test_input.test_name):
Can't you just replace this with: test_input.should_run_pixel_test = (port.expected_image(test_name) == None) and delete skip_pixel_test_if_no_baseline.py ? Also, I still don't understand why you are limiting this flag to WebKitTestRunner. It doesn't seem like anything will break if you run this on other ports?
> Tools/Scripts/webkitpy/layout_tests/port/webkit_unittest.py:159 > + if skip_pixel_test_if_no_baseline.skip_pixel_test(port, test_name):
I suggest you just inline the function here as well.
> Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:69 > + return -1
As I suggested above, I don't think this check is necessary.
Dirk Pranke
Comment 19
2011-11-21 12:39:55 PST
(In reply to
comment #16
)
> Created an attachment (id=116019) [details] > Patch > > The unittest, don't work for me, i think it is, becasue of a bug in nrwt. > Any idea why don't work?
Can you provide more information on why it isn't working? What is happening?
Fehér Zsolt
Comment 20
2011-11-22 04:41:09 PST
(In reply to
comment #19
)
> (In reply to
comment #16
) > > Created an attachment (id=116019) [details] [details] > > Patch > > > > The unittest, don't work for me, i think it is, becasue of a bug in nrwt. > > Any idea why don't work? > > Can you provide more information on why it isn't working? What is happening?
I think one of the method, which call this function work wrong. The unittest system throw this message: FAIL: test_skip_pixel_test_if_no_baseline_option (webkitpy.layout_tests.port.webkit_unittest.WebKitPortTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/feherzsolt/webkit/Tools/Scripts/webkitpy/layout_tests/port/webkit_unittest.py", line 162, in test_skip_pixel_test_if_no_baseline_option self.assertTrue(test_name in self.png_list) AssertionError: False is not true ---------------------------------------------------------------------- Ran 1237 tests in 22.667s FAILED (failures=1)
Dirk Pranke
Comment 21
2011-11-28 15:26:10 PST
(In reply to
comment #20
)
> (In reply to
comment #19
) > > (In reply to
comment #16
) > > > Created an attachment (id=116019) [details] [details] [details] > > > Patch > > > > > > The unittest, don't work for me, i think it is, becasue of a bug in nrwt. > > > Any idea why don't work? > > > > Can you provide more information on why it isn't working? What is happening? > > I think one of the method, which call this function work wrong. The unittest system throw this message: > > FAIL: test_skip_pixel_test_if_no_baseline_option (webkitpy.layout_tests.port.webkit_unittest.WebKitPortTest) > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/home/feherzsolt/webkit/Tools/Scripts/webkitpy/layout_tests/port/webkit_unittest.py", line 162, in test_skip_pixel_test_if_no_baseline_option > self.assertTrue(test_name in self.png_list) > AssertionError: False is not true >
This is telling you that skip_pixel_test returned False, i.e., that one of the test files did have an expected image, but that that test wasn't in your png_list. You'll have to add some debug statements to figure out which test it is, and what port.expected_image() is returning (and why). Also, we try not to hard-code in real test names, and the TestWebKitPort is probably using a MockHost, which hopefully means a mock filesystem with a fake list of tests (set in webkitpy/layout_tests/port/test.py). If that is true, you should use some of the fake test names instead of the real test names you're using.
> ---------------------------------------------------------------------- > Ran 1237 tests in 22.667s > > FAILED (failures=1)
Fehér Zsolt
Comment 22
2011-11-30 05:19:59 PST
(In reply to
comment #18
)
> (From update of
attachment 116019
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=116019&action=review
> > > Also, I still don't understand why you are limiting this flag to WebKitTestRunner. It doesn't seem like anything will break if you run this on other ports? >
Because we need now this patch on WK2, but an another patch we can supported in DRT also (In Bug: 72841(ID)).
Fehér Zsolt
Comment 23
2011-11-30 05:20:31 PST
Created
attachment 117175
[details]
Patch I uploaded the new patch with unittest and i made the fixes, what D. Pranke ask!
Dirk Pranke
Comment 24
2011-11-30 12:36:45 PST
Comment on
attachment 117175
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=117175&action=review
> Tools/Scripts/webkitpy/layout_tests/port/webkit_unittest.py:203 > + self.assertEquals(png_list, self.png_list)
Okay, inlining the function made it clear that we weren't actually testing anything interesting by testing just that skip_pixel_test() returns the correct value. Further, writing tests in webkit_unittest that are so heavily dependent on test.py indicated that there was something wrong. I'd just delete this whole routine. What we need to test is that the actual change in worker.py is working correctly. The best way to do that is to is to add another test to run_webkit_tests_integrationtest.py with the correct flags. See something like test_repeat_each() for an example of how to check that we only ran the tests you expected to run. Of course, the integration tests all run using the TestPort, not the WebKitPort, and so they won't be able to check the restriction on this only working with WebKitTestRunner. We can either get rid of the generic restriction on this flag (in line 67 of run_webkit_test.py), or we can add a test-wk2 port implementation to port/test.py and override port.driver_name() accordingly. I would probably vote for just removing the check in run_webkit_tests.py; I think you're being overly cautious since the command line flag is kind of obscure, you're probably the only one to use it, and you're planning to add this to DRT as well, but if you would rather be safe than sorry, adding the test-wk2 flag is fine as well. Sorry for the back-and-forth on this :(. The patch looks fine otherwise.
Fehér Zsolt
Comment 25
2011-12-12 06:02:06 PST
(In reply to
comment #24
)
> (From update of
attachment 117175
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=117175&action=review
> > > Tools/Scripts/webkitpy/layout_tests/port/webkit_unittest.py:203 > > + self.assertEquals(png_list, self.png_list) > > Okay, inlining the function made it clear that we weren't actually testing anything interesting by testing just that skip_pixel_test() returns the correct value. Further, writing tests in webkit_unittest that are so heavily dependent on test.py indicated that there was something wrong. I'd just delete this whole routine. > > What we need to test is that the actual change in worker.py is working correctly. The best way to do that is to is to add another test to run_webkit_tests_integrationtest.py with the correct flags. See something like test_repeat_each() for an example of how to check that we only ran the tests you expected to run. > > Of course, the integration tests all run using the TestPort, not the WebKitPort, and so they won't be able to check the restriction on this only working with WebKitTestRunner. We can either get rid of the generic restriction on this flag (in line 67 of run_webkit_test.py), or we can add a test-wk2 port implementation to port/test.py and override port.driver_name() accordingly. > > I would probably vote for just removing the check in run_webkit_tests.py; I think you're being overly cautious since the command line flag is kind of obscure, you're probably the only one to use it, and you're planning to add this to DRT as well, but if you would rather be safe than sorry, adding the test-wk2 flag is fine as well. > > Sorry for the back-and-forth on this :(. > > The patch looks fine otherwise.
OK, i working on it now
Fehér Zsolt
Comment 26
2012-01-24 05:29:07 PST
Created
attachment 123717
[details]
Patch Sorry for the delay, i was on leave. I corrected my patch I hope, it meets now :)
WebKit Review Bot
Comment 27
2012-01-24 07:01:26 PST
Comment on
attachment 123717
[details]
Patch
Attachment 123717
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/11212813
New failing tests: media/audio-garbage-collect.html
Balazs Kelemen
Comment 28
2012-01-24 09:27:25 PST
Comment on
attachment 123717
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=123717&action=review
> Tools/Scripts/webkitpy/layout_tests/controllers/worker.py:112 > + if self._port.driver_name() == "WebKitTestRunner" and self._port.get_option('skip_pixel_test_if_no_baseline') and self._port.get_option('pixel_tests'): > + test_input.should_run_pixel_test = (self._port.expected_image(test_input.test_name) != None)
I think a #FIXME comment telling that DRT should also support the option would be useful.
Fehér Zsolt
Comment 29
2012-01-29 19:24:43 PST
Created
attachment 124486
[details]
Patch
Fehér Zsolt
Comment 30
2012-01-30 01:30:59 PST
Created
attachment 124508
[details]
Patch
Balazs Kelemen
Comment 31
2012-01-30 01:52:27 PST
Err, I don't think we need one more iteration just because of the comment. I'm going to land the patch which has the r+ with the comment.
Balazs Kelemen
Comment 32
2012-01-30 02:07:02 PST
Comment on
attachment 123717
[details]
Patch Landed in
http://trac.webkit.org/changeset/106222
Balazs Kelemen
Comment 33
2012-01-30 02:27:33 PST
Smg is definitely wrong with this:
http://build.webkit.sed.hu/results/x86-32%20Linux%20Qt%20Release%20WebKit2/r106222%20(19365)/results.html
. Ossy is going to rollout.
Balazs Kelemen
Comment 34
2012-01-30 02:30:40 PST
Comment on
attachment 123717
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=123717&action=review
> Tools/Scripts/webkitpy/layout_tests/models/test_input.py:41 > - def __init__(self, test_name, timeout): > + def __init__(self, test_name, timeout, should_run_pixel_test=True): > """Holds the input parameters for a test. > Args:
I think this is the reason why it broke the bot. This force pixel tests always, isn't it?
Csaba Osztrogonác
Comment 35
2012-01-30 02:40:44 PST
Rollout landed in
http://trac.webkit.org/changeset/106224
Csaba Osztrogonác
Comment 36
2012-01-30 02:46:35 PST
And an other thing is wrong. Check
http://build.webkit.sed.hu/results/x86-32%20Linux%20Qt%20Release%20WebKit2/r106222%20%2819365%29/results.html
diff URL's don't work, because diff files aren't in the archive:
http://build.webkit.sed.hu/builders/x86-32%20Linux%20Qt%20Release%20WebKit2/builds/19365/steps/archive-test-results/logs/stdio
Fehér Zsolt
Comment 37
2012-01-30 06:05:28 PST
(In reply to
comment #34
)
> (From update of
attachment 123717
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=123717&action=review
> > > Tools/Scripts/webkitpy/layout_tests/models/test_input.py:41 > > - def __init__(self, test_name, timeout): > > + def __init__(self, test_name, timeout, should_run_pixel_test=True): > > """Holds the input parameters for a test. > > Args: > > I think this is the reason why it broke the bot. This force pixel tests always, isn't it?
I don't think so, why i use this variable only, when the --skip-pixel-test-if-no-baseline option is enabled
Fehér Zsolt
Comment 38
2012-02-08 08:59:18 PST
Created
attachment 126093
[details]
Patch I did the repairs.
WebKit Review Bot
Comment 39
2012-02-08 11:59:54 PST
Comment on
attachment 126093
[details]
Patch Clearing flags on attachment: 126093 Committed
r107113
: <
http://trac.webkit.org/changeset/107113
>
WebKit Review Bot
Comment 40
2012-02-08 12:00:04 PST
All reviewed patches have been landed. Closing bug.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug