function main($path) { $db = new Database(); if (!$db->connect()) { exit_with_error('DatabaseConnectionFailure'); } if (count($path) > 1) { exit_with_error('InvalidRequest'); } $build_request_id = array_get($_GET, 'buildRequest'); $task_id = count($path) > 0 && $path[0] ? $path[0] : array_get($_GET, 'id'); if ($build_request_id) { $tasks = $db->query_and_fetch_all('SELECT analysis_tasks.* FROM build_requests, analysis_test_groups, analysis_tasks WHERE request_id = $1 AND request_group = testgroup_id AND testgroup_task = task_id', array(intval($build_request_id))); if (!$tasks) { exit_with_error('TaskNotFound', array('buildRequest' => $build_request_id)); } } else { if ($task_id) { $task_id = intval($task_id); $task = $db->select_first_row('analysis_tasks', 'task', array('id' => $task_id)); if (!$task) { exit_with_error('TaskNotFound', array('id' => $task_id)); } $tasks = array($task); } else { $metric_id = array_get($_GET, 'metric'); $platform_id = array_get($_GET, 'platform'); if (!!$metric_id != !!$platform_id) { exit_with_error('InvalidArguments', array('metricId' => $metric_id, 'platformId' => $platform_id)); } if ($metric_id) { $tasks = $db->select_rows('analysis_tasks', 'task', array('platform' => $platform_id, 'metric' => $metric_id)); } else { // FIXME: Limit the number of tasks we fetch. $tasks = array_reverse($db->fetch_table('analysis_tasks', 'task_created_at')); } if (!is_array($tasks)) { exit_with_error('FailedToFetchTasks'); } } } $tasks = array_map("format_task", $tasks); $bugs = fetch_and_push_bugs_to_tasks($db, $tasks); exit_with_success(array('analysisTasks' => $tasks, 'bugs' => $bugs)); }
if (count($parts) != 2) { exit_with_error('InvalidRequest'); } $db = new Database(); if (!$db->connect()) { exit_with_error('DatabaseConnectionFailure'); } $platform_id = intval($parts[0]); $metric_id = intval($parts[1]); $config_rows = $db->query_and_fetch_all('SELECT config_id, config_type, config_platform, config_metric FROM test_configurations WHERE config_metric = $1 AND config_platform = $2', array($metric_id, $platform_id)); if (!$config_rows) { exit_with_error('ConfigurationNotFound'); } $repository_id_to_name = array(); if ($repository_table = $db->fetch_table('repositories')) { foreach ($repository_table as $repository) { $repository_id_to_name[$repository['repository_id']] = $repository['repository_name']; } } function fetch_runs_for_config($db, $config) { $raw_runs = $db->query_and_fetch_all(' SELECT test_runs.*, builds.*, array_agg((revision_repository, revision_value, revision_time)) AS revisions FROM builds LEFT OUTER JOIN build_revisions ON revision_build = build_id, test_runs WHERE run_build = build_id AND run_config = $1 GROUP BY build_id, build_builder, build_number, build_time, build_latest_revision, run_id, run_config, run_build, run_iteration_count_cache, run_mean_cache, run_sum_cache, run_square_sum_cache ORDER BY build_latest_revision, build_time', array($config['config_id'])); $formatted_runs = array();