public static function fillQueue($unit_id)
 {
     $retrigger = RetriggerController::fromUnit($unit_id);
     if (count($retrigger->tasks) == 0) {
         return false;
     }
     $start_time = $retrigger->enqueueRespectDelay();
     $last_scheduled = $start_time < time() ? "UNIX_TIMESTAMP()" : $start_time;
     mysql_query("UPDATE control_tasks\n\t\t\t\t\t SET last_scheduled = " . $last_scheduled . "\n\t\t\t\t\t WHERE control_unit_id = {$unit_id}") or die(mysql_error());
     return true;
 }
Example #2
0
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
require_once "internals.php";
require_once "lib/RetriggerController.php";
require_once "lib/DB/TaskQueue.php";
require_once "lib/DB/QueuedTask.php";
require_once "lib/Slack.php";
init_database();
if ($unit = GET_int("unit")) {
    $queue = new TaskQueue($unit);
    if ($queue->has_active_task()) {
        Slack::log("requesting new task, while old task is still running!");
        $task = $queue->get_active_task();
        $task->reportError("Requested new task, while this task was still running.");
    }
    if (!$queue->has_queued_tasks()) {
        if (!RetriggerController::fillQueue($unit)) {
            die("No tasks to schedule");
        }
    }
    $task = $queue->get_oldest_available_queued_task();
    if (!$task) {
        echo json_encode(array("task" => "sleep 60", "id" => 0));
        die;
    }
    $task->setStarted();
    echo json_encode(array("task" => $task->task(), "id" => $task->id));
    die;
} else {
    if ($task_id = GET_int("finish")) {
        $task = new QueuedTask($task_id);
        $task->setFinished();
Example #3
0
<?php

/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
require_once "../internals.php";
require_once "../lib/RetriggerController.php";
init_database();
$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
$machine_id = (int) $request->machine_id;
$mode_id = (int) $request->mode_id;
$revision = $request->revision;
$run_before_id = (int) $request->run_before_id;
$run_after_id = (int) $request->run_after_id;
$benchmarks = $request->benchmarks;
$retrigger = RetriggerController::fromMachine($machine_id, $mode_id);
$retrigger->convertToRevision($mode_id, $revision, $run_before_id, $run_after_id);
$retrigger->selectBenchmarks($benchmarks);
$retrigger->enqueueNow();
    $single = false;
} else {
    $ids[] = (int) $request->id;
}
$minimal = isset($request->minimal) ? !!$request->minimal : false;
$data = array();
for ($i = 0; $i < count($ids); $i++) {
    $db_regression = Regression::FromId($ids[$i]);
    if (!$db_regression) {
        $data[] = array();
        continue;
    }
    $db_build = $db_regression->build();
    $db_run = $db_build->run();
    $db_prev_build = $db_regression->prev_build();
    $regression = array("id" => $db_regression->id, "machine" => $db_run->machine_id(), "mode" => $db_build->mode_id(), "stamp" => $db_run->finish_stamp(), "cset" => $db_build->revision(), "bug" => $db_regression->bug(), "status" => $db_regression->status(), "build_id" => $db_build->id, "detector" => $db_run->detector(), "run_id" => $db_run->id, "prev_run_id" => $db_prev_build->run_id(), "scores" => array(), "retriggerable" => RetriggerController::retriggerable($db_run->machine_id(), $db_build->mode_id()));
    $qScores = mysql_query("SELECT * FROM awfy_regression_score\n\t\t\t\t\t\t    WHERE regression_id = '" . $regression["id"] . "'") or die(mysql_error());
    while ($scores = mysql_fetch_assoc($qScores)) {
        $suite_version_id = get("score", $scores["score_id"], "suite_version_id");
        $score = array("score_id" => $scores["score_id"], "suite_version" => $suite_version_id, "score" => get("score", $scores["score_id"], "score"), "noise" => $scores["noise"]);
        $qPrevScore = mysql_query("SELECT score\n\t\t\t\t\t\t\t\t   FROM awfy_score\n\t\t\t\t\t\t\t\t   WHERE build_id = " . $db_prev_build->id . " AND\n\t\t\t\t\t\t\t\t\t\t suite_version_id = " . $suite_version_id . "\n\t\t\t\t\t\t\t\t   LIMIT 1") or die(mysql_error());
        if (mysql_num_rows($qPrevScore) == 1) {
            $prevScore = mysql_fetch_assoc($qPrevScore);
            $score["prev_score"] = $prevScore["score"];
            $score["prev_cset"] = $db_prev_build->revision();
        }
        $regression["scores"][] = $score;
    }
    $qScores = mysql_query("SELECT * FROM awfy_regression_breakdown\n\t\t\t\t\t\t    WHERE regression_id = '" . $db_regression->id . "'") or die(mysql_error());
    while ($scores = mysql_fetch_assoc($qScores)) {
        $suite_test_id = get("breakdown", $scores["breakdown_id"], "suite_test_id");