Difference between revisions of "User:Dominic/tinderbox 03a"

From CDOT Wiki
Jump to: navigation, search
(tinderbox_03a.diff)
 
 
Line 1: Line 1:
? tinderbox_3a.diff
+
 
Index: defaultStyle.css
 
===================================================================
 
RCS file: defaultStyle.css
 
diff -N defaultStyle.css
 
--- /dev/null 1 Jan 1970 00:00:00 -0000
 
+++ defaultStyle.css 14 Dec 2007 20:54:30 -0000
 
@@ -0,0 +1,17 @@
 
+body {
 
+    font-family: Verdana, Sans-Serif;
 
+    text-align: center;
 
+}
 
+
 
+#tindertable tr th {
 
+    background-color: #AAA;
 
+}
 
+
 
+#tindertable tr td {
 
+    vertical-align: top;
 
+
 
+}
 
+/* needed because regular background-color overwrites tinderbox colors! */
 
+.bgcolor {
 
+    background-color: #EEE;
 
+}
 
Index: index.html
 
===================================================================
 
RCS file: /cvsroot/mozilla/webtools/tinderbox/index.html,v
 
retrieving revision 1.2
 
diff -u -8 -p -r1.2 index.html
 
--- index.html 31 Jan 2002 04:22:39 -0000 1.2
 
+++ index.html 14 Dec 2007 20:54:30 -0000
 
@@ -1,12 +1,16 @@
 
-<TITLE>tinderbox</TITLE>
 
-<META HTTP-EQUIV="Refresh" CONTENT="0; URL=showbuilds.cgi">
 
-<BODY  BGCOLOR="#FFFFFF" TEXT="#000000"
 
-        LINK="#0000EE" VLINK="#551A8B" ALINK="#FF0000">
 
-<CENTER>
 
-<TABLE BORDER=0 WIDTH="100%" HEIGHT="100%"><TR><TD ALIGN=CENTER VALIGN=CENTER>
 
-<FONT SIZE="+2">
 
-You're probably looking for
 
-<A HREF="showbuilds.cgi">showbuilds.cgi</A>.
 
-</FONT>
 
-</TD></TR></TABLE>
 
-</CENTER>
 
+<html>
 
+    <script src="panelLoad.js"></script>
 
+    <link rel="stylesheet" type="text/css" href="defaultStyle.css" />
 
+  <h1>Tinderbox</h1>
 
+  <p>This page refreshes every 5 minutes</p>
 
+  <p><a href="showbuilds.cgi">For showbuilds.cgi click here</a></p>
 
+  <body onload="init();">
 
+
 
+  <div id="quicklinks">
 
+  </div>
 
 
+  <div id="tindertable">
 
+  </div>
 
+  </body>
 
+</html>
 
+
 
Index: panelLoad.js
 
===================================================================
 
RCS file: panelLoad.js
 
diff -N panelLoad.js
 
--- /dev/null 1 Jan 1970 00:00:00 -0000
 
+++ panelLoad.js 14 Dec 2007 20:54:30 -0000
 
@@ -0,0 +1,73 @@
 
+ /*extern ActiveXObject, XMLHttpRequest, document, window */
 
+    var last_modified = new Date(0);
 
 
+    function init() {
 
+        loadAllTreeData();
 
+    }
 
+
 
+    function loadAllTreeData() {
 
+        var url = 'showbuilds.cgi?tree_list_json=1';
 
+        var req;
 
+       
 
+       
 
+        if (window.XMLHttpRequest) {
 
+            req = new XMLHttpRequest();
 
+        } else if (window.ActiveXObject) {
 
+            req = new ActiveXObject("Microsoft.XMLHTTP");
 
+        }
 
+       
 
+        req.open('GET', url, true);
 
+        req.setRequestHeader('If-Modified-Since', last_modified);
 
+        req.onreadystatechange = function() {
 
+            var jsonDat;
 
+            if (req.readyState != 4) {
 
+                return;
 
+            }
 
+            if (req.status == 200) {
 
+                last_modified = req.getResponseHeader('Last-Modified');
 
+                try {
 
+                    jsonDat = eval("(" + req.responseText.substring(0, req.responseText.length-2) + ")");
 
+                 
 
+                    // alert(req.responseText);
 
+                   
 
+                    var quicklinks = "";
 
+                    var tindertable = "<table border='0'><tr><th>Desc.</th><th colspan='3'>Common Trees (Excluding l10n trees)</th></tr>";
 
+                   
 
+                    for(var tree in jsonDat) {
 
+                        //alert("tree : " + tree);
 
+                        quicklinks += "<a href='#" + tree + "'>" + tree + "</a> - ";
 
+                        tindertable += "<tr><td class='bgcolor'><a name='" + tree + "'>" + tree + "</a></td>";
 
+                        for(var build in jsonDat[tree]) {
 
+                            //alert("build : " + build);
 
+                            for(var bldr in jsonDat[tree][build]) {
 
+                                tindertable += "<td class='bgcolor'>" + bldr + "<br/>";
 
+                                //alert("bldr : " + bldr);
 
+                                for(var property in jsonDat[tree][build][bldr]) {
 
+                                    tindertable += "&nbsp;&nbsp;&nbsp; " +property + " : " + jsonDat[tree][build][bldr][property] + "<br/>";
 
+                                }
 
+                            tindertable += "</td>";
 
+                            }
 
+                        tindertable += "</th>";
 
+                        }
 
+                    }
 
+                    tindertable += "</table>";
 
+                   
 
+                    document.getElementById("quicklinks").innerHTML = quicklinks;
 
+                    document.getElementById("tindertable").innerHTML = tindertable;
 
+
 
+                   
 
+                } catch(e) {
 
+                    alert("could not parse JSON data:" + e);
 
+                }
 
+            } else if (req.status == 304) {
 
+                return;
 
+            } else {
 
+                div.innerHTML = "Error code " + req.status + " loading " + url;
 
+            }
 
+        }
 
+
 
+        req.send(null);
 
+        return;
 
+    }
 
+
 
+  setInterval('init()', 300000);    // 5 minute refresh cycle
 
Index: showbuilds.cgi
 
===================================================================
 
RCS file: /cvsroot/mozilla/webtools/tinderbox/showbuilds.cgi,v
 
retrieving revision 1.197
 
diff -u -8 -p -r1.197 showbuilds.cgi
 
--- showbuilds.cgi 12 Jul 2007 23:06:23 -0000 1.197
 
+++ showbuilds.cgi 14 Dec 2007 20:54:30 -0000
 
@@ -16,27 +16,33 @@
 
# The Initial Developer of the Original Code is Netscape Communications
 
# Corporation. Portions created by Netscape are
 
# Copyright (C) 1998 Netscape Communications Corporation. All
 
# Rights Reserved.
 
#
 
# Contributor(s):
 
 
use strict;
 
-use lib "@TINDERBOX_DIR@";
 
+use lib "/var/www/tinderbox";
 
require 'tbglobals.pl';
 
require 'imagelog.pl';
 
require 'showbuilds.pl';
 
 
umask 002;
 
 
# Process the form arguments
 
my %form = &split_cgi_args();
 
 
-&show_tree_selector(\%form),  exit if $form{tree} eq '';
 
+if ($form{tree_list_json}) {
 
+    &show_tree_list_json(\%form);
 
+    exit;
 
+} elsif ($form{tree} eq '') {
 
+    &show_tree_selector(\%form);
 
+    exit;
 
+};
 
 
my $mode_count=0;
 
foreach my $mode ('quickparse', 'express', 'rdf', 'flash',
 
                  'static', 'panel', 'hdml', 'vxml', 'wml', 'json') {
 
    $mode_count++ if defined($form{$mode});
 
}
 
 
if ($mode_count > 1) {
 
Index: showbuilds.pl
 
===================================================================
 
RCS file: /cvsroot/mozilla/webtools/tinderbox/showbuilds.pl,v
 
retrieving revision 1.31
 
diff -u -8 -p -r1.31 showbuilds.pl
 
--- showbuilds.pl 13 Sep 2007 23:20:47 -0000 1.31
 
+++ showbuilds.pl 14 Dec 2007 20:54:31 -0000
 
@@ -15,17 +15,16 @@
 
# The Initial Developer of the Original Code is Netscape Communications
 
# Corporation. Portions created by Netscape are
 
# Copyright (C) 1998 Netscape Communications Corporation. All
 
# Rights Reserved.
 
#
 
# Contributor(s):
 
 
use strict;
 
-use Data::Dumper;
 
require 'header.pl';
 
 
my %colormap = (
 
                null      => 'a5a5a5',
 
                success    => '11DD11',
 
                busted    => 'EE0000',
 
                building  => 'EEFF00',
 
                testfailed => 'FFAA00'
 
@@ -125,26 +124,17 @@ sub do_tinderbox($) {
 
##
 
sub do_json($) {
 
    my ($form_ref) = (@_);
 
    my $tinderbox_data = tb_load_data($form_ref);
 
    if (!$form_ref->{static}) {
 
        print "Content-type: text/javascript\n";
 
        print "Content-Access-Control: allow <*>\n\n";
 
    }
 
-    print "tinderbox_data";
 
-    $Data::Dumper::Indent = 0;
 
-    my $line = Dumper($tinderbox_data);
 
-    $line =~ s/=>/:/g;
 
-    $line =~ s/\$VAR1//g;
 
-    $line =~ s/undef/'undef'/g;
 
-    $line =~ s/\n//g;
 
-    $line =~ s/\r//g;
 
-    $line =~ s/: ,/: '',/g;
 
-    print "$line\n";
 
+    dump_json($tinderbox_data);
 
}
 
 
sub print_page_head($$) {
 
    my ($form_ref, $td) = (@_);
 
    my $tree = $form_ref->{tree};
 
    print "Content-type: text/html\n\n<HTML>\n" unless $form_ref->{static};
 
 
    use POSIX qw(strftime);
 
Index: tbglobals.pl
 
===================================================================
 
RCS file: /cvsroot/mozilla/webtools/tinderbox/tbglobals.pl,v
 
retrieving revision 1.63
 
diff -u -8 -p -r1.63 tbglobals.pl
 
--- tbglobals.pl 29 Aug 2007 08:06:18 -0000 1.63
 
+++ tbglobals.pl 14 Dec 2007 20:54:31 -0000
 
@@ -21,16 +21,17 @@
 
 
use strict;
 
# Reading the log backwards saves time when we only want the tail.
 
use Backwards;
 
use Digest::MD5 qw(md5_hex);
 
use Tie::IxHash;
 
use FileHandle;
 
use Fcntl qw(:DEFAULT :flock);
 
+use Data::Dumper;
 
 
require 'header.pl';
 
 
#
 
# Global variabls and functions for tinderbox
 
#
 
 
#
 
@@ -49,17 +50,17 @@ $::CI_LINES_ADDED=9;
 
$::CI_LINES_REMOVED=10;
 
$::CI_LOG=11;
 
 
#
 
# Global variables
 
#
 
 
# Variables set from Makefile
 
-$::default_cvsroot = "@CVSROOT@";
 
+$::default_cvsroot = "/cvsroot";
 
$::data_dir='data';
 
 
@::global_tree_list = ();
 
undef @::global_tree_list;
 
 
%::global_treedata = undef;
 
 
# Always set nowdate to the current time.
 
@@ -170,16 +171,74 @@ sub show_tree_selector {
 
    print " <TABLE><TR><TD><UL>\n";
 
 
    foreach (@list) {
 
        print "<LI><a href=admintree.cgi?tree=$_>$_</a>\n";
 
    }
 
    print "</UL></TD></TR></TABLE></TD></TR></TABLE>";
 
}
 
 
+##
 
+# Return list of trees as JSON
 
+##
 
+
 
+sub show_tree_list_json($) {
 
+    print "Content-type: text/javascript\n";
 
+    print "Content-Access-Control: allow <*>\n\n";
 
+
 
+    my @requestedtreelist = &make_tree_list();
 
+
 
+    my %all_tree_data = ();
 
+    foreach my $tt (@requestedtreelist) {
 
+        next unless grep {$tt eq $_} @requestedtreelist;
 
+        tb_load_treedata($tt);
 
+        my %tree_data = ();
 
+        if (&is_tree_state_available($tt)) {
 
+            my $tree_state = &is_tree_open($tt) ? 'open' : 'closed';
 
+            my $bonsai_tree = $::global_treedata->{$tt}->{bonsai_tree};
 
+            $tree_data{'tree_state'} = $tree_state;
 
+            $tree_data{'bonsai_tree'} = $bonsai_tree;
 
+        }
 
+
 
+        my (%quickdata);
 
+        #tb_loadquickparseinfo($tt, $::nowdate, \%quickdata);
 
+        open(QP, "< $tt/quickparse.txt");
 
+        my @quickparse = <QP>;
 
+        close(QP);
 
+        foreach my $line (@quickparse) {
 
+            my ($type, $tree, $name, $status, $starttime, $binaryurl) =
 
+            split('\|', $line);
 
+            next unless ($type eq 'Build');
 
+            $all_tree_data{$tt}->{'builders'}->{$name} = {
 
+                status => $status,
 
+                starttime => $starttime,
 
+                binaryurl => $binaryurl,
 
+            };
 
+        }
 
+    }
 
+    print "tinderbox_data = ";
 
+    dump_json(\%all_tree_data);
 
+   
 
+#    print Dumper(%all_tree_data);
 
+}
 
+
 
+sub dump_json {
 
+    my ($data) = @_;
 
+    $Data::Dumper::Indent = 0;
 
+    my $line = Dumper($data);
 
+    $line =~ s/=>/:/g;
 
+    $line =~ s/\$VAR1//g;
 
+    $line =~ s/^ = //g;
 
+    $line =~ s/undef/'undef'/g;
 
+    $line =~ s/\n//g;
 
+    $line =~ s/\r//g;
 
+    $line =~ s/: ,/: '',/g;
 
+    print "$line\n";
 
+}
 
+
 
sub lock_datafile {
 
    my ($file) = @_;
 
 
    my $lock_fh = new FileHandle ">>$file"
 
      or die "Couldn't open semaphore file, $file: $!";
 
 
    # Get an exclusive lock with a non-blocking request
 
    unless (flock($lock_fh, LOCK_EX|LOCK_NB)) {
 

Latest revision as of 17:16, 14 December 2007