Example #1
0
function main($paths)
{
    if (count($paths) < 1 || count($paths) > 2) {
        exit_with_error('InvalidRequest');
    }
    $db = new Database();
    if (!$db->connect()) {
        exit_with_error('DatabaseConnectionFailure');
    }
    if (!is_numeric($paths[0])) {
        $repository_name = $paths[0];
        $repository_row = $db->select_first_row('repositories', 'repository', array('name' => $repository_name));
        if (!$repository_row) {
            exit_with_error('RepositoryNotFound', array('repositoryName' => $repository_name));
        }
        $repository_id = $repository_row['repository_id'];
    } else {
        $repository_id = intval($paths[0]);
    }
    $filter = array_get($paths, 1);
    $single_commit = NULL;
    $commits = array();
    if (!$filter) {
        $keyword = array_get($_GET, 'keyword');
        $from = array_get($_GET, 'from');
        $to = array_get($_GET, 'to');
        $commits = fetch_commits_between($db, $repository_id, $from, $to, $keyword);
    } else {
        if ($filter == 'oldest') {
            $single_commit = $db->select_first_row('commits', 'commit', array('repository' => $repository_id), 'time');
        } else {
            if ($filter == 'latest') {
                $single_commit = $db->select_last_row('commits', 'commit', array('repository' => $repository_id), 'time');
            } else {
                if ($filter == 'last-reported') {
                    $single_commit = $db->select_last_row('commits', 'commit', array('repository' => $repository_id, 'reported' => true), 'time');
                } else {
                    if (ctype_alnum($filter)) {
                        $single_commit = commit_from_revision($db, $repository_id, $filter);
                    } else {
                        $matches = array();
                        if (!preg_match('/([A-Za-z0-9]+)[\\:\\-]([A-Za-z0-9]+)/', $filter, $matches)) {
                            exit_with_error('UnknownFilter', array('repositoryName' => $repository_name, 'filter' => $filter));
                        }
                        $commits = fetch_commits_between($db, $repository_id, $matches[1], $matches[2]);
                    }
                }
            }
        }
    }
    if ($single_commit) {
        $committer = $db->select_first_row('committers', 'committer', array('id' => $single_commit['commit_committer']));
        exit_with_success(array('commits' => array(format_commit($single_commit, $committer))));
    }
    exit_with_success(array('commits' => $commits));
}
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()));
}
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));
}
Example #4
0
require_once '../include/json-header.php';
require_once '../include/manifest.php';
require_once '../include/report-processor.php';
$db = new Database();
if (!$db->connect()) {
    exit_with_error('DatabaseConnectionFailure');
}
$report_id = array_get($_POST, 'report');
if (!$report_id) {
    $report_id = array_get($_GET, 'report');
}
$report_id = intval($report_id);
if (!$report_id) {
    exit_with_error('ReportIdNotSpecified');
}
$report_row = $db->select_first_row('reports', 'report', array('id' => $report_id));
if (!$report_row) {
    return exit_with_error('ReportNotFound', array('reportId', $report_id));
}
$processor = new ReportProcessor($db);
$processor->process(json_decode($report_row['report_content'], true), $report_id);
$generator = new ManifestGenerator($db);
if (!$generator->generate()) {
    exit_with_error('FailedToGenerateManifest');
} else {
    if (!$generator->store()) {
        exit_with_error('FailedToStoreManifest');
    }
}
exit_with_success();