Module: tools
Branch: master
Commit: 61d6ba6bb861ee650e5db62a943a1393ff503bb3
URL: https://source.winehq.org/git/tools.git/?a=commit;h=61d6ba6bb861ee650e5db62…
Author: Francois Gouget <fgouget(a)codeweavers.com>
Date: Mon May 17 10:24:00 2021 +0200
winetest/build-patterns: Add links to the related bugs.
Query Wine's bugzilla to identify the bugs related to a given test unit,
show basic information about them and link to them.
Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
---
winetest/build-patterns | 86 ++++++++++++++++++++++++++++++++++++++++++++++++-
winetest/report.css | 10 ++++++
winetest/winetest.conf | 2 ++
3 files changed, 97 insertions(+), 1 deletion(-)
diff --git a/winetest/build-patterns b/winetest/build-patterns
index de00461..3c9b8aa 100755
--- a/winetest/build-patterns
+++ b/winetest/build-patterns
@@ -21,6 +21,9 @@ use warnings;
use open ':utf8';
use CGI qw(:standard);
+use Text::CSV::Encoded;
+use Time::Piece;
+
sub BEGIN
{
if ($0 !~ m=^/=)
@@ -31,7 +34,7 @@ sub BEGIN
}
unshift @INC, $1 if ($0 =~ m=^(/.*)/[^/]+$=);
}
-use vars qw/$workdir $gitdir $gitweb @groups $patternbuilds $fixed_threshold/;
+use vars qw/$workdir $bugweb $gitdir $gitweb @groups $patternbuilds $fixed_threshold/;
require "winetest.conf";
my $name0=$0;
@@ -745,6 +748,85 @@ if (open(my $fh, "-|", $cmd))
}
+#
+# Collect the related bugs
+#
+
+# A hashtable of bugs indexed by their id.
+# Each object has the following fields:
+#
+# - id
+# The bug unique identifier.
+#
+# - mtime
+# The bug's last modification timestamp.
+#
+# - class
+# The CSS class used for presenting the bug.
+#
+# - desc
+# The bug's one-line description.
+my %bugs;
+
+my $old_build_date = $sortedbuilds[0]->{date};
+my $mid_build_date = $sortedbuilds[int(@sortedbuilds/2)]->{date};
+
+sub create_bug($$$)
+{
+ my ($bugid, $mtime, $desc) = @_;
+
+ my $t = Time::Piece->strptime($mtime, "%Y-%m-%d %H:%M:%S");
+ return {
+ id => $bugid,
+ mtime => $t->epoch,
+ class => $t < $old_build_date ? "bugold" :
+ $t < $mid_build_date ? "buginactive" : "bugactive",
+ desc => $desc,
+ };
+}
+
+$cmd = "wget -qO- '$bugweb/buglist.cgi?product=Wine&product=Wine-Testbot&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=NEEDINFO&keywords=source%2Ctestcase&keywords_type=allwords&rep_platform=x86&rep_platform=x86-64&columnlist=changeddate%2Cshort_desc&query_format=advanced&ctype=csv'";
+if (open(my $fh, "-|", $cmd))
+{
+ <$fh>; # skip the header line
+
+ my $csv = Text::CSV::Encoded->new({ binary => 1 });
+ while (my $line = <$fh>)
+ {
+ if (!$csv->parse($line))
+ {
+ error("could not parse line: ", $csv->error_input, "\n");
+ next;
+ }
+
+ my ($bugid, $mtime, $desc) = $csv->fields();
+ my $teststr = $desc;
+ while ($teststr =~ s~\b([_.a-z0-9-]+)(?:/tests/|/|:)([_a-z0-9]+)\b~ ~)
+ {
+ my ($module, $unit) = ($1, $2);
+ my $test = $tests{"$module:$unit"};
+ next if (!$test);
+ $bugs{$bugid} ||= create_bug($bugid, $mtime, $desc);
+ push @{$test->{bugs}}, $bugs{$bugid};
+ }
+ }
+ close($fh);
+
+ # Put the list of related bugs in the test's desc field
+ foreach my $test (values %tests)
+ {
+ next if (!$test->{bugs});
+ $test->{desc} = "<p>Related bugs:<br>";
+ foreach my $bug (sort { $a->{mtime} <=> $b->{mtime} } @{$test->{bugs}})
+ {
+ $test->{desc} .= "<a href='$bugweb/show_bug.cgi?id=$bug->{id}'>$bug->{id}</a> <span class='$bug->{class}'>$bug->{desc}</span>";
+ $test->{desc} .= "<br>";
+ }
+ $test->{desc} .= "</p>";
+ }
+}
+
+
#
# Compute color gradients
#
@@ -1258,6 +1340,8 @@ EOF
<li>Each result is also color coded to make the patterns pop out. There is one color per type of result (crash , timeout, etc.), and one per number of failures (to help detect changes).</li>
<li>Failure modes that have not been seen before (test that newly crashes, new failure count, etc.) are highlighted, as well as the configuration names in which they appear.</li>
<li>Below the patterns is a line showing which builds have potentially related commits if any.
+ <li>Bugs related to a test are shown above the pattern. <span class='bugactive'>New (and recently modified) bugs</span> are highlighted. <span class='buginactive'>Slightly older bugs</span> are also highlighted as a reminder to investigate them while the pattern may still contain traces of their inception.</li>
+ <li>Related bugs should have the <i>source</i> and <i>testcase</i> keywords, and their description should contain <i>module</i>:<i>unit</i>, <i>module</i>/<i>unit</i> or <i>module</i>/tests/<i>unit</i>.
</ul>
<p>The patterns are grouped according to the likelyhood that they contain new failures:</p>
diff --git a/winetest/report.css b/winetest/report.css
index f789808..05ee035 100644
--- a/winetest/report.css
+++ b/winetest/report.css
@@ -126,3 +126,13 @@ div.pattern :hover { color: black; text-decoration: underline; }
.commitm {
font-style: italic;
}
+
+/* .bugold */
+.buginactive {
+ color: #cc0000;
+ font-weight: bold;
+}
+.bugactive {
+ color: #000066;
+ font-weight: bold;
+}
diff --git a/winetest/winetest.conf b/winetest/winetest.conf
index 3041cf7..5ac2261 100644
--- a/winetest/winetest.conf
+++ b/winetest/winetest.conf
@@ -2,6 +2,8 @@
$workdir = "/home/winehq/opt/winetest";
+$bugweb = "https://bugs.winehq.org/";
+
$gitdir = "/home/winehq/opt/source/git/wine.git";
$gitweb = "//source.winehq.org/git/wine.git";
Module: tools
Branch: master
Commit: 37ed8690566aebf40867216d9f37c7937eff6c23
URL: https://source.winehq.org/git/tools.git/?a=commit;h=37ed8690566aebf40867216…
Author: Francois Gouget <fgouget(a)codeweavers.com>
Date: Mon May 17 10:23:56 2021 +0200
winetest/build-patterns: Fix the new failure modes description.
Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
---
winetest/build-patterns | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/winetest/build-patterns b/winetest/build-patterns
index e6bdf97..de00461 100755
--- a/winetest/build-patterns
+++ b/winetest/build-patterns
@@ -1256,7 +1256,7 @@ EOF
<li>Lines with a _N suffix are when WineTest was run more than once for a test configuration + build combination. They are rare and thus hang at the bottom of the pattern to not disrupt it.</li>
<li>Each cell is a single letter describing the result for that test. See the tooltips for a description. Click on the letter to go to that result page.</li>
<li>Each result is also color coded to make the patterns pop out. There is one color per type of result (crash , timeout, etc.), and one per number of failures (to help detect changes).</li>
- <li>Failure modes that have not been seen before (test that newly crashes, new failure count, etc.) are highlighted, as well as the configuration names in which it appears.</li>
+ <li>Failure modes that have not been seen before (test that newly crashes, new failure count, etc.) are highlighted, as well as the configuration names in which they appear.</li>
<li>Below the patterns is a line showing which builds have potentially related commits if any.
</ul>
Module: website
Branch: master
Commit: 21455531cfcabed2c0dafdee64c5ba8bbfd12b37
URL: https://source.winehq.org/git/website.git/?a=commit;h=21455531cfcabed2c0daf…
Author: Zhenbo Li <litimetal(a)gmail.com>
Date: Sun May 16 16:09:55 2021 +0800
OSPP Summer 2021.
Signed-off-by: Zhenbo Li <litimetal(a)gmail.com>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
---
news/en/2021051601.xml | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/news/en/2021051601.xml b/news/en/2021051601.xml
new file mode 100644
index 00000000..0c00b1b9
--- /dev/null
+++ b/news/en/2021051601.xml
@@ -0,0 +1,9 @@
+<news>
+<date>May 16, 2021</date>
+<title>Participating in OSPP Summer 2021</title>
+<body>
+<p> The Wine Project is selected as a community of <a href="https://summer.iscas.ac.cn/#/?lang=en">OSPP Summer 2021</a>.
+This is our first time participating in this event. All students who are interested in Wine are welcome! Please have a look for potential proposals you might be interested in: <a href="https://wiki.winehq.org/Ospp_Summer_Code">https://wiki.winehq.org/Ospp_Summer_Code</a>. It's great if you have your own idea. Please don't hesitate to post it on the wine-devel mailing list.</p>
+<p>The student proposal deadline is June 12th, UTC. </p>
+<p>See the <a href="https://summer.iscas.ac.cn/help/en/">OSPP Summer FAQ</a> for more details.</p>
+</body></news>