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()));
}
Example #2
0
function main($path)
{
    if (count($path) != 1) {
        exit_with_error('InvalidRequest');
    }
    $parts = explode('-', $path[0]);
    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 *
        FROM test_configurations WHERE config_metric = $1 AND config_platform = $2', array($metric_id, $platform_id));
    if (!$config_rows) {
        exit_with_error('ConfigurationNotFound');
    }
    $test_group_id = array_get($_GET, 'testGroup');
    $should_cache = array_get($_GET, 'cache');
    if ($test_group_id) {
        $test_group_id = intval($test_group_id);
    } else {
        if ($should_cache) {
            // Only v1 UI needs caching.
            $maxage = config('jsonCacheMaxAge');
            header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $maxage) . ' GMT');
            header("Cache-Control: maxage={$maxage}");
        }
    }
    $generator = new RunsGenerator($config_rows);
    foreach ($config_rows as $config) {
        if ($test_group_id) {
            $raw_runs = fetch_runs_for_config_and_test_group($db, $config, $test_group_id);
        } else {
            $raw_runs = fetch_runs_for_config($db, $config);
        }
        $generator->add_runs($config['config_type'], $raw_runs);
    }
    $content = success_json($generator->results());
    if (!$test_group_id) {
        generate_data_file("{$platform_id}-{$metric_id}.json", $content);
    }
    echo $content;
}
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
function DeleteallPets($characterGUIDList)
{
    global $char_dbconfig, $characterGUIDList, $queries;
    $db = new Database($char_dbconfig);
    if (empty($characterGUIDList)) {
        return;
    }
    foreach ($characterGUIDList as $char) {
        $charGUID = $char['guid'];
        foreach ($db->query_and_fetch_all("SELECT `id` FROM `character_pet` WHERE `owner` = {$charGUID};") as $pet) {
            $petGUID = $pet['guid'];
            $queries[] = "DELETE FROM `character_pet` WHERE `id`= {$petGUID};";
            $queries[] = "DELETE FROM `pet_aura` WHERE `guid`= {$petGUID};";
            $queries[] = "DELETE FROM `pet_spell` WHERE `guid`= {$petGUID};";
            $queries[] = "DELETE FROM `pet_spell_cooldown` WHERE `guid`= {$petGUID};";
        }
    }
}
Example #5
0
require '../include/json-header.php';
$paths = array_key_exists('PATH_INFO', $_SERVER) ? explode('/', trim($_SERVER['PATH_INFO'], '/')) : array();
if (count($paths) != 1) {
    exit_with_error('InvalidRequest');
}
$parts = explode('-', $paths[0]);
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