| Summary: | Improve some LayoutTests/http/tests/appcache tests, reduce flakey output | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | WebKit | Reporter: | Joseph Pecoraro <joepeck> | ||||||
| Component: | Tools / Tests | Assignee: | Nobody <webkit-unassigned> | ||||||
| Status: | NEW --- | ||||||||
| Severity: | Normal | CC: | ap, commit-queue, joepeck, mkwst | ||||||
| Priority: | P2 | ||||||||
| Version: | 528+ (Nightly build) | ||||||||
| Hardware: | Unspecified | ||||||||
| OS: | Unspecified | ||||||||
| See Also: | https://bugs.webkit.org/show_bug.cgi?id=153503 | ||||||||
| Attachments: |
|
||||||||
|
Description
Joseph Pecoraro
2015-07-31 19:55:26 PDT
Created attachment 257990 [details]
[PATCH] Proposed Fix
Could you please tell more about it the state that can make the results different? Can it be reset between tests? Note, I didn't look at these tests now, so maybe it's an obvious silly question - sorry if that's the case. (In reply to comment #2) > Could you please tell more about it the state that can make the results > different? Can it be reset between tests? The tests have a static manifest URL like: <html manifest="resources/fail-on-update.php"> It looks like ultimately they test the behavior of applicationCache.update(), but only if the server's response for that manifest URL was what they needed. When the test runs, if the server's manifest response is not what it needed it sends a sync XHR to the server to change its state, and reloads the page until it gets the manifest response's state it wants. Because the state is on the server, and the URL is a static URL that doesn't change, then running this test in parallel can be problematic. If two workers run the same test they may both be modifying the state of the server, or on repeated loads the initial state of the server may be different than normal. Since I'm unsure what ASSERT conditions were being tested by the test, I didn't investigate rewriting the test in a different way. It seemed the only flakiness was the new CONSOLE MESSAGE output, so disabling that seemed reasonable. Ugh, we should not have multiple tests use the same state server side! Did I overlook these tests? fail-on-update-2 uses a different manifest, resources/fail-on-update-2.php. (In reply to comment #5) > fail-on-update-2 uses a different manifest, resources/fail-on-update-2.php. So, I tried adding back the original ASSERT, and was unable to trigger it with these tests. We could tweak the test, but I'm not sure what it was originally testing is actually still being tested anymore. I think that part of the answer may be to have a non-cached main resource that resets the state, and then navigates to the actual test. (In reply to comment #7) > I think that part of the answer may be to have a non-cached main resource > that resets the state, and then navigates to the actual test. I just tried an approach that resets the server, then navigates and runs the real test. It was still flakey locally (1 out of 200 failures). I'm going to just mark this test as flakey. I'll attach my WIP patch. Created attachment 258230 [details]
[WIP] Attempted to Reset Server and Redirect to Test
|