4 <title>WebKit Test Results</title>
5 <link rel="stylesheet" href="/common.css">
6 <style type="text/css">
16 <h1><a href="/">WebKit Test Results</a></h1>
18 <li><a href="/admin/update-master">Update Master</a></li>
22 <div id="mainContents">
23 <p><strong>FIXME: This page is broken!</strong></p>
26 require_once('../include/db.php');
27 require_once('../include/test-results.php');
29 function notice($message) {
30 echo "<p class='notice'>$message</p>";
33 define('MAX_FETCH_COUNT', 10);
35 function fetch_builders($db, $master) {
37 $builders_json = fetch_and_parse_test_results_json("http://$master/json/builders/");
39 return notice("Failed to fetch or decode /json/builders from $master");
41 echo "<h2>Fetching builds from $master</h2>\n";
44 foreach ($builders_json as $builder_name => $builder_data) {
45 if (!stristr($builder_name, 'Test') || stristr($builder_name, 'Apple Win'))
47 $builder_id = $db->select_or_insert_row('builders', NULL, array('master' => $master, 'name' => $builder_name));
48 $escaped_builder_name = htmlspecialchars($builder_name);
49 echo "<li><em>$escaped_builder_name</em> (id: $builder_id) - ";
52 $builds = $builder_data['cachedBuilds'];
53 foreach (array_reverse($builds) as $build_number) {
54 $build_number = intval($build_number);
55 $build = $db->select_or_insert_row('builds', NULL, array('builder' => $builder_id, 'number' => $build_number), NULL, '*');
56 if ($db->is_true($build['fetched']))
58 else if ($fetchCount >= MAX_FETCH_COUNT)
61 $class = fetch_build($db, $master, $builder_name, $build['id'], $build_number) ? 'fetched' : 'unfetched';
64 echo "<span class=\"$class\">$build_number</a> ";
73 function urlencode_without_plus($url) {
74 return str_replace('+', '%20', urlencode($url));
77 function fetch_build($db, $master, $builder_name, $build_id, $build_number) {
79 $builder_name = urlencode_without_plus($builder_name);
80 $build_json = fetch_and_parse_test_results_json("http://$master/json/builders/$builder_name/builds/$build_number");
81 if (!$build_json || !array_key_exists('times', $build_json) || count($build_json['times']) != 2)
86 foreach ($build_json['properties'] as $property) {
87 if ($property[0] == 'got_revision')
88 $revision = $property[1];
89 if ($property[0] == 'slavename')
90 $slavename = $property[2];
92 if (!$revision || !$slavename)
95 $start_time = float_to_time($build_json['times'][0]);
96 $end_time = float_to_time($build_json['times'][1]);
99 $full_results = fetch_and_parse_test_results_json("http://$master/results/$builder_name/r$revision%20($build_number)/full_results.json", TRUE);
100 return store_test_results($db, $full_results, $build_id, $revision, $start_time, $end_time, $slavename);
105 notice('Failed to connect to the database');
106 else if (array_key_exists('master', $_GET)) {
107 $master = htmlspecialchars($_GET['master']); // Okay since hostname shoudln't contain any HTML special characters.
108 if (in_array($master, config('masters')))
109 fetch_builders($db, $master);
111 notice("The master $master not found");
114 foreach (config('masters') as $master)
115 echo "<li><a href=\"?master=$master\">$master</a></li>\n";