function fetch_for_tasks($task_id_list, $task_by_id) { $commit_rows = $this->db->query_and_fetch_all('SELECT task_commits.*, commits.*, committers.* FROM task_commits, commits LEFT OUTER JOIN committers ON commit_committer = committer_id WHERE taskcommit_commit = commit_id AND taskcommit_task = ANY ($1)', array('{' . implode(', ', $task_id_list) . '}')); if (!is_array($commit_rows)) { return NULL; } $commits = array(); foreach ($commit_rows as &$commit_row) { $associated_task =& $task_by_id[$commit_row['taskcommit_task']]; $commit = $this->format_commit($commit_row, $commit_row); $commit['repository'] = $commit_row['commit_repository']; array_push($commits, $commit); array_push($associated_task[Database::is_true($commit_row['taskcommit_is_fix']) ? 'fixes' : 'causes'], $commit_row['commit_id']); } return $commits; }
private static function format_run($run) { return array('id' => intval($run['run_id']), 'mean' => floatval($run['run_mean_cache']), 'iterationCount' => intval($run['run_iteration_count_cache']), 'sum' => floatval($run['run_sum_cache']), 'squareSum' => floatval($run['run_square_sum_cache']), 'markedOutlier' => Database::is_true($run['run_marked_outlier']), 'revisions' => self::parse_revisions_array($run['revisions']), 'build' => $run['build_id'], 'buildTime' => Database::to_js_time($run['build_time']), 'buildNumber' => intval($run['build_number']), 'builder' => $run['build_builder']); }
private function platforms($config_table, $platform_table, $is_dashboard) { $platform_metrics = array(); if ($config_table) { foreach ($config_table as $config_row) { if ($is_dashboard && !Database::is_true($config_row['config_is_in_dashboard'])) { continue; } $new_last_modified = array_get($config_row, 'config_runs_last_modified', 0); if ($new_last_modified) { $new_last_modified = strtotime($config_row['config_runs_last_modified']) * 1000; } $platform =& array_ensure_item_has_array($platform_metrics, $config_row['config_platform']); $metrics =& array_ensure_item_has_array($platform, 'metrics'); $last_modified =& array_ensure_item_has_array($platform, 'last_modified'); $metric_id = $config_row['config_metric']; $index = array_search($metric_id, $metrics); if ($index === FALSE) { array_push($metrics, $metric_id); array_push($last_modified, $new_last_modified); } else { $last_modified[$index] = max($last_modified[$index], $new_last_modified); } } } $configurations = array(); $platforms = array(); if ($platform_table) { foreach ($platform_table as $platform_row) { if (Database::is_true($platform_row['platform_hidden'])) { continue; } $id = $platform_row['platform_id']; if (array_key_exists($id, $platform_metrics)) { $platforms[$id] = array('name' => $platform_row['platform_name'], 'metrics' => $platform_metrics[$id]['metrics'], 'lastModified' => $platform_metrics[$id]['last_modified']); } } } return $platforms; }
private function render_form_control_for_column($editing_mode, $name, $value = '', $show_update_button_if_needed = FALSE) { $show_update_button = FALSE; switch ($editing_mode) { case 'text': echo <<<END <textarea name="{$name}" rows="7" cols="50">{$value}</textarea><br> END; $show_update_button = $show_update_button_if_needed; break; case 'boolean': $checkedness = Database::is_true($value) ? ' checked' : ''; echo <<<END <input type="checkbox" name="{$name}"{$checkedness}> END; $show_update_button = $show_update_button_if_needed; break; case 'url': echo <<<END <input type="text" name="{$name}" value="{$value}" size="70"> END; break; default: assert($editing_mode == 'string'); echo <<<END <input type="text" name="{$name}" value="{$value}"> END; } if ($show_update_button) { echo <<<END <button type="submit" name="action" value="update">Update</button> END; } }
function format_test_group($group_row) { return array('id' => $group_row['testgroup_id'], 'task' => $group_row['testgroup_task'], 'name' => $group_row['testgroup_name'], 'author' => $group_row['testgroup_author'], 'createdAt' => strtotime($group_row['testgroup_created_at']) * 1000, 'hidden' => Database::is_true($group_row['testgroup_hidden']), 'buildRequests' => array(), 'rootSets' => array()); }
private static function format_run(&$run, &$commit_time) { $commit_time = Database::to_js_time($run['revision_time']); $build_time = Database::to_js_time($run['build_time']); if (!$commit_time) { $commit_time = $build_time; } return array(intval($run['run_id']), floatval($run['run_mean_cache']), intval($run['run_iteration_count_cache']), floatval($run['run_sum_cache']), floatval($run['run_square_sum_cache']), Database::is_true($run['run_marked_outlier']), self::parse_revisions_array($run['revisions']), $commit_time, intval($run['build_id']), $build_time, $run['build_number'], intval($run['build_builder'])); }
private function platforms($platform_table, $is_dashboard) { $metrics = $this->db->query_and_fetch_all('SELECT config_metric AS metric_id, config_platform AS platform_id, extract(epoch from max(config_runs_last_modified)) * 1000 AS last_modified, bool_or(config_is_in_dashboard) AS in_dashboard FROM test_configurations GROUP BY config_metric, config_platform ORDER BY config_platform'); $platform_metrics = array(); if ($metrics) { $current_platform_entry = null; foreach ($metrics as $metric_row) { if ($is_dashboard && !Database::is_true($metric_row['in_dashboard'])) { continue; } $platform_id = $metric_row['platform_id']; if (!$current_platform_entry || $current_platform_entry['id'] != $platform_id) { $current_platform_entry =& array_ensure_item_has_array($platform_metrics, $platform_id); $current_platform_entry['id'] = $platform_id; array_ensure_item_has_array($current_platform_entry, 'metrics'); array_ensure_item_has_array($current_platform_entry, 'last_modified'); } array_push($current_platform_entry['metrics'], $metric_row['metric_id']); array_push($current_platform_entry['last_modified'], intval($metric_row['last_modified'])); } } $configurations = array(); $platforms = array(); if ($platform_table) { foreach ($platform_table as $platform_row) { if (Database::is_true($platform_row['platform_hidden'])) { continue; } $id = $platform_row['platform_id']; if (array_key_exists($id, $platform_metrics)) { $platforms[$id] = array('name' => $platform_row['platform_name'], 'metrics' => $platform_metrics[$id]['metrics'], 'lastModified' => $platform_metrics[$id]['last_modified']); } } } return $platforms; }
function format_task($task_row) { return array('id' => $task_row['task_id'], 'name' => $task_row['task_name'], 'author' => $task_row['task_author'], 'segmentationStrategy' => $task_row['task_segmentation'], 'testRangeStragegy' => $task_row['task_test_range'], 'createdAt' => strtotime($task_row['task_created_at']) * 1000, 'platform' => $task_row['task_platform'], 'metric' => $task_row['task_metric'], 'startRun' => $task_row['task_start_run'], 'startRunTime' => Database::to_js_time($task_row['task_start_run_time']), 'endRun' => $task_row['task_end_run'], 'endRunTime' => Database::to_js_time($task_row['task_end_run_time']), 'result' => $task_row['task_result'], 'needed' => $task_row['task_needed'] ? Database::is_true($task_row['task_needed']) : null, 'bugs' => array(), 'causes' => array(), 'fixes' => array()); }
function format_task($task_row) { $category = 'unconfirmed'; $result = $task_row['task_result']; if ($result == 'unchanged' || $result == 'inconclusive') { $category = 'closed'; } else { if ($result) { $category = 'bisecting'; } } return array('id' => $task_row['task_id'], 'name' => $task_row['task_name'], 'author' => $task_row['task_author'], 'segmentationStrategy' => $task_row['task_segmentation'], 'testRangeStragegy' => $task_row['task_test_range'], 'createdAt' => strtotime($task_row['task_created_at']) * 1000, 'platform' => $task_row['task_platform'], 'metric' => $task_row['task_metric'], 'startRun' => $task_row['task_start_run'], 'startRunTime' => Database::to_js_time($task_row['task_start_run_time']), 'endRun' => $task_row['task_end_run'], 'endRunTime' => Database::to_js_time($task_row['task_end_run_time']), 'category' => $category, 'result' => $result, 'needed' => $task_row['task_needed'] ? Database::is_true($task_row['task_needed']) : null, 'bugs' => array()); }
<td>{$metric['metric_name']}</td> <td>{$aggregator_name} {$aggregator_action}</td> <td><form method="POST"><input type="hidden" name="metric_id" value="{$metric_id}"> EOF; foreach ($platform_names as $platform_name) { $platform_name = htmlspecialchars($platform_name); $platform = $name_to_platform[$platform_name]; $configurations = $test_name_resolver->configurations_for_metric_and_platform($metric_id, $platform['platform_id']); if (!$configurations) { continue; } echo "<label><input type=\"checkbox\" name=\"metric_platforms[]\" value=\"{$platform['platform_id']}\""; if (Database::is_true($configurations[0]['config_is_in_dashboard'])) { echo ' checked'; } else { if (Database::is_true($platform['platform_hidden'])) { echo 'disabled'; } } echo ">{$platform_name}</label>"; } echo <<<EOF <button type="submit" name="action" value="dashboard">Save</button></form> </td> </tr> EOF; } } if ($child_metrics) { echo <<<EOF <td colspan="5"><form method="POST">