RFC: Split the test.w.org Windows 10 page

Francois Gouget fgouget at codeweavers.com
Mon Feb 15 13:14:13 CST 2021


So the Windows 10 page is getting a ton of results, in part because 
now there are 11 different Windows 10 versions (of which we test 7).

So the idea would be to split it into multiple pages.
For reference here are the number of test results we typically get per 
Windows 10 version:

1507  7
1511
1607  1
1703
1709  4
1803
1809  6
1903
1909  5
2004  11 (w10pro64 locales, always current spring) 
2009  9  (mostly w1064, always current fall)

Note: my goal going forward is to always keep the Windows 10 VM running 
the locale tests (w10pro64) on the latest spring release; while the VM 
(w1064) testing the different Windows 10 versions and other 'esoteric' 
configurations (dual screen, test signing) would only get the fall 
releases.


The patch below creates four-release groups, so one new group every 
other year, except for the latest releases. So Win10.15, Win10.17, 
Win10.19 and Win10.20. It does mean that Win10.20 gets 20+ results. 
(maybe better names would be Win1507+, Win1709+, Win1909+ and Win2004+)

Another approach would be to have one group per fall release and put the 
next fall release with it. Though we would not have much in the Win1607 
group.

Whatever groups we decide on, one question is whether to keep the 
results from the latest spring and fall releases together as that means 
20+ results.

To me it makes sense to have the all the results for the 'latest' 
version together. But it may also be good to have the locale results on 
one page and all the 'normal' ones on another. Then we'd presumably just 
create separate groups for the latest spring and fall releases; which 
would be simpler than having dissect check the locale.

I have also not tested what happens when a test result gets migrated 
from one group to another (the patch does not account for the 
existing results in the 'win10' group, though that should be easy).

At least dissect prefixes the results with the Windows version so we can 
then decide to group the results any way we want without having to 
re-run dissect. In the worst case all will be good once the old results 
expire. But we may be able to move existing results from one page to 
another by touching or deleting some summary files.

Also let me know if you want more spring releases.


---
 winetest/build-index | 12 ++++++---
 winetest/dissect     | 61 +++++++++++++++++++++++++++-----------------
 winetest/gather      | 22 +++++++++++++---
 3 files changed, 64 insertions(+), 31 deletions(-)

diff --git a/winetest/build-index b/winetest/build-index
index 58f28c0c1..203871c71 100755
--- a/winetest/build-index
+++ b/winetest/build-index
@@ -96,7 +96,10 @@ my %vista   = (name => "Vista");
 my %w2k8    = (name => "2008");
 my %win7    = (name => "Win7");
 my %win8    = (name => "Win8");
-my %win10   = (name => "Win10");
+my %win10_15= (name => "Win10.15");
+my %win10_17= (name => "Win10.17");
+my %win10_19= (name => "Win10.19");
+my %win10_20= (name => "Win10.20");
 my %unknown = (name => "Other");
 my %linux   = (name => "Linux");
 my %mac     = (name => "Mac");
@@ -105,7 +108,10 @@ my %solaris = (name => "Solaris");
 my %wine    = (name => "Wine");
 
 # Define the order of version groups in the summary
-my @groups = (\%w95, \%w98, \%me, \%nt3, \%nt4, \%w2k, \%xp, \%w2k3, \%vista, \%w2k8, \%win7, \%win8, \%win10,
+my @groups = (\%w95, \%w98, \%me,
+              \%nt3, \%nt4, \%w2k, \%xp, \%w2k3,
+              \%vista, \%w2k8, \%win7, \%win8,
+              \%win10_15, \%win10_17, \%win10_19, \%win10_20,
               \%unknown, \%linux, \%mac, \%bsd, \%solaris, \%wine);
 
 
@@ -356,7 +362,7 @@ foreach my $build (@builds)
     {
         while (<TOTAL>)
         {
-            if (/^([A-Za-z0-9]+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)(?:\s+(\d+))?/)
+            if (/^([A-Za-z0-9.]+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)(?:\s+(\d+))?/)
             {
                 my ($name, $runs, $tests, $errors, $todos, $successes) = ($1, $2, $3, $4, $5, $6);
                 $versions{$name}++;
diff --git a/winetest/dissect b/winetest/dissect
index dd7241631..9a2f24e6e 100755
--- a/winetest/dissect
+++ b/winetest/dissect
@@ -305,7 +305,7 @@ $line =~ /^Operating system version:\r?$/ or mydie "no OS header: $line";
 $box->{data} .= "<h2>Operating system version</h2>\n";
 $box->{data} .= "<table class=\"output\">\n";
 
-my ($wine, $wine_build, $major, $minor, $plid, $product, $host);
+my ($wine, $wine_build, $major, $minor, $winbuild, $plid, $product, $host);
 while ($line = <IN> || "")
 {
     last if ($line !~ /^\s*([0-9a-zA-Z ]+)=(.*?)\r?$/);
@@ -320,6 +320,8 @@ while ($line = <IN> || "")
         $major = $2;
     } elsif ($1 eq "dwMinorVersion") {
         $minor = $2;
+    } elsif ($1 eq "dwBuildNumber") {
+        $winbuild = $2;
     } elsif ($1 eq "PlatformId") {
         $plid = $2;
     } elsif ($1 eq "wProductType") {
@@ -341,25 +343,35 @@ if (!defined $plid or !defined $major or !defined $minor or !defined $product) {
 my @idmatch = (
     # Describes how to match a platform's version information
     # with a dissect platform id:
-    # dissect id  plid  major  minor  product  prediluvian
-    [ "95",          1,     4,     0,  undef,  1 ],
-    [ "98",          1,     4,    10,  undef,  1 ],
-    [ "me",          1,     4,    90,  undef,  1 ],
-    [ "nt3",         2,     3,    51,  undef,  1 ],
-    [ "2000",        2,     5,     0,  undef,  1 ],
-    [ "xp",          2,     5,     1,      1,  0 ],
-    [ "xp",          2,     5,     2,      1,  0 ],
-    [ "2003",        2,     5,     2,  undef,  0 ],
-    [ "vista",       2,     6,     0,      1,  0 ],
-    [ "2008",        2,     6,     0,      3,  0 ],
-    [ "win7",        2,     6,     1,      1,  0 ],
-    [ "2008",        2,     6,     1,      3,  0 ],
-    [ "win8",        2,     6,     2,  undef,  0 ],
-    [ "win8",        2,     6,     3,  undef,  0 ],
-    [ "win10",       2,    10,     0,      1,  0 ],
-#   [ "ce",          3, undef, undef,  undef,  0 ],
-    [ "unknown",     2, undef, undef,  undef,  0 ],
-    [ "unknown", undef, undef, undef,  undef,  1 ],
+    # dissect id  plid  major  minor  build  product  prediluvian
+    [ "95",          1,     4,     0, undef, undef,  1 ],
+    [ "98",          1,     4,    10, undef, undef,  1 ],
+    [ "me",          1,     4,    90, undef, undef,  1 ],
+    [ "nt3",         2,     3,    51, undef, undef,  1 ],
+    [ "2000",        2,     5,     0, undef, undef,  1 ],
+    [ "xp",          2,     5,     1, undef,     1,  0 ],
+    [ "xp",          2,     5,     2, undef,     1,  0 ],
+    [ "2003",        2,     5,     2, undef, undef,  0 ],
+    [ "vista",       2,     6,     0, undef,     1,  0 ],
+    [ "2008",        2,     6,     0, undef,     3,  0 ],
+    [ "win7",        2,     6,     1, undef,     1,  0 ],
+    [ "2008",        2,     6,     1, undef,     3,  0 ],
+    [ "win8",        2,     6,     2, undef, undef,  0 ],
+    [ "win8",        2,     6,     3, undef, undef,  0 ],
+    [ "win1507",    2,    10,     0, 10240,     1,  0 ],
+    [ "win1511",    2,    10,     0, 10586,     1,  0 ],
+    [ "win1607",    2,    10,     0, 14393,     1,  0 ],
+    [ "win1703",    2,    10,     0, 15063,     1,  0 ],
+    [ "win1709",    2,    10,     0, 16299,     1,  0 ],
+    [ "win1803",    2,    10,     0, 17134,     1,  0 ],
+    [ "win1809",    2,    10,     0, 17763,     1,  0 ],
+    [ "win1903",    2,    10,     0, 18362,     1,  0 ],
+    [ "win1909",    2,    10,     0, 18363,     1,  0 ],
+    [ "win2004",    2,    10,     0, 19041,     1,  0 ],
+    [ "win2009",    2,    10,     0, 19042,     1,  0 ],
+#   [ "ce",          3, undef, undef, undef, undef,  0 ],
+    [ "unknown",     2, undef, undef, undef, undef,  0 ],
+    [ "unknown", undef, undef, undef, undef, undef,  1 ],
 );
 
 my ($version, $prediluvian);
@@ -368,15 +380,16 @@ foreach my $entry (@idmatch)
     if ((!defined $entry->[1] or $entry->[1] eq $plid) and
         (!defined $entry->[2] or $entry->[2] eq $major) and
         (!defined $entry->[3] or $entry->[3] eq $minor) and
-        (!defined $entry->[4] or $entry->[4] eq $product))
+        (!defined $entry->[4] or $entry->[4] eq $winbuild) and
+        (!defined $entry->[5] or $entry->[5] eq $product))
     {
         $version = $entry->[0];
-        $prediluvian = $entry->[5];
+        $prediluvian = $entry->[6];
         last;
     }
 }
-# Give a little slack to the Windows 10 1709.
-$maxfailedtests += 20 if ($version eq "win10");
+# Give a little slack to the latest Windows 10.
+$maxfailedtests += 20 if ($version eq "win10_20");
 
 if ($prediluvian and not $acceptprediluvianwin)
 {
diff --git a/winetest/gather b/winetest/gather
index 31ba8fa03..2c8900122 100755
--- a/winetest/gather
+++ b/winetest/gather
@@ -157,7 +157,10 @@ my %vista   = (name => "Vista");
 my %w2k8    = (name => "2008");
 my %win7    = (name => "Win7");
 my %win8    = (name => "Win8");
-my %win10   = (name => "Win10");
+my %win10_15= (name => "Win10.15");
+my %win10_17= (name => "Win10.17");
+my %win10_19= (name => "Win10.19");
+my %win10_20= (name => "Win10.20");
 my %unknown = (name => "Other");
 my %linux   = (name => "Linux");
 my %mac     = (name => "Mac");
@@ -166,12 +169,23 @@ my %solaris = (name => "Solaris");
 my %wine    = (name => "Wine");
 
 # Define the order of version groups in the summary
-my @groups = (\%w95, \%w98, \%me, \%nt3, \%nt4, \%w2k, \%xp, \%w2k3, \%vista, \%w2k8, \%win7, \%win8, \%win10,
+my @groups = (\%w95, \%w98, \%me,
+              \%nt3, \%nt4, \%w2k, \%xp, \%w2k3,
+              \%vista, \%w2k8, \%win7, \%win8,
+              \%win10_15, \%win10_17, \%win10_19, \%win10_20,
               \%unknown, \%linux, \%mac, \%bsd, \%solaris, \%wine);
 
 # Map dissect's IDs to the above hashes
-my %idmap = (95=>\%w95, 98=>\%w98, me=>\%me, nt3=>\%nt3, nt4=>\%nt4, 2000=>\%w2k,
-             xp=>\%xp, 2003=>\%w2k3, vista=>\%vista, 2008=>\%w2k8, win7=>\%win7, win8=>\%win8, win10=>\%win10,
+my %idmap = (95=>\%w95, 98=>\%w98, me=>\%me,
+             nt3=>\%nt3, nt4=>\%nt4, 2000=>\%w2k,
+             xp=>\%xp, 2003=>\%w2k3, vista=>\%vista, 2008=>\%w2k8,
+             win7=>\%win7, win8=>\%win8,
+             win1507=>\%win10_15, win1511=>\%win10_15,
+             win1607=>\%win10_15,
+             win1703=>\%win10_17, win1709=>\%win10_17,
+             win1803=>\%win10_17, win1809=>\%win10_17,
+             win1903=>\%win10_19, win1909=>\%win10_19,
+             win2004=>\%win10_20, win2009=>\%win10_20,
              unknown=>\%unknown, wine=>\%wine, linux=>\%linux, mac=>\%mac, bsd=>\%bsd,
              solaris=>\%solaris);
 
-- 
2.20.1



More information about the wine-devel mailing list