From: Francois Gouget Subject: RFC: Split the test.w.org Windows 10 page Message-Id: Date: Mon, 15 Feb 2021 20:14:13 +0100 (CET) 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 () { - 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} .= "

Operating system version

\n"; $box->{data} .= "\n"; -my ($wine, $wine_build, $major, $minor, $plid, $product, $host); +my ($wine, $wine_build, $major, $minor, $winbuild, $plid, $product, $host); while ($line = || "") { last if ($line !~ /^\s*([0-9a-zA-Z ]+)=(.*?)\r?$/); @@ -320,6 +320,8 @@ while ($line = || "") $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