User:Dominic/tinderbox 03a

From CDOT Wiki
< User:Dominic
Revision as of 17:16, 14 December 2007 by Dominic (talk | contribs) (tinderbox_03a.diff)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

? 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">

-
-

- -You're probably looking for -<A HREF="showbuilds.cgi">showbuilds.cgi</A>. -

-
-

+<html> + <script src="panelLoad.js"></script> + <link rel="stylesheet" type="text/css" href="defaultStyle.css" />

+

Tinderbox

+

This page refreshes every 5 minutes

+

<a href="showbuilds.cgi">For showbuilds.cgi click here</a>

+ <body onload="init();"> +

+

+

+
+

+ </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 = "";

+ + for(var tree in jsonDat) { + //alert("tree : " + tree); + quicklinks += "<a href='#" + tree + "'>" + tree + "</a> - ";

+ tindertable += "";

+ for(var build in jsonDat[tree]) { + //alert("build : " + build); + for(var bldr in jsonDat[tree][build]) {

+ tindertable += ""; + } + 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 "
Desc.Common Trees (Excluding l10n trees)
<a name='" + tree + "'>" + tree + "</a>" + bldr + "
";

+ //alert("bldr : " + bldr); + for(var property in jsonDat[tree][build][bldr]) { + tindertable += "    " +property + " : " + jsonDat[tree][build][bldr][property] + "
"; + }

+ tindertable += "
    \n";
        foreach (@list) {
    
    print "
  • <a href=admintree.cgi?tree=$_>$_</a>\n"; } print "
</TD></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)) {