New flakiness dashboard should generate JSON in the background process
[WebKit-https.git] / Websites / test-results / public / admin / process-builds.php
1 <?php
2
3 require_once('../include/test-results.php');
4
5 ignore_user_abort(true); 
6 set_time_limit(0);
7
8 function process_latest_five_builds($db) {
9     $build_rows = $db->query_and_fetch_all('SELECT id, builder FROM builds
10         WHERE start_time IS NOT NULL AND is_processed = FALSE ORDER BY end_time DESC LIMIT 5');
11     if (!$build_rows)
12         return FALSE;
13
14     foreach ($build_rows as $row) {
15         echo "Build {$row['id']} for builder {$row['builder']}:\n";
16         echo "    Updating flakiness...";
17         flush();
18
19         $start_time = microtime(true);
20         update_flakiness_after_inserting_build($db, $row['id']);
21         $time = microtime(true) - $start_time;
22
23         echo "($time s)\n";
24         echo "    Generating JSONs...";
25         flush();
26
27         $start_time = microtime(true);
28         $generator = new ResultsJSONGenerator($db, $row['builder']);
29         $generator->generate('wrongexpectations');
30         $generator->generate('flaky');
31         $time = microtime(true) - $start_time;
32
33         echo "($time s)\n";
34         flush();
35
36         $db->query_and_get_affected_rows('UPDATE builds SET is_processed = TRUE where id = $1', array($row['id']));
37
38         sleep(1);
39     }
40
41     return TRUE;
42 }
43
44 function main() {
45     $db = new Database;
46     if (!$db->connect()) {
47         echo "Failed to connect to the database";
48         exit(1);
49     }
50
51     $wait = config('defaultBuildWaitInterval');
52     while (1) {
53         if (process_latest_five_builds($db))
54             $wait = max(1, $wait * 0.8);
55         else
56             $wait *= 2;
57         echo "Sleeping $wait s...\n";
58         sleep($wait);
59     }
60 }
61
62 main();
63
64 ?>