[Bug 48912] New: Allow blacklisting unreliable and always new failures
WineHQ Bugzilla
wine-bugs at winehq.org
Sat Apr 11 04:47:10 CDT 2020
https://bugs.winehq.org/show_bug.cgi?id=48912
Bug ID: 48912
Summary: Allow blacklisting unreliable and always new failures
Product: Wine-Testbot
Version: unspecified
Hardware: x86
OS: Linux
Status: NEW
Severity: normal
Priority: P2
Component: unknown
Assignee: wine-bugs at winehq.org
Reporter: fgouget at codeweavers.com
Distribution: ---
A number of tests produce false positives because:
* Either the failure message contains a value that changes with each run (e.g.
an HWND). In some cases these values are really necessary for diagnosis and
moving them to a separate line would make the code quite a bit more complex.
* Or the test fails intermittently and is hard to fix. Sometimes the cause of
the failures may also come from external factors such as bugs in QEmu (for
instance long execution delays causing timeouts).
* Sometimes the intermittent failure is the product of a new Windows version or
configuration, which requires investigating before a fix is found.
In all cases the tests should be fixed eventually, but a solution is needed for
the interim so these tests to not make the TestBot so unreliable that its
results are ignored.
So the goal is to provide a way to blacklist some test failures so they do not
cause a patch to be rejected. Some safeguards are needed to ensure that:
* Failures are not blacklisted lightly. The preference should always be to fix
the test.
* The blacklist does not get so large that it becomes hard to maintain.
* Once a test is fixed the corresponding blacklist entries are removed in a
timely fashion.
* There is still an incentive to fix the tests.
So here is a proposal for implementing this blacklist:
* Each blacklist entry should be associated with a Wine bug describing the
issue. That bug should provide some minimal diagnosis: whether it's a new
Windows behavior, a race condition or some issue that was reported to QEmu.
That would ensure we know why the blacklist entry was added. One could also
check the status of the bug when reviewing the blacklist entries. A closed bug
would be a strong hint that the blacklist entry is no longer needed.
* Rather than blacklisting whole test units, blacklist entries should target
specific test failures via a regular expression. Besides being finer grained
this would be useful for cases like user32:win which has different issues
depending on the locale and where each should be linked to a different bug
(bugs 48815, 48819 and 48820).
* The TestBot should record when each blacklist entry was last used. This
relies on having the above regular expression since without it the TestBot
would not know anything beyond 'the test unit was run and had failures'. Also
the regular expression would only be used against *new* failures. So this would
really record the last time the blacklist entry was actually useful.
An entry that was unused for a long time would be a prime candidate for
reviewing the corresponding bug and for removal. (Note: The blacklist would
also be used on WineTest reports so it would get a chance of matching its
target at least 5 days / week).
* The blacklist entries would only be needed for 'base' test configurations
since they are the only ones wine-devel patches run on.
* There should be a page listing the blacklist entries so developers have a
good starting point to work on them.
* Ideally the blacklist page would also point to the tasks where the blacklist
was last used. Since most of the blacklisted failures are either intermittent
or specific to a given test configuration this would make it easier for
developers to find reports where the failure did happen.
Note that Wine VMs often test multiple configurations per task (e.g. wow32
and wow64, different locales), each producing its own test report. So pointing
at just the task would leave the developer guessing which report should be
looked at. But that may be sufficient guidance.
* (test:unit, testbot-vm) tuples make it impossible to target a specific Wine
test configuration such as a specific locale since they all run on the same VM.
Similarly it would make blacklisting bitness-blind on Windows VMs. If necessary
the tuple could be extended either with the specific mission the blacklist
applies to, or with the basename of the corresponding report (the latter being
easier to use in comparisons). Whether that's practical and worth the effort
remains to be determined. One complication for instance is that this would lead
to more blacklist entries: many 64 bit VMs would need two entries, one for 32
bit tests and one for 64 bit tests.
* Pseudo database schema and sample use:
FailureBlacklists
-----------------
PK Bug 48815
PK TestModule user32
PK TestUnit win
Name 0x738 message
FailureRegExp Test failed: hwnd [0-9A-F]{8,16} message 0738
LastUse 2020-03-27
FailureBlacklistVMs
-------------------
PK Bug 48815
PK TestModule user32
PK TestUnit win
PK VMName Entries for w1064v1709, w1064v1809, etc.
(48815, user32, win, w1064v1709)
(48815, user32, win, w1064v1809)
(48815, user32, win, w1064v1809_2scr)
...
FailureBlacklistUses (optionally)
---------------------------------
PK Bug
PK TestModule
PK TestUnit
PK JobId
PK StepNo
PK TaskNo
(48815, user32, win, 68507, 1, 7)
(48815, user32, win, 68508, 1, 7)
...
--
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.
More information about the wine-bugs
mailing list