svn path=/trunk/boinc/; revision=15150

This commit is contained in:
David Anderson 2008-05-08 18:47:49 +00:00
parent 6ff5f3a829
commit a0be700d20
12 changed files with 0 additions and 1052 deletions

View File

@ -1,87 +0,0 @@
<?php
require_once("../inc/db.inc");
require_once("../inc/util.inc");
require_once("../inc/email.inc");
require_once("../inc/phpmailer/class.phpmailer.php");
require_once("test.inc");
db_init();
function tcount($p, $v) {
$r = mysql_query("select count(*) from test_report where version='$v' and test_group = '$p' and status<>3");
$s = mysql_fetch_row($r);
return $s[0];
}
$r = mysql_query("select * from test_report");
while ($tr = mysql_fetch_object($r)) {
$tarr[$tr->test_group][$tr->version][$tr->status]++;
}
$max_versions = 1;
$message = "";
$mail = new PHPMailer();
$html = "<html><head><title>Testing status report</title></head><body>
<p>
This report shows the tests for which more reports are needed.
<p>
Please visit http://boinc.berkeley.edu/trac/wiki/TestMatrix
to see descriptions of the various tests,
and submit reports as soon as possible.
<p>
Thanks for your time and effort in making BOINC
a great platform for volunteer computing.
<p>
The BOINC Development Team
<p>
Tests for which we need more reports:
<table><tr><td>Test</td><td>Additional reports needed</td></tr>
";
$message = "This report shows which test areas need more test coverage.
Please visit http://boinc.berkeley.edu/trac/wiki/TestMatrix
to see descriptions of the various tests,
and submit reports as soon as possible.
Thanks for your time and effort in making BOINC
a great platform for volunteer computing.
The BOINC Development Team
Tests for which we need more reports:
";
for ($i=0; $i<count($test_groups); $i++) {
$p = $test_groups[$i][0];
$pl = $test_groups[$i][1];
$tr = $test_groups[$i][2];
for ($j=0; $j<count($versions)&&$j<$max_versions; $j++) {
$v = $versions[$j];
$x1 = tcount($p, $v);
$x2 = $tr - $x1;
if ($tr > $x1) {
$html = $html."<tr><td>$pl</td><td>$x2</td></tr>";
$message = $message."$pl\t$x2\n";
}
}
}
$html = $html."</table></body></html>";
$mail->From = "boincadm@ssl.berkeley.edu";
$mail->FromName = "BOINC Administrator";
$mail->Host = "mail.ssl.berkeley.edu";
$mail->Mailer = "smtp";
$mail->Subject = "Testing status report";
$mail->Body = $html;
$mail->AltBody = $message;
$mail->AddAddress("boinc_alpha@ssl.berkeley.edu", "BOINC Alpha Email List");
$mail->Send();
echo "<pre>";
echo "$message";
echo "</pre>";
?>

342
test.inc
View File

@ -1,342 +0,0 @@
<?php
$basic_tests = array(
array("New install",
"Install BOINC client with no existing install"
),
array("Existing install",
"Install BOINC client with existing install"
),
);
$platforms = array(
array("winxp", "Win XP", 10,),
array("winxp_x64", "Win XP x64", 5,),
array("win2000", "Win 2000", 5,),
array("win98", "Win 98/ME", 5,),
array("win2003", "Win 2003 server", 5,),
array("winvista", "Windows Vista", 5,),
array("winvista_x64", "Windows Vista x64", 5,),
array("mac103", "Mac OS X 10.3", 5,),
array("mac104", "Mac OS X 10.4", 5,),
array("mac105", "Mac OS X 10.5", 5,),
array("linuxcmdline", "Linux x86 command-line", 5,),
array("linuxgraphical", "Linux x86 graphical", 5,),
//array("linuxcmdline_x64", "Linux x64 command-line", 5,),
array("linuxgraphical_x64", "Linux x64 graphical", 5,),
);
$test_groups = array(
array("general", "General tests", 10,),
array("clean", "Clean install", 10,),
array("transfer_restart", "File transfer restart", 5,),
array("preference", "Preferences tests", 5,),
array("v6_win_compat_private", "Windows compatibility/private install tests", 5,),
array("v6_win_secure_private", "Windows secure/private install tests", 5,),
array("v6_win_secure_public", "Windows secure/public install tests", 5,),
array("v6_migraton", "Windows data file migration tests", 5,),
array("modem", "Tests for modem-connected connections", 5,),
array("firewall", "Tests for computers with personal firewalls", 5,),
array("proxyhttp", "Tests for computers connected by HTTP proxy", 5,),
array("proxysocks", "Tests for computers connected by SOCKS proxy", 2,),
array("laptop", "Tests for laptops", 5,),
array("screensaver", "Screensaver tests", 5,),
array("attach_wizard", "BOINC Manager 'Attach to Project' tests", 5,),
array("gui_rpc_auth", "GUI RPC authentication", 5,),
array("acct_mgr", "Account manager functions", 5,),
array("trickle", "Trickle messages and intermediate file upload", 5,),
);
// newer versions first
$versions = array(
"6.2.1",
"6.1.16",
"6.1.15",
"6.1.14",
"6.1.12",
"6.1.10",
"6.1.8",
"6.1.7",
"6.1.6",
"5.10.45",
"5.10.44",
"5.10.43",
"5.10.42",
"5.10.41",
"5.10.40",
"5.10.39",
"5.10.38",
"5.10.35",
"5.10.34",
"5.10.33",
"5.10.32",
"5.10.30",
"5.10.28",
"5.10.27",
"5.10.26",
"5.10.24",
"5.10.23",
"5.10.21",
"5.10.20",
"5.10.19",
"5.10.18",
"5.10.17",
"5.10.16",
"5.10.15",
"5.10.14",
"5.10.13",
"5.10.12",
"5.10.11",
"5.10.10",
"5.10.8",
"5.10.7",
"5.10.6",
"5.10.5",
"5.10.4",
"5.10.3",
"5.10.2",
"5.10.1",
"5.10.0",
"5.9.12",
"5.9.11",
"5.9.10",
"5.9.9",
"5.9.8",
"5.9.7",
"5.9.5",
"5.9.4",
"5.9.3",
"5.8.17",
"5.8.16",
"5.8.15",
"5.8.14",
"5.8.13",
"5.8.12",
"5.8.11",
"5.8.9",
"5.8.8",
"5.8.7",
"5.8.6",
"5.8.5",
"5.8.4",
"5.8.3",
"5.8.2",
"5.8.1",
"5.8.0",
"5.7.5",
"5.7.4",
"5.7.3",
"5.7.2",
"5.7.1",
"5.6.5",
"5.6.4",
"5.6.3",
"5.6.2",
"5.6.1",
"5.6.0",
"5.5.16",
"5.5.15",
"5.5.14",
"5.5.13",
"5.5.12",
"5.5.11",
"5.5.10",
"5.5.9",
"5.5.8",
"5.5.6",
"5.5.5",
"5.4.9",
"5.4.8",
"5.4.7",
"5.4.6",
"5.4.5",
"5.4.4",
"5.4.3",
"5.4.2",
"5.4.1",
"5.4.0",
"5.3.31",
"5.3.30",
"5.3.29",
"5.3.28",
"5.3.27",
"5.3.26",
"5.3.24",
"5.3.23",
"5.3.22",
"5.3.21",
"5.3.20",
"5.3.16",
"5.3.15",
"5.2.15",
"5.2.14",
"5.2.13",
//"5.2.2",
//"5.2.1",
//"5.2.0",
//"5.1.10",
//"5.1.9",
//"5.1.8",
//"5.1.6",
//"5.1.5",
//"5.1.4",
//"5.1.3",
//"5.1.2",
//"5.1.1",
//"4.72",
);
function current_version() {
global $versions;
return $versions[0];
}
function reports_for_version($v) {
$rs = array();
$r = mysql_query("select * from test_report where version='$v' and status<>3");
while ($rep = mysql_fetch_object($r)) {
$rs[] = $rep;
}
return $rs;
}
function test_count($x) {
$n = 0;
foreach($x as $y) {
$n += $y[2];
}
return $n;
}
function fraction_left($v) {
global $platforms;
global $test_groups;
$ps = $platforms;
$gs = $test_groups;
$total_tests = test_count($ps) + test_count($gs);
$rs = reports_for_version($v);
foreach ($rs as $r) {
for ($i=0; $i<count($ps); $i++) {
if ($r->platform == $ps[$i][0]) {
if ($ps[$i][2]>0) {
$ps[$i][2]--;
}
break;
}
}
for ($i=0; $i<count($gs); $i++) {
if ($r->test_group == $gs[$i][0]) {
if ($gs[$i][2]>0) {
$gs[$i][2]--;
}
break;
}
}
}
$tests_left = test_count($ps) + test_count($gs);
return $tests_left/$total_tests;
}
function platform_name($short_name) {
global $platforms;
for ($i=0; $i<count($platforms); $i++) {
$p = $platforms[$i];
if ($short_name == $p[0]) return $p[1];
}
return $short_name;
}
function test_group_name($short_name) {
global $test_groups;
for ($i=0; $i<count($test_groups); $i++) {
$p = $test_groups[$i];
if ($short_name == $p[0]) return $p[1];
}
return $short_name;
}
function show_status_select($t, $user, $v, $p) {
$tgname = $t[0];
$query = "select * from test_report where userid=$user->id and version='$v' and platform='$p' and test_group='$tgname'";
$result = mysql_query($query);
$tr = mysql_fetch_object($result);
if ($tr) {
if ($tr->status==0) $ch0 = "checked";
if ($tr->status==1) $ch1 = "checked";
if ($tr->status==2) $ch2 = "checked";
if ($tr->status==3) $ch3 = "checked";
$comment = $tr->comment;
} else {
$ch3 = "checked";
}
echo "
<td><input type=radio name=".$tgname."_status value=3 $ch3></td>
<td><input type=radio name=".$tgname."_status value=0 $ch0></td>
<td><input type=radio name=".$tgname."_status value=1 $ch1></td>
<td><input type=radio name=".$tgname."_status value=2 $ch2></td>
<td><textarea rows=4 cols=60 name=".$tgname."_comment>$comment</textarea></td>
";
}
function show_test_groups($user, $v, $p) {
global $test_groups;
echo "<table cellpadding=4 border=1>
<tr><th><a href=http://boinc.berkeley.edu/test_matrix.php>Test group</a></th>
<th>Not<br> tested</th>
<th>No<br>bugs<br>found</th>
<th>Minor<br>bugs<br>found</th>
<th>Major<br>bugs<br>found</th>
<th>Comments (include BOINC trac ticket number if applicable)</th>
</tr>
";
for ($i=0; $i<count($test_groups); $i++) {
$t = $test_groups[$i];
echo "<tr><td>$t[1]</td>\n";
show_status_select($t, $user, $v, $p);
echo "</tr>\n";
}
echo "</table>\n";
}
function show_version_select() {
global $versions;
echo "<select name=version>\n";
for ($i=0; $i<count($versions); $i++) {
$p = $versions[$i];
echo "<option value=$p>$p\n";
}
echo "</select>\n";
}
function show_platform_select() {
global $platforms;
for ($i=0; $i<count($platforms); $i++) {
$p = $platforms[$i];
echo "<br><input type=radio name=platform value=$p[0]>$p[1]\n";
}
}
function show_platform_summary() {
global $versions;
global $platforms;
for ($i=0; $i<count($platforms); $i++) {
$p = $platforms[$i];
echo $p[1]."-";
for ($n=0; $n<count($versions); $n++) {
$v = $versions[$n];
echo "<a href=\"test_details.php?platform=".$p[0].
"&version=".$v."\">".$v."</a> ";
}
echo "<br>\n";
}
}
function show_platform_details($platform) {
echo $platform->platform, $platform->version, $platform->status;
}
?>

View File

@ -1,17 +0,0 @@
use alpha;
create table test_report (
id integer not null auto_increment,
userid integer not null,
version varchar(64) not null,
platform varchar(64) not null,
test_group varchar(64) not null,
status integer not null,
comment text,
mod_time timestamp,
primary key (id)
);
alter table test_report
add unique (userid, version, platform, test_group),
add index tr_vers (version);

View File

@ -1,52 +0,0 @@
<?php
require_once("../inc/db.inc");
require_once("../inc/util.inc");
require_once("test.inc");
db_init();
$user = get_logged_in_user();
$platform = process_user_text(get_str("platform"));
$version = process_user_text(get_str("version"));
for ($i=0; $i<count($test_groups); $i++) {
$t = $test_groups[$i];
$sname = $t[0]."_status";
$cname = $t[0]."_comment";
$status = null;
$comment = null;
$status = get_str($sname, true);
if (is_null($status)) continue;
$status = process_user_text($status);
$comment = process_user_text(get_str($cname, true));
$query = "select * from test_report where userid=$user->id and version='$version' and platform='$platform' and test_group='$t[0]'";
$result = mysql_query($query);
$tr = mysql_fetch_object($result);
if ($tr) {
$query = "update test_report set status=$status, comment='$comment' where userid=$user->id and version='$version' and platform='$platform' and test_group='$t[0]'";
$retval = mysql_query($query);
echo "<br>$t[1]: updating existing report\n";
} else {
echo "inserting";
$query = "insert into test_report (userid, version, platform, test_group, status, comment) values ($user->id, '$version', '$platform', '$t[0]', $status, '$comment')";
$retval = mysql_query($query);
echo "<br>$t[1]: adding new report\n";
}
if (!$retval) {
echo mysql_error();
error_page("db error");
}
}
echo "
<p>
Test report accepted - thank you.
<p>
<a href=test_form.php>Submit more test results</a>
";
?>

View File

@ -1,111 +0,0 @@
<?php
require_once("../inc/db.inc");
require_once("../inc/util.inc");
require_once("test.inc");
db_init();
$version = process_user_text(get_str("version"),true);
function show_status($counts, $url) {
$colors[0] = "00ff00.gif";
$colors[1] = "ffff00.gif";
$colors[2] = "ff0000.gif";
echo "
<table border=1>
";
for ($i=0; $i<3; $i++) {
if ($counts[$i]) {
$w = $counts[$i]*20;
echo "
<tr>
<td><a href=$url&status=$i><img src=$colors[$i] width=$w height=12></a>$counts[$i]</td>
</tr>
";
} else {
echo "<tr><td><br></td></tr>\n";
}
}
echo "
</table>
";
}
page_head("Test status of version $version");
$n = array();
$n[0] = 0;
$n[1] = 0;
$n[2] = 0;
$tr = array();
$query = "select * from test_report where version='$version'";
$result = mysql_query($query);
if (!$result) {
echo mysql_error();
error_page("db error");
}
while ($r = mysql_fetch_object($result)) {
array_push($tr, $r);
$n[$r->status]++;
}
mysql_free_result($result);
start_table();
row1("OVERALL STATUS");
echo "<tr><td>\n";
show_status($n, "test_list.php?version=$version");
$fl = fraction_left($version);
$pd = number_format(100*(1-$fl), 0);
echo "
<br>
$pd% of target testing has been done.
</td></tr>
";
end_table();
start_table();
row1("PLATFORMS");
for ($i=0; $i<count($platforms); $i++) {
$p = $platforms[$i];
$n[0] = 0;
$n[1] = 0;
$n[2] = 0;
for ($j=0; $j<count($tr); $j++) {
$r = $tr[$j];
if ($r->platform != $p[0]) continue;
$n[$r->status]++;
}
row1($p[1]);
echo "<tr><td>\n";
show_status($n, "test_list.php?version=$version&platform=$p[0]");
echo "</td></tr>\n";
}
end_table();
start_table();
row1("TEST GROUPS");
for ($i=0; $i<count($test_groups); $i++) {
$tg = $test_groups[$i];
$n[0] = 0;
$n[1] = 0;
$n[2] = 0;
for ($j=0; $j<count($tr); $j++) {
$r = $tr[$j];
if ($r->test_group != $tg[0]) continue;
$n[$r->status]++;
}
row1($tg[1]);
echo "<tr><td>\n";
show_status($n, "test_list.php?version=$version&test_group=$tg[0]");
echo "</td></tr>\n";
}
end_table();
?>

View File

@ -1,36 +0,0 @@
<?php
require_once("../inc/db.inc");
require_once("../inc/util.inc");
require_once("test.inc");
db_init();
$user = get_logged_in_user();
page_head("Report test results");
echo "
Use this form for reporting test results
for the BOINC version currently under test.
Fill out this form separately for each platform you tested.
<p>
To report bugs with public releases of BOINC,
use the <a href=http://boinc.berkeley.edu/trac/>BOINC Trac bug database</a>.
<p>
<form action=test_form2.php>
Version:
";
show_version_select();
echo "
<p>
Which platform did you test on?
";
show_platform_select();
echo "
<p>
<input type=submit value='OK'>
</form>
";
page_tail();
?>

View File

@ -1,31 +0,0 @@
<?php
require_once("../inc/db.inc");
require_once("../inc/util.inc");
require_once("test.inc");
db_init();
$user = get_logged_in_user();
$platform = process_user_text(get_str("platform"));
$version = process_user_text(get_str("version"));
page_head("Report test results");
echo "
<p>
<form action=test_action.php>
<input type=hidden name=platform value=$platform>
<input type=hidden name=version value=$version>
";
show_test_groups($user, $version, $platform);
echo "
<p>
<input type=submit value='OK'>
</form>
";
page_tail();
?>

View File

@ -1,114 +0,0 @@
<?php
require_once("../inc/util.inc");
page_head("Instructions for testers");
echo "
<h3>Becoming a tester</h3>
<p>
The BOINC testing program helps us find and fix bugs
in the BOINC software before we release it to the public.
Testing is vital to the success of BOINC.
If you're a tester, then:
<ul>
<li>
You'll need to spend about 1 hour per week doing testing;
<li>
Some of your computer power will be spent running test work,
and you may receive no credit for it.
<li>
You must have enough computer experience to
write clear descriptions of problems.
<li>
You may be asked to assist, via phone or email,
in troubleshooting.
</ul>
If you are OK with all this and want to help test BOINC,
send email to
<a href=http://boinc.berkeley.edu/contact.php>David Anderson or Rom Walton</a>,
and if we need more testers we'll set up an account for you.
<p>
Testers must subscribe to the
<a href=http://www.ssl.berkeley.edu/mailman/listinfo/boinc_alpha>boinc_alpha email list</a>.
(You don't need to be a tester to subscribe to this list).
<h3>When to test</h3>
<p>
Periodically (every couple of weeks, sometimes more)
we'll send an announcement on the email list,
asking alpha testers to download and test a specific new release of BOINC.
These releases can be downloaded from
<a href=http://boinc.berkeley.edu/download_all.php?dev=1>here</a>.
Please try to report test results within two days of receiving the email.
<h3>How to test</h3>
<p>
The client software under test may have bugs that wipe out tasks in progress.
Therefore we recommend that you install the test software
in a different BOINC directory than the one you normally use for BOINC.
<p>
The set of test cases is
<a href=http://boinc.berkeley.edu/test_matrix.php>here</a>.
For each release, please try to do all the General tests.
Please try to do as many of the other tests
as your time and computer environment permit.
<p>
Depending on what you're testing,
you can select which project(s) to attach to:
<ul>
<li> The BOINC Alpha project (this one) has tasks
with large input and output files (4.5 MB each)
and that use about 1 minute of CPU time.
This is useful for testing file upload/download,
and for testing things that happen on task completion.
<b>You don't need to attach to this project to be an Alpha Tester.
Please do not stay attached to this project for long periods</b>.
<li> You can use the Cunning Plan project
(http://isaac.ssl.berkeley.edu/cplan) for tests
that involve creating accounts.
<li> You can use other projects (SETI@home, Einstein@home, CPDN)
for other purposes.
</ul>
<p>
If at any time you experienced problems with BOINC that are not
exercised by any of these tests,
please post to the <a href=http://www.ssl.berkeley.edu/mailman/listinfo/boinc_alpha>boinc_alpha@ssl.berkeley.edu</a> email list.
<h3>How to report test results</h3>
<p>
The preferred way to report test results is through the
<a href=test_form.php>web-based interface</a>.
<p>
You can optionally also submit bug reports to the
<a href=http://boinc.berkeley.edu/trac/wiki/WikiStart>BOINC bug database</a>.
You may also send email to the relevant area owner, as listed
<a href=http://boinc.berkeley.edu/trac/wiki/DevProcess>here</a>.
<p>
If you're not sure whether something is a bug,
post to the boinc_alpha@ssl.berkeley.edu email list.
<p>
Read about
<a href=http://boinc.berkeley.edu/trac/wiki/ReportBugs>Reporting Hard Bugs</a>.
<h3>Resources</h3>
<p>
Windows users: if you have install/uninstall problems,
you may need to use the Windows Installer CleanUp Utility: see
<a href=http://support.microsoft.com/default.aspx?scid=kb;en-us;290301>here</a>
and
<a href=http://windowssdk.msdn.microsoft.com/en-us/library/ms707976.aspx>here</a>
";
page_tail();
?>

View File

@ -1,72 +0,0 @@
<?php
require_once("test.inc");
require_once("../inc/util.inc");
require_once("../inc/db.inc");
$version = get_str("version");
$platform = get_str("platform", true);
$test_group = get_str("test_group", true);
$status = -1;
$status = get_int("status", true);
function show_report($r) {
$user = lookup_user_id($r->userid);
$s = array();
$s[0] = "OK";
$s[1] = "minor bugs";
$s[2] = "major bugs";
$status = $s[$r->status];
$p = platform_name($r->platform);
$tg = test_group_name($r->test_group);
$c = $r->comment;
if (!$c) $c = "<br>";
echo "
<tr>
<td>$user->name</td>
<td>$p</td>
<td>$tg</td>
<td>$status</td>
<td>$c</td>
<td>$r->mod_time</td>
</tr>
";
}
db_init();
$tr = array();
$query = "select * from test_report where version='$version'";
$result = mysql_query($query);
if (!$result) {
echo mysql_error();
error_page("db error");
}
while ($r = mysql_fetch_object($result)) {
array_push($tr, $r);
}
mysql_free_result($result);
echo "
<table cellpadding=4 border=1>
<tr>
<th>User</th>
<th>Platform</th>
<th>Test group</th>
<th>Status</th>
<th>Comment</th>
<th>Time</th>
</tr>
";
for ($i=0; $i<count($tr); $i++) {
$r = $tr[$i];
if ($platform && $r->platform != $platform) continue;
if ($test_group && $r->test_group != $test_group) continue;
if ($status >= 0 && $r->status != $status) continue;
show_report($r);
}
echo "</table>\n";
?>

View File

@ -1,52 +0,0 @@
<?php
require_once("../inc/db.inc");
require_once("../inc/util.inc");
require_once("test.inc");
db_init();
page_head("Tests that need coverage");
echo "
<p>
This report describes which platform a test groupings still need additional coverage.
<p>
";
echo "
<table border=1 cellpadding=4>
";
echo "<tr><th>PLATFORMS</th></tr>\n";
for ($i=0; $i<count($platforms); $i++) {
$p = $platforms[$i][0];
$pl = $platforms[$i][1];
$result_target = $platforms[$i][2];
$v = $versions[0];
$r = mysql_query("select count(*) as count from test_report where version='$v' and platform = '$p' and status<>3");
$l = mysql_fetch_array($r, MYSQL_BOTH);
$result_count = intval($l[0]);
if ( $result_count < $result_target ) {
echo "<tr><td>$pl</td><td>$result_target</td><td>$result_count</td></tr>\n";
}
}
echo "<tr><th>TESTS</th></tr>\n";
for ($i=0; $i<count($test_groups); $i++) {
$p = $test_groups[$i][0];
$pl = $test_groups[$i][1];
$result_target = $test_groups[$i][2];
$v = $versions[0];
$r = mysql_query("select count(*) as count from test_report where version='$v' and test_group = '$p' and status<>3");
$l = mysql_fetch_array($r, MYSQL_BOTH);
$result_count = intval($l[0]);
if ( $result_count < $result_target ) {
echo "<tr><td>$pl</td><td>$result_target</td><td>$result_count</td></tr>\n";
}
}
echo "</table>";
page_tail();
?>

View File

@ -1,82 +0,0 @@
<?php
require_once("../inc/db.inc");
require_once("../inc/util.inc");
require_once("test.inc");
db_init();
page_head("Test results summaries");
echo "
<p>
This table shows the number of test reports that have been
submitted for each combination of (platform, version)
and (test, version).
<p>
";
function pcount($p, $v) {
$r = mysql_query("select count(*) from test_report where version='$v' and platform = '$p' and status<>3");
$s = mysql_fetch_row($r);
return $s[0];
}
function tcount($p, $v) {
$r = mysql_query("select count(*) from test_report where version='$v' and test_group = '$p' and status<>3");
$s = mysql_fetch_row($r);
return $s[0];
}
$r = mysql_query("select * from test_report");
while ($tr = mysql_fetch_object($r)) {
$parr[$tr->platform][$tr->version][$tr->status]++;
$tarr[$tr->test_group][$tr->version][$tr->status]++;
}
echo "
<table border=1 cellpadding=4>
<tr>
<td>Version<br><font size=-2>click for details</td>
<td>Target<br>#results</td>
";
$max_versions = 12;
for ($i=0; $i<count($versions)&&$i<$max_versions; $i++) {
echo "
<td><a href=test_details.php?version=$versions[$i]>$versions[$i]</a></td>
";
}
echo "</tr>";
$nc = count($versions)+2;
echo "<tr><th colspan=$nc>PLATFORMS</td></tr>\n";
for ($i=0; $i<count($platforms); $i++) {
$p = $platforms[$i][0];
$pl = $platforms[$i][1];
$tr = $platforms[$i][2];
echo "<tr><td>$pl</td><td>$tr</td>";
for ($j=0; $j<count($versions)&&$j<$max_versions; $j++) {
$v = $versions[$j];
$x1 = pcount($p, $v);
echo "<td>$x1</td>\n";
}
echo "</tr>\n";
}
echo "<tr><th colspan=$nc>TESTS</td></tr>\n";
for ($i=0; $i<count($test_groups); $i++) {
$p = $test_groups[$i][0];
$pl = $test_groups[$i][1];
$tr = $test_groups[$i][2];
echo "<tr><td>$pl</td><td>$tr</td>";
for ($j=0; $j<count($versions)&&$j<$max_versions; $j++) {
$v = $versions[$j];
$x1 = tcount($p, $v);
echo "<td>$x1</td>\n";
}
echo "</tr>\n";
}
echo "</table>";
page_tail();
?>

View File

@ -1,56 +0,0 @@
<?php
require_once("../inc/db.inc");
require_once("../inc/util.inc");
require_once("test.inc");
db_init();
page_head("Alpha testers");
echo "
<p>
This table shows the alpha testers,
the platforms they have,
and the versions for which they have reported results.
<p>
";
function os_list($user) {
$r = mysql_query("select distinct os_name from host where userid=$user->id");
while ($row = mysql_fetch_row($r)) {
if ($x) $x .= "<br>$row[0]";
else $x = $row[0];
}
if (!$x) $x='---';
return $x;
}
$r = mysql_query("select * from test_report where status<>3");
while ($tr = mysql_fetch_object($r)) {
$uarr[$tr->userid][$tr->version]++;
}
echo "<table cellpadding=4 border=1><tr>
<th>User</th>
<th>Operating systems</th>
";
for ($i=0; $i<count($versions); $i++) {
echo "<th>$versions[$i]</th>\n";
}
echo "</tr>\n";
$r = mysql_query("select * from user");
while ($user = mysql_fetch_object($r)) {
echo "<tr><td>$user->name</td>
<td>".os_list($user)."</td>
";
for ($i=0; $i<count($versions); $i++) {
$v = $versions[$i];
$n = $uarr[$user->id][$v];
if (!$n) $n='---';
echo "<td>$n</td>\n";
}
echo "</tr>";
}
echo "</table>\n";
page_tail();
?>