blob: 067d9d3442e4b78ee482ef824edfba5fd83c0a33 [file] [log] [blame]
<?php
$meaningfull_names = array('getcvstime_wall' => 'CVS Checkout Wall Time',
'getcvstime_cpu' => 'CVS Checkout CPU Time',
'configuretime_cpu' => 'Configure CPU Time',
'configuretime_wall' => 'Configure Wall Time',
'buildtime_cpu' => 'Build CPU Time',
'buildtime_wall' => 'Build Wall Time',
'dejagnutime_wall' => 'Dejagnu Wall Time',
'dejagnutime_cpu' => 'Dejagnu CPU Time',
'teststats_exppass' => 'Expected Test Passes',
'teststats_unexpfail' => 'Unexpected Test Failures',
'teststats_expfail' => 'Expected Test Failures');
/*****************************************************
*
* Purpose: Get information about a certain machine
* Returns: A hash of a table row with the keys
* being the column names
*
*****************************************************/
function getMachineInfo($machine_id){
$query="SELECT * FROM machine WHERE id=$machine_id";
$machine_query = mysql_query($query) or die ("$night failed! " . mysql_error());
$row = mysql_fetch_array($machine_query);
mysql_free_result($machine_query);
return $row;
}
/*****************************************************
*
* Purpose: Get information about all machines
* Returns: A mysql query resource of machine table
* rows.
*
*****************************************************/
function getMachineResource(){
$machine_query = mysql_query("SELECT * FROM machine ORDER BY nickname ASC") or die (mysql_error());
return $machine_query;
}
/*****************************************************
*
* Purpose: Get information about machines that have
* submitted a test in the last month
* Returns: A mysql query resource of machine table
* rows.
*
*****************************************************/
function getRecentMachineResource(){
$night_query = mysql_query("SELECT machine FROM night where DATE_SUB(NOW(), INTERVAL 14 DAY) <= added") or die (mysql_error());
$machines="where id=0";
$machine_arr = array();
while($row = mysql_fetch_array($night_query)){
if(!isset($machine_arr["{$row['machine']}"])){
$machine_arr["{$row['machine']}"]=1;
$machines.=" or id={$row['machine']}";
}
}
mysql_free_result($night_query);
$machine_query = mysql_query("SELECT * FROM machine $machines ORDER BY nickname ASC") or die (mysql_error());
return $machine_query;
}
/*****************************************************
*
* Purpose: Get information about machines that have not
* submitted a test in the last month
* Returns: A mysql query resource of machine table
* rows.
*
*****************************************************/
function getOldMachineResource(){
$night_query = mysql_query("SELECT machine FROM night where DATE_SUB(NOW(), INTERVAL 1 MONTH) > added") or die (mysql_error());
$machines="where id=0";
$machine_arr = array();
while($row = mysql_fetch_array($night_query)){
if(!isset($machine_arr["{$row['machine']}"])){
$machine_arr["{$row['machine']}"]=1;
$machines.=" or id={$row['machine']}";
}
}
mysql_free_result($night_query);
$machine_query = mysql_query("SELECT * FROM machine $machines ORDER BY nickname ASC") or die (mysql_error());
return $machine_query;
}
/*****************************************************
*
* Purpose: Get information about a certain night
* Returns: A hash of a table row with the keys
* being the column names
*
*****************************************************/
function getNightInfo($night_id){
$query="SELECT * FROM night WHERE id=$night_id";
$today_query = mysql_query("SELECT * FROM night WHERE id=$night_id") or die ("$query failed! " . mysql_error());
$today_row = mysql_fetch_array($today_query);
mysql_free_result($today_query);
return $today_row;
}
/*****************************************************
*
* Purpose: Get the nights associated with a specific machine for
* which buildstatus is "OK"
* Returns: A mysql query resource. Basically something you cal
* mysql_fetch_array on.
*
*****************************************************/
function getNightsResource($machine_id, $start="2000-01-01 01:01:01", $end="2020-12-30 01:01:01", $order="DESC"){
$query = mysql_query("SELECT * FROM night WHERE machine=$machine_id and added<=\"$end\" and added>=\"$start\" order by added $order") or die (mysql_error());
return $query;
}
/*****************************************************
*
* Purpose: Get night ids and date added associated
* with a specific machine for
* which buildstatus is "OK"
* Returns: A mysql result
*
*****************************************************/
function getNightsIDs($machine_id, $start="2000-01-01 01:01:01", $end="2020-12-30 01:01:01", $order="DESC"){
$query = mysql_query("SELECT id, added FROM night WHERE machine=$machine_id and added<=\"$end\" and added>=\"$start\" ORDER BY added $order") or die (mysql_error());
return $query;
}
/*****************************************************
*
* Purpose: Get the history of nights given a night and
* specific machine
* Returns: A mysql query resource. Basically something you cal
* mysql_fetch_array on.
*
*****************************************************/
function getSuccessfulNightsHistory($machine_id, $night_id, $order="DESC"){
$query="SELECT * FROM night WHERE machine=$machine_id and id<=$night_id and buildstatus=\"OK\" order by added $order";
$query = mysql_query($query) or die (mysql_error());
return $query;
}
/*****************************************************
*
* Purpose: Get all the tests in the last $hours hours
* Returns: A mysql query resource.
*
*****************************************************/
function getRecentTests($hours="24"){
$result = mysql_query("select * from night where DATE_SUB(NOW(),INTERVAL $hours HOUR)<=added ORDER BY added DESC") or die (mysql_error());
return $result;
}
/*****************************************************
*
* Purpose: Calculate a date in the past given a length
* and an origin date.
* Returns: A string formatted as "Year-month-day H:M:S"
*
*****************************************************/
function calculateDate($time_frame="1 YEAR", $origin_date="CURDATE()"){
if(strpos($origin_date, "CURDATE")===false){
$query=mysql_query("SELECT \"$origin_date\" - INTERVAL $time_frame") or die(mysql_error());
}
else{
$query=mysql_query("SELECT $origin_date - INTERVAL $time_frame") or die(mysql_error());
}
$row = mysql_fetch_array($query);
mysql_free_result($query);
$time = $row[0];
return $time;
}
/*****************************************************
*
* Purpose: get every file size reported on a specific
* dat=y
* Returns: An array with the key being the name of the
* file and the value being the size of the file.
*
*****************************************************/
function getAllFileSizes($night_id){
$select = "select * from file WHERE night=$night_id";
$query = mysql_query($select) or die (mysql_error());
$result=array();
while($file = mysql_fetch_array($query)){
$result["{$file['file']}"]=$file['size'];
}
mysql_free_result($query);
return $result;
}
/*****************************************************
*
* Purpose: Get a list of all sizes measured on a
* particular machine for a specific file
* Returns: an array with the key being the date and
* the value being an array containing file name, size
* night, and build type
*
*****************************************************/
function get_file_history($machine_id, $file_name){
$nights_select = "select id, added from night WHERE machine=$machine_id ".
"order by added desc";
$nights_query = mysql_query($nights_select)
or die (mysql_error());
$result = array();
while($row = mysql_fetch_array($nights_query)){
$file_select = "select * from file where night={$row['id']} and ".
"file=\"$file_name\"";
$file_query = mysql_query($file_select);
$file_array = mysql_fetch_array($file_query);
if(isset($file_array['file'])){
$result["{$row['added']}"]=array("{$file_array['file']}",
"{$file_array['size']}",
"{$file_array['type']}");
}//end if
else {
$result["{$row['added']}"]=array("-",
"-",
"-");
}
mysql_free_result($file_query);
}//end while
mysql_free_result($nights_query);
return $result;
}
/*****************************************************
*
* Purpose: build a comparison table for file size changes
* Returns: An array with the key being the name of the
* file and the value being an array with the following
* data: [0]size of file for specified test [1] % change
* in file size from previous test [2] % change in file size
* from a test >5 tests ago. If for any reason data is not
* not available the array will contain -.
*
*****************************************************/
function buildFileSizeTable($machine_id, $night_id){
$result=array();
//setting up the night ids
$select = "select id from night WHERE id<$night_id and machine=$machine_id ".
"and buildstatus=\"OK\" order by added desc";
$query = mysql_query($select) or die (mysql_error());
$row=mysql_fetch_array($query);
$cur_night=$night_id;
$prev_night=$row['id'];
for($x=0; $x<4 && $row=mysql_fetch_array($query); $x++){}
$old_night=$row['id'];
mysql_free_result($query);
if($cur_night>0) { $cur_data=getAllFileSizes($cur_night); }
if($prev_night>0) { $prev_data=getAllFileSizes($prev_night); }
if($old_night>0) { $old_data=getAllFileSizes($old_night); }
$cur_sum=0;
$prev_sum=0;
$old_sum=0;
$prev_diff=0;
$prev_delta=0;
$old_diff=0;
$old_delta=0;
foreach (array_keys($cur_data) as $file){
$cur_sum+=$cur_data["$file"];
if(isset($prev_data[$file]) && isset($cur_data["$file"])) {
$prev_delta= ( $cur_data["$file"] - $prev_data["$file"] );
$prev_diff = (($cur_data["$file"] - $prev_data["$file"]) / $prev_data["$file"] ) * 100;
$prev_sum+=$prev_data["$file"];
} else {
$prev_diff="-";
}
if(isset($old_data["$file"]) && isset($cur_data["$file"])){
$old_delta= ( $cur_data["$file"] - $old_data["$file"] );
$old_diff = (($cur_data["$file"] - $old_data["$file"]) / $old_data["$file"] ) * 100;
$old_sum+=$old_data["$file"];
} else {
$old_diff = "-";
}
$result["$file"]=array($cur_data["$file"], round($prev_diff,2), $prev_delta, round($old_diff,2), $old_delta);
}
if($old_sum>0){
$old_delta = ($cur_sum - $old_sum);
$old_diff = (($cur_sum - $old_sum) / $old_sum ) * 100;
} else{
$old_diff="-";
}
if($prev_sum>0){
$prev_delta = ($cur_sum - $prev_sum);
$prev_diff = (($cur_sum - $prev_sum) / $prev_sum ) * 100;
} else{
$prev_diff="-";
}
$result["Total Sum"] = array($cur_sum, round($prev_diff,2), $prev_delta, round($old_diff,2), $old_delta);
return $result;
}
/*****************************************************
*
* Example uses of each function
*
*****************************************************/
/*$mysql_link = mysql_connect("127.0.0.1","llvm","ll2002vm");
mysql_select_db("nightlytestresults");
$machine_id = 8;
$file="./test/Regression/Archive/xpg4.a";
$files = get_file_history($machine_id, $file);
foreach (array_keys($files) as $f){
print "$f = > {$files["$f"][0]}<br>\n";
}
$machine_info = getMachineInfo(21);
foreach (array_keys($machine_info) as $key){
print "$key => {$machine_info["$key"]}<br>\n";
}
print "<br><br><br>\n";
$night_id=-1;
$night_resource = getNightsResource($machine_info['id']);
while($row = mysql_fetch_array($night_resource)){
print "added => {$row['added']}<br>\n";
$night_id=$row['id'];
}
mysql_free_result($night_resource);
print "<br><br><br>\n";
$night_info = getNightInfo($night_id);
print "buildstatus => {$night_info['buildstatus']}<br>\n";
print "<br><br><br>\n";
$recent_resource = getRecentTests($machine_info['id']);
while($row = mysql_fetch_array($recent_resource)){
print "added => {$row['added']}<br>\n";
$night_id=$row['id'];
}
mysql_free_result($recent_resource);
print "<br><br><br>\n";
$my_day = calculateDate("30 WEEK");
print "today's date - 30 weeks = $my_day<br>\n";
print "<br><br><br>\n";
*/
?>