示例#1
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;
}
示例#2
0
文件: runs.php 项目: fka2004/webkit
    }
    return $formatted_runs;
}
date_default_timezone_set('UTC');
function parse_revisions_array($postgres_array)
{
    global $repository_id_to_name;
    // e.g. {"(WebKit,131456,\"2012-10-16 14:53:00\")","(Chromium,162004,)"}
    $outer_array = json_decode('[' . trim($postgres_array, '{}') . ']');
    $revisions = array();
    foreach ($outer_array as $item) {
        $name_and_revision = explode(',', trim($item, '()'));
        if (!$name_and_revision[0]) {
            continue;
        }
        $time = strtotime(trim($name_and_revision[2], '"')) * 1000;
        $revisions[$repository_id_to_name[trim($name_and_revision[0], '"')]] = array(trim($name_and_revision[1], '"'), $time);
    }
    return $revisions;
}
function format_run($run)
{
    return array('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']), 'revisions' => parse_revisions_array($run['revisions']), 'buildTime' => strtotime($run['build_time']) * 1000, 'buildNumber' => intval($run['build_number']), 'builder' => $run['build_builder']);
}
$results = array();
foreach ($config_rows as $config) {
    if ($runs = fetch_runs_for_config($db, $config)) {
        $results[$config['config_type']] = $runs;
    }
}
exit_with_success($results);