function main($id, $path, $post_data) { if (!$id && (count($path) < 1 || count($path) > 2)) { exit_with_error('InvalidRequest'); } $db = new Database(); if (!$db->connect()) { exit_with_error('DatabaseConnectionFailure'); } $report = $post_data ? json_decode($post_data, true) : array(); $updates = array_get($report, 'buildRequestUpdates'); if ($updates) { verify_slave($db, $report); update_builds($db, $updates); } $requests_fetcher = new BuildRequestsFetcher($db); if ($id) { $requests_fetcher->fetch_request($id); } else { $triggerable_query = array('name' => array_get($path, 0)); $triggerable = $db->select_first_row('build_triggerables', 'triggerable', $triggerable_query); if (!$triggerable) { exit_with_error('TriggerableNotFound', $triggerable_query); } $requests_fetcher->fetch_incomplete_requests_for_triggerable($triggerable['triggerable_id']); } exit_with_success(array('buildRequests' => $requests_fetcher->results_with_resolved_ids(), 'rootSets' => $requests_fetcher->root_sets(), 'roots' => $requests_fetcher->roots(), 'updates' => $updates)); }
function main($path) { $db = new Database(); if (!$db->connect()) { exit_with_error('DatabaseConnectionFailure'); } if (count($path) > 1) { exit_with_error('InvalidRequest'); } $build_requests_fetcher = new BuildRequestsFetcher($db); if (count($path) > 0 && $path[0]) { $group_id = intval($path[0]); $group = $db->select_first_row('analysis_test_groups', 'testgroup', array('id' => $group_id)); if (!$group) { exit_with_error('GroupNotFound', array('id' => $group_id)); } $test_groups = array($group); $build_requests_fetcher->fetch_for_group($group_id); } else { $task_id = array_get($_GET, 'task'); if (!$task_id) { exit_with_error('TaskIdNotSpecified'); } $test_groups = $db->select_rows('analysis_test_groups', 'testgroup', array('task' => $task_id)); if (!is_array($test_groups)) { exit_with_error('FailedToFetchTestGroups'); } $build_requests_fetcher->fetch_for_task($task_id); } if (!$build_requests_fetcher->has_results()) { exit_with_error('FailedToFetchBuildRequests'); } $test_groups = array_map("format_test_group", $test_groups); $group_by_id = array(); foreach ($test_groups as &$group) { $group_id = $group['id']; $group_by_id[$group_id] =& $group; $platforms = $db->query_and_fetch_all('SELECT DISTINCT(config_platform) FROM test_configurations, test_runs, build_requests WHERE run_config = config_id AND run_build = request_build AND request_group = $1', array($group_id)); if ($platforms) { $group['platform'] = $platforms[0]['config_platform']; } } $build_requests = $build_requests_fetcher->results(); foreach ($build_requests as $request) { $request_group =& $group_by_id[$request['testGroup']]; array_push($request_group['buildRequests'], $request['id']); array_push($request_group['rootSets'], $request['rootSet']); } exit_with_success(array('testGroups' => $test_groups, 'buildRequests' => $build_requests, 'rootSets' => $build_requests_fetcher->root_sets(), 'roots' => $build_requests_fetcher->roots())); }