| <?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"; |
| */ |
| |
| |
| ?> |