function fetch_for_tasks($task_id_list, $task_by_id)
 {
     $commit_rows = $this->db->query_and_fetch_all('SELECT task_commits.*, commits.*, committers.*
         FROM task_commits, commits LEFT OUTER JOIN committers ON commit_committer = committer_id
         WHERE taskcommit_commit = commit_id AND taskcommit_task = ANY ($1)', array('{' . implode(', ', $task_id_list) . '}'));
     if (!is_array($commit_rows)) {
         return NULL;
     }
     $commits = array();
     foreach ($commit_rows as &$commit_row) {
         $associated_task =& $task_by_id[$commit_row['taskcommit_task']];
         $commit = $this->format_commit($commit_row, $commit_row);
         $commit['repository'] = $commit_row['commit_repository'];
         array_push($commits, $commit);
         array_push($associated_task[Database::is_true($commit_row['taskcommit_is_fix']) ? 'fixes' : 'causes'], $commit_row['commit_id']);
     }
     return $commits;
 }
Example #2
0
 private static function format_run($run)
 {
     return array('id' => intval($run['run_id']), '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']), 'markedOutlier' => Database::is_true($run['run_marked_outlier']), 'revisions' => self::parse_revisions_array($run['revisions']), 'build' => $run['build_id'], 'buildTime' => Database::to_js_time($run['build_time']), 'buildNumber' => intval($run['build_number']), 'builder' => $run['build_builder']);
 }
Example #3
0
 private function platforms($config_table, $platform_table, $is_dashboard)
 {
     $platform_metrics = array();
     if ($config_table) {
         foreach ($config_table as $config_row) {
             if ($is_dashboard && !Database::is_true($config_row['config_is_in_dashboard'])) {
                 continue;
             }
             $new_last_modified = array_get($config_row, 'config_runs_last_modified', 0);
             if ($new_last_modified) {
                 $new_last_modified = strtotime($config_row['config_runs_last_modified']) * 1000;
             }
             $platform =& array_ensure_item_has_array($platform_metrics, $config_row['config_platform']);
             $metrics =& array_ensure_item_has_array($platform, 'metrics');
             $last_modified =& array_ensure_item_has_array($platform, 'last_modified');
             $metric_id = $config_row['config_metric'];
             $index = array_search($metric_id, $metrics);
             if ($index === FALSE) {
                 array_push($metrics, $metric_id);
                 array_push($last_modified, $new_last_modified);
             } else {
                 $last_modified[$index] = max($last_modified[$index], $new_last_modified);
             }
         }
     }
     $configurations = array();
     $platforms = array();
     if ($platform_table) {
         foreach ($platform_table as $platform_row) {
             if (Database::is_true($platform_row['platform_hidden'])) {
                 continue;
             }
             $id = $platform_row['platform_id'];
             if (array_key_exists($id, $platform_metrics)) {
                 $platforms[$id] = array('name' => $platform_row['platform_name'], 'metrics' => $platform_metrics[$id]['metrics'], 'lastModified' => $platform_metrics[$id]['last_modified']);
             }
         }
     }
     return $platforms;
 }
Example #4
0
    private function render_form_control_for_column($editing_mode, $name, $value = '', $show_update_button_if_needed = FALSE)
    {
        $show_update_button = FALSE;
        switch ($editing_mode) {
            case 'text':
                echo <<<END
<textarea name="{$name}" rows="7" cols="50">{$value}</textarea><br>
END;
                $show_update_button = $show_update_button_if_needed;
                break;
            case 'boolean':
                $checkedness = Database::is_true($value) ? ' checked' : '';
                echo <<<END
<input type="checkbox" name="{$name}"{$checkedness}>
END;
                $show_update_button = $show_update_button_if_needed;
                break;
            case 'url':
                echo <<<END
<input type="text" name="{$name}" value="{$value}" size="70">
END;
                break;
            default:
                assert($editing_mode == 'string');
                echo <<<END
<input type="text" name="{$name}" value="{$value}">
END;
        }
        if ($show_update_button) {
            echo <<<END

<button type="submit" name="action" value="update">Update</button>
END;
        }
    }
function format_test_group($group_row)
{
    return array('id' => $group_row['testgroup_id'], 'task' => $group_row['testgroup_task'], 'name' => $group_row['testgroup_name'], 'author' => $group_row['testgroup_author'], 'createdAt' => strtotime($group_row['testgroup_created_at']) * 1000, 'hidden' => Database::is_true($group_row['testgroup_hidden']), 'buildRequests' => array(), 'rootSets' => array());
}
 private static function format_run(&$run, &$commit_time)
 {
     $commit_time = Database::to_js_time($run['revision_time']);
     $build_time = Database::to_js_time($run['build_time']);
     if (!$commit_time) {
         $commit_time = $build_time;
     }
     return array(intval($run['run_id']), floatval($run['run_mean_cache']), intval($run['run_iteration_count_cache']), floatval($run['run_sum_cache']), floatval($run['run_square_sum_cache']), Database::is_true($run['run_marked_outlier']), self::parse_revisions_array($run['revisions']), $commit_time, intval($run['build_id']), $build_time, $run['build_number'], intval($run['build_builder']));
 }
Example #7
0
 private function platforms($platform_table, $is_dashboard)
 {
     $metrics = $this->db->query_and_fetch_all('SELECT config_metric AS metric_id, config_platform AS platform_id,
         extract(epoch from max(config_runs_last_modified)) * 1000 AS last_modified, bool_or(config_is_in_dashboard) AS in_dashboard
         FROM test_configurations GROUP BY config_metric, config_platform ORDER BY config_platform');
     $platform_metrics = array();
     if ($metrics) {
         $current_platform_entry = null;
         foreach ($metrics as $metric_row) {
             if ($is_dashboard && !Database::is_true($metric_row['in_dashboard'])) {
                 continue;
             }
             $platform_id = $metric_row['platform_id'];
             if (!$current_platform_entry || $current_platform_entry['id'] != $platform_id) {
                 $current_platform_entry =& array_ensure_item_has_array($platform_metrics, $platform_id);
                 $current_platform_entry['id'] = $platform_id;
                 array_ensure_item_has_array($current_platform_entry, 'metrics');
                 array_ensure_item_has_array($current_platform_entry, 'last_modified');
             }
             array_push($current_platform_entry['metrics'], $metric_row['metric_id']);
             array_push($current_platform_entry['last_modified'], intval($metric_row['last_modified']));
         }
     }
     $configurations = array();
     $platforms = array();
     if ($platform_table) {
         foreach ($platform_table as $platform_row) {
             if (Database::is_true($platform_row['platform_hidden'])) {
                 continue;
             }
             $id = $platform_row['platform_id'];
             if (array_key_exists($id, $platform_metrics)) {
                 $platforms[$id] = array('name' => $platform_row['platform_name'], 'metrics' => $platform_metrics[$id]['metrics'], 'lastModified' => $platform_metrics[$id]['last_modified']);
             }
         }
     }
     return $platforms;
 }
function format_task($task_row)
{
    return array('id' => $task_row['task_id'], 'name' => $task_row['task_name'], 'author' => $task_row['task_author'], 'segmentationStrategy' => $task_row['task_segmentation'], 'testRangeStragegy' => $task_row['task_test_range'], 'createdAt' => strtotime($task_row['task_created_at']) * 1000, 'platform' => $task_row['task_platform'], 'metric' => $task_row['task_metric'], 'startRun' => $task_row['task_start_run'], 'startRunTime' => Database::to_js_time($task_row['task_start_run_time']), 'endRun' => $task_row['task_end_run'], 'endRunTime' => Database::to_js_time($task_row['task_end_run_time']), 'result' => $task_row['task_result'], 'needed' => $task_row['task_needed'] ? Database::is_true($task_row['task_needed']) : null, 'bugs' => array(), 'causes' => array(), 'fixes' => array());
}
function format_task($task_row)
{
    $category = 'unconfirmed';
    $result = $task_row['task_result'];
    if ($result == 'unchanged' || $result == 'inconclusive') {
        $category = 'closed';
    } else {
        if ($result) {
            $category = 'bisecting';
        }
    }
    return array('id' => $task_row['task_id'], 'name' => $task_row['task_name'], 'author' => $task_row['task_author'], 'segmentationStrategy' => $task_row['task_segmentation'], 'testRangeStragegy' => $task_row['task_test_range'], 'createdAt' => strtotime($task_row['task_created_at']) * 1000, 'platform' => $task_row['task_platform'], 'metric' => $task_row['task_metric'], 'startRun' => $task_row['task_start_run'], 'startRunTime' => Database::to_js_time($task_row['task_start_run_time']), 'endRun' => $task_row['task_end_run'], 'endRunTime' => Database::to_js_time($task_row['task_end_run_time']), 'category' => $category, 'result' => $result, 'needed' => $task_row['task_needed'] ? Database::is_true($task_row['task_needed']) : null, 'bugs' => array());
}
Example #10
0
        <td>{$metric['metric_name']}</td>
        <td>{$aggregator_name} {$aggregator_action}</td>
        <td><form method="POST"><input type="hidden" name="metric_id" value="{$metric_id}">
EOF;
                    foreach ($platform_names as $platform_name) {
                        $platform_name = htmlspecialchars($platform_name);
                        $platform = $name_to_platform[$platform_name];
                        $configurations = $test_name_resolver->configurations_for_metric_and_platform($metric_id, $platform['platform_id']);
                        if (!$configurations) {
                            continue;
                        }
                        echo "<label><input type=\"checkbox\" name=\"metric_platforms[]\" value=\"{$platform['platform_id']}\"";
                        if (Database::is_true($configurations[0]['config_is_in_dashboard'])) {
                            echo ' checked';
                        } else {
                            if (Database::is_true($platform['platform_hidden'])) {
                                echo 'disabled';
                            }
                        }
                        echo ">{$platform_name}</label>";
                    }
                    echo <<<EOF
        <button type="submit" name="action" value="dashboard">Save</button></form>
        </td>
    </tr>
EOF;
                }
            }
            if ($child_metrics) {
                echo <<<EOF
        <td colspan="5"><form method="POST">