moved from lib

This commit is contained in:
kestes%staff.mail.com 2000-11-29 20:53:56 +00:00
parent dfbba819e6
commit 081306431a
4 changed files with 973 additions and 0 deletions

View File

@ -0,0 +1,216 @@
# $Revision: 1.1 $
# $Date: 2000/11/29 20:53:13 $
# $Author: kestes%staff.mail.com $
# $Source: /home/hwine/cvs_conversion/cvsroot/mozilla/webtools/tinderbox2/src/default_conf/BuildStatus.pm,v $
# $Name: $
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/NPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Tinderbox build tool.
#
# 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.
#
# complete rewrite by Ken Estes, Mail.com (kestes@staff.mail.com).
# Contributor(s):
package BuildStatus;
# for each Build status we have:
# color: to display it in on the buildpage
# handler: to execute actions each time the status is reported.
# description: to put in the legend
# order: to show us the how well this build did compared with other builds,
# bigger numbers means more progress
# The Tinderbox code should not depend on the set of status values in
# case we need to add more types later.
# possible new types include: unit-test-failed,
# perforance-test-failed, coverage-failed, lint-failed
# The Tinderbox code only hardcodes the values of: 'not_running',
# 'building' to determine if the build in question has completed and
# 'success' to dertermine if the build finished all that it was
# intended to do. The various gradations of failure are not tracked
# inside tinerbox but are useful for project managment.
# If new types are added, try and keep to a small set of colors or the
# display will get confusing. You may find it convienent to keep a
# distinction between different kinds of warnings or different kinds
# of tests but we suggest keeping all warnings and all tests get the
# same color.
# Each time a build update is sent to the tinderbox server, a handler
# function is run. This allows the local administrator to specify an
# arbitrary action to take each time a particular status is reported.
# This handler could be used to open a trouble ticket each time the
# build fails. There could be a new web page where developers could
# request notification (email, page) when the next build is done.
# This would allow developers to not watch the tinderbox webpage so
# intently but be informed when an interesting change has occured.
# Please send us interesting uses for the handler. We would like to
# make examples availible.
%STATUS = (
'not_running'=> {
# You may want this to be 'aqua' if you
# need to distinguish from 'building'
'html_color'=> 'yellow',
'hdml_char'=> '.',
'handler'=> \&main::null,
'description'=> 'Build is not running',
'order'=> 0,
},
'building' => {
'html_color'=> 'yellow',
'hdml_char'=> '.',
'handler'=> \&main::null,
'description'=> 'Build in progress',
'order'=> 1,
},
'build_failed' => {
'html_color' => 'red',
'hdml_char'=> '!',
'handler' => \&main::null,
'description' => 'Build failed',
'order' => 2
},
'test_failed' => {
'html_color' => 'orange',
'hdml_char'=> '~',
'handler' => \&main::null,
'description' => 'Build succeded but tests failed',
'order' => 3,
},
'success' => {
'html_color' => 'lime',
'hdml_char'=> '+',
'handler' => \&main::null,
'description'=> 'Build and all tests were successful',
'order' => 4,
},
);
sub run_status_handler {
my ($record) = @_;
my ($buildstatus) = $record->{'status'};
# run status dependent hook.
&{$BuildStatus::STATUS{$buildstatus}{'handler'}}($record);
# notice handlers never return any values.
return ;
}
sub is_status_valid {
my ($status) = @_;
if ( defined ($STATUS{$status}) ) {
return 1;
} else {
return 0;
}
}
sub get_all_status {
my (@status) = keys %STATUS;
return @status;
}
# return the states in an order sorted by $STATUS{*}{'order'}
sub get_all_sorted_status {
my @sorted_status = (
map { $_->[0] }
sort{ $a->[1] <=> $b->[1] }
map { [ $_, $STATUS{$_}{'order'} ] }
(keys %STATUS )
);
return @sorted_status;
}
# convert a list of status strings into a list of html_colors
sub status2html_colors {
my (@latest_status) = @_;
my @out;
for ($i=0; $i <= $#latest_status; $i++) {
my ($status) = $latest_status[$i];
my ($out) = $STATUS{$status}{'html_color'};
push @out, $out;
}
return @out;
}
# convert a list of status strings into a list of hdml_chars
sub status2hdml_chars {
my (@latest_status) = @_;
my @out;
for ($i=0; $i <= $#latest_status; $i++) {
my ($status) = $latest_status[$i];
my ($out) = $STATUS{$status}{'hdml_char'};
push @out, $out;
}
return @out;
}
# convert a list of status strings into a list of hdml_chars
sub status2descriptions {
my (@latest_status) = @_;
my @out;
for ($i=0; $i <= $#latest_status; $i++) {
my ($status) = $latest_status[$i];
my ($out) = $STATUS{$status}{'description'};
push @out, $out;
}
return @out;
}

View File

@ -0,0 +1,336 @@
# -*- Mode: perl; indent-tabs-mode: nil -*-
# Error_Parser.pm - parsing functions for build errors reported by
# various tools/OS's. Used by processmail to turn the build logs into
# HTML.
# $Revision: 1.1 $
# $Date: 2000/11/29 20:53:19 $
# $Author: kestes%staff.mail.com $
# $Source: /home/hwine/cvs_conversion/cvsroot/mozilla/webtools/tinderbox2/src/default_conf/Error_Parse.pm,v $
# $Name: $
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/NPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Tinderbox build tool.
#
# 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.
#
# complete rewrite by Ken Estes, Mail.com (kestes@staff.mail.com).
# Contributor(s):
package Error_Parse;
$VERSION = '#tinder_version#';
# the rest of the code does not depend on knowing the different
# line_types. We may need to add new types like:
# 'warning_style', 'warning_fix_required',
# 'error_test', 'error_test_performance'
# These new types would be useful for the "build warnings page" since
# not every warning may be considered interesting by QA. Allowing a
# flexible error type will allow QA to define types of warnigns of
# interest and other warnings may only be interesting during
# particular types of builds.
# If new types are added try and keep to a small set of colors or the
# display will get confusing. You may find it convienent to keep a
# distinction between different kinds of warnings or different kinds
# of tests but all warnings and all tests get the same color.
# Be careful when changing the function line_type. An improperly
# tuned version can take up 50% (as shown by perl -d:DProf ) of the
# execution time.
%LINE_TYPE2COLOR = (
'error' => "navy",
'warning' => "maroon",
'info' => "black",
);
# This block adjusts how we format the error logs, perhaps it belongs
# in another file and not the error_parse file. Processmail is a
# candidate.
{
# window of context arround error message, for summary log
# created by Error_Parse.pm and processmail
$LINES_AFTER_ERROR = 5;
$LINES_BEFORE_ERROR = 30;
# number of characters width the line number gets in HTML pages
# (mostly the build log pages)
$LINENO_COLUMN = 6;
}
package Error_Parse::unix;
sub line_type {
my ($line) = @_;
$error = (
($line =~ /\b[Ee]rror\b/) || # C make error
($line =~ /\b[Ff]atal\b/) || # link error
($line =~ /\b[Aa]ssertion\b/) || # test error
($line =~ /\b[Aa]borted\b/) || # cvs error
($line =~ /\b[Ff]ailed\b/) || # java nmake
($line =~ /Unknown host /) || # cvs error
($line =~ /\: cannot find module/) || # cvs error
($line =~ /\^C /) || # cvs merge conflict
($line =~ /Couldn\'t find project file /) || # CW project error
($line =~ /Creating new precompiled header/) || # Wastes time.
($line =~ /No such file or directory/) || # cpp error
($line =~ /jmake.MakerFailedException:/) || # Java error
0);
if ($error) {
return('error');
}
$warning = (
($line =~ m/^[-._\/A-Za-z0-9]+\.[A-Za-z0-9]+\:[0-9]+\:/) ||
($line =~ m/^\"[-._\/A-Za-z0-9]+\.[A-Za-z0-9]+\"\, line [0-9]+\:/) ||
($line =~ m/\b[Ww]arning\b/) ||
($line =~ m/not implemented:/) ||
0);
if ($warning) {
return('warning');
}
return('info');
}
sub parse_errorline {
local( $line ) = @_;
if( $line =~ /^(([A-Za-z0-9_]+\.[A-Za-z0-9]+)\:([0-9]+)\:)/ ){
my ($error_msg) = $1;
my ($error_file_ref) = $2;
my ($error_line) = $3;
return ($error_file_ref, $error_line);
}
if ( $line =~ /^(\"([A-Za-z0-9_]+\.[A-Za-z0-9]+)\"\, line ([0-9]+)\:)/ ){
my ($error_msg) = $1;
my ($error_file_ref) = $2;
my ($error_line) = $3;
return ($error_file_ref, $error_line);
}
return undef;
}
package Error_Parse::windows;
sub line_type {
my ($line) = @_;
$error = (
($line =~ /\b[Ee]rror\b/) || # C make error
($line =~ /\b[Ff]atal\b/) || # link error
($line =~ /\b[Aa]ssertion\b/) || # test error
($line =~ /\b[Aa]borted\b/) || # cvs error
($line =~ /\b[Ff]ailed\b/) || # java nmake
($line =~ /Unknown host /) || # cvs error
($line =~ /\: cannot find module/) || # cvs error
($line =~ /\^C /) || # cvs merge conflict
($line =~ /Couldn\'t find project file /) || # CW project error
($line =~ /Creating new precompiled header/) || # Wastes time.
($line =~ /No such file or directory/) || # cpp error
0);
if ($error) {
return('error');
}
$warning = (
($line =~ m/^[-._\/A-Za-z0-9]+\.[A-Za-z0-9]+\:[0-9]+\:/) ||
($line =~ m/^\"[-._\/A-Za-z0-9]+\.[A-Za-z0-9]+\"\, line [0-9]+\:/) ||
($line =~ m/\bwarning\b/) ||
($line =~ m/not implemented:/) ||
0);
if ($warning) {
return('warning');
}
return('info');
}
sub parse_errorline {
local( $line ) = @_;
if( $line =~ m@(ns([\\/][a-z0-9\._]+)*)@i ){
my $error_file = $1;
my $error_file_ref = lc $error_file;
$error_file_ref =~ s@\\@/@g;
$line =~ m/\(([0-9]+)\)/;
my $error_line = $1;
return ($error_file_ref, $error_line);
}
if( $line =~ m@(^([A-Za-z0-9_]+\.[A-Za-z])+\(([0-9]+)\))@ ){
my $error_file = $1;
my $error_file_ref = lc $2;
my $error_line = $3;
$error_file_ref =~ s@\\@/@g;
return ($error_file_ref, $error_line);
}
return ;
}
package Error_Parse::mac;
sub line_type {
my ($line) = @_;
$error = (
($line =~ /\b[Ee]rror\b/) || # C make error
($line =~ /\b[Ff]atal\b/) || # link error
($line =~ /\b[Aa]ssertion\b/) || # test error
($line =~ /\b[Aa]borted\b/) || # cvs error
($line =~ /\b[Ff]ailed\b/) || # java nmake
($line =~ /Unknown host /) || # cvs error
($line =~ /\: cannot find module/) || # cvs error
($line =~ /\^C /) || # cvs merge conflict
($line =~ /\bCouldn\'t find project file /) || # CW project
($line =~ /\bCan\'t (create)|(open)|(find) /) || # CW project error
0);
($error) &&
return('error');
$warning = (
($line =~ m/^[-._\/A-Za-z0-9]+\.[A-Za-z0-9]+\:[0-9]+\:/) ||
($line =~ m/^\"[-._\/A-Za-z0-9]+\.[A-Za-z0-9]+\"\, line [0-9]+\:/) ||
($line =~ m/warning/i) ||
($line =~ m/not implemented:/i) ||
0);
($warning) &&
return('warning');
return('info');
}
sub parse_errorline {
local( $line ) = @_;
if( $line =~ /^(([A-Za-z0-9_]+\.[A-Za-z0-9]+) line ([0-9]+))/ ){
my $error_file = $1;
my $error_file_ref = $2;
my $error_line = $3;
return ($error_file_ref, $error_line);
}
return ;
}
=head1 NAME
Error_Parser - methods used by showlogs.cgi
=head1 SYNOPSIS
C<require Error_Parse::unix;>
=head1 DESCRIPTION
The methods provided by this package are designed to be used in
conjunction with showlogs.cgi. This file contains code for parsing
out the error messages of various build tools. There are different
name spaces for each build type and a set of parsing programs in each
namespace. Currently build types are the major OS (Unix, Mac,
Windows). It may be possible in the future to have a single universal
parsing program or alternatly to have build types specify a list of
parsing programs for each tool (compler, make language, script) which
is used in the build process then a build would also need to specify a
list of tools that are used. This may be necessary as people run unix
compilers on NT and vice versa.
=head1 METHODS
=over 2
=item line_type
returns a string discribing if the line has any errors or warnings.
The list of types may grow in the future as some warnings become more
important then others. The possible return codes are:
'error'
'warning'
'info'
=cut
=item has_errorline
returns undef if the input line does not contains a parsable error.
If the line contains a parsable error it returns the list
($error_file_ref, $error_line);
where:
$error_file_ref: the file which has the error
$error_line: the line the error was found on
=head1 AUTHOR
Ken Estes (kestes@staff.mail.com)
=cut
1;

View File

@ -0,0 +1,202 @@
# -*- Mode: perl; indent-tabs-mode: nil -*-
# FileStructure.pm - The lookup for where different file/directories,
# for each tree, are stored on the filesystem. Local system
# administrator may need to put different trees onto different disk
# partitions and this will require making get_filename() less regular
# then we have defined it here.
# $Revision: 1.1 $
# $Date: 2000/11/29 20:53:25 $
# $Author: kestes%staff.mail.com $
# $Source: /home/hwine/cvs_conversion/cvsroot/mozilla/webtools/tinderbox2/src/default_conf/FileStructure.pm,v $
# $Name: $
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/NPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Tinderbox build tool.
#
# 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.
#
# complete rewrite by Ken Estes, Mail.com (kestes@staff.mail.com).
# Contributor(s):
package FileStructure;
$VERSION = '#tinder_version#';
# I wish to do away with images. They do not add much to the display
# and they make a bunch of clutter.
%IMAGES = (
'flames' => '1afi003r.gif',
'star' => 'star.gif',
);
# the url to the tinderbox server binary directory
$URL_BIN = ($TinderConfig::URL_BIN ||
"http://tinderbox.mozilla.org/cgibin");
# the url to the tinderbox server HTML directory
$URL_HTML = ($TinderConfig::URL_HTML ||
"http://tinderbox.mozilla.org/");
%URLS = (
# url to main tinderbox executable
'tinderd' => "$URL_BIN/tinder.cgi",
# url to show notices for users who can not view popup windows.
'shownote' => "$URL_BIN/shownote.cgi",
'admintree' => "$URL_BIN/admintree.cgi",
'addnote' => "$URL_BIN/addnote.cgi",
'gunzip' => "$URL_BIN/gunzip.cgi",
'treepages' => "$URL_HTML",
);
# the full path name tinderbox will use to access the tinderbox
# servers root data directory
$TINDERBOX_HTML_DIR = ($TinderConfig::TINDERBOX_HTML_DIR ||
"/usr/apache/cgibin/webtools/tinderbox");
$TINDERBOX_DATA_DIR = ($TinderConfig::TINDERBOX_DATA_DIR ||
"/usr/apache/cgibin/webtools/tinderbox");
$GLOBAL_INDEX_FILE = ($TinderConfig::GLOBAL_INDEX_FILE ||
"index.html");
$LOCK_FILE = ($TinderConfig::LOCK_FILE ||
"/usr/apache/cgibin/webtools/tinderbox/tinderd.lock");
# the default page for a tree
$DEFAULT_HTML_PAGE = $TinderConfig::DEFAULT_HTML_PAGE || 'index.html';
# The lookup for where different file/directories are stored on the
# filesystem. Local system administrator may need to put different
# trees onto different disk partitions and this will require making
# get_filename() less regular then we have defined it here.
sub get_filename {
my ($tree, $file,) = @_;
(TreeData::tree_exists($tree)) ||
die("tree: $tree does not exist\n");
my ($html_tree_dir) = "$TINDERBOX_HTML_DIR/$tree";
my ($data_tree_dir) = "$TINDERBOX_DATA_DIR/$tree";
# all the file names this program uses appear below
my %all_files =
(
# where the database files are stored on disk. For debugging it
# is useful to have this inside the webservers document root so
# that all browsers can examine the raw data. For security you
# may want this outside the webservers document root, so that the
# raw data can not be seen.
'TinderDB_Dir'=> "$data_tree_dir/db",
# header data files are placed in this directory. Same issues
# with document root as above.
'TinderHeader_Dir'=> "$data_tree_dir/h",
# setting it like this lets you have each tree have a different
# set of administrators.
'passwd' => "$data_tree_dir/h/passwd.DBdat",
# setting it like this lets you have one set of adminstrators for
# all trees.
#'passwd' => "$TINDERBOX_DATA_DIR/passwd.DBdat",
# The build log files will be turned into html and stored
# here. Lets have just one big full/brief directory for
# all the trees this will make cleanup easier and no one
# goes browsing through the tree specific log dir anyway.
'full-log' => "$TINDERBOX_HTML_DIR/full",
'brief-log' => "$TINDERBOX_HTML_DIR/brief",
# where the binary files mailed inside the build log files will
# be placed.
'build_bin_dir' => "$html_tree_dir/bin",
# the per tree time stamp file to ensure all updates are at least
# $TinderDB::TABLE_SPACING apart
'update_time_stamp' => "$data_tree_dir/db/Mail.Build.time.stamp",
# where the tree specific generated html pages are placed
# in this directory
'tree_HTML' => $html_tree_dir,
'tree_URL' => "$URL_HTML/$tree",
# the index file to all summary pages and the status page for
# this tree.
'index'=> "$html_tree_dir/index.html",
# there are automated bots who need the header data, they extract
# it from this file.
'alltree_headers' => "$html_tree_dir/alltree_headers.html",
);
my $out = $all_files{$file};
($out) ||
die("error in function FileStructure::all_files: ".
"file: $file does not exist\n");
# Restrict the characters allowed in a file name to a known safe
# set.
$out = main::extract_filename_chars($out);
return $out;
}
1;

View File

@ -0,0 +1,219 @@
# -*- Mode: perl; indent-tabs-mode: nil -*-
# TinderConfig -
# $Revision: 1.1 $
# $Date: 2000/11/29 20:53:56 $
# $Author: kestes%staff.mail.com $
# $Source: /home/hwine/cvs_conversion/cvsroot/mozilla/webtools/tinderbox2/src/default_conf/TinderConfig.pm,v $
# $Name: $
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/NPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Tinderbox build tool.
#
# 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.
#
# complete rewrite by Ken Estes, Mail.com (kestes@staff.mail.com).
# Contributor(s):
package TinderConfig;
# The url to the tinderbox server binary directory
$URL_BIN = "http://tinderbox.mozilla.org/cgibin";
# The url to the tinderbox server HTML directory
$URL_HTML = "http://tinderbox.mozilla.org/";
# The full path name tinderbox will use to access the tinderbox
# servers root data directory where the html will be written.
$TINDERBOX_HTML_DIR = "/usr/apache/cgibin/webtools/tinderbox";
# The full path name tinderbox will use to access the tinderbox
# servers root data directory where the data will be written. For
# debugging you may wish to make this the same as the
# $TINDERBOX_HTML_DIR and set Persistence::Dumper. This setting will
# allow a browser can look at the internal data structures. For
# production use it is more secure to keep internal tinderbox data
# outside of the HTML tree so that the webserver can not send the
# internal data over the network.
$TINDERBOX_DATA_DIR = "/usr/apache/cgibin/webtools/tinderbox";
# The top level tinderbox index file. Change this if you wish to
# provide your own index file for tinderboxs web pages.
$GLOBAL_INDEX_FILE = "index.html";
# Error log filename:
$ERROR_LOG = "/var/log/tinderbox/log";
# Where the daemon mode lock (for all trees) is placed
$LOCK_FILE = $TINDERBOX_HTML_DIR."/tinderd.lock";
# The time between auto refreshes for all pages in seconds.
$REFRESH_TIME = (60 * 15);
# Pick how you wish to the Tinderbox popup windows to be implemented:
# Uncomment only one HTMLPopUp implementation.
# MajorCoolWindow: Should be portable to all browsers
# MozillaLayers: Will not display on any browser other then Netscape
# None: A null implementation which will not use any popups
# provide no popup windows. Use this if you do not run
# JavaScript in your browsers.
$PopUpImpl = (
# 'HTMLPopUp::MozillaLayers',
'HTMLPopUp::MajorCoolWindow',
# 'HTMLPopUp::None',
);
# Use the DB implementations you wish to use.
# These uses determine the columns of the build page and their
# include order is the order in which the columns are displayed.
# The main choice of implementations is how to gather information
# about checkins. You can currently choose whether you are using
# bonsai or are using CVS raw.
@DBImpl = (
'TinderDB::Time',
'TinderDB::VC_CVS',
'TinderDB::Notice',
'TinderDB::BT_Generic',
'TinderDB::Build',
);
# What border should the status legends use? new browers allow us to
# frame the parts of the legend without putting a border arround the
# individual cells.
#$DB_LEGEND_BORDER = "border rules=none";
$DB_LEGEND_BORDER = "";
# Spacing on html page (in minutes), this resticts the
# minimum time between builds (to this value plus 5 minutes).
$DB_TABLE_SPACING = 5;
# Number of times a database can be updated before its contents must
# be trimmed of old data. This scan of the database is used to
# collect data about average build time so we do not want it
# performed too infrequently.
$DB_MAX_UPDATES_SINCE_TRIM = 50;
# Number of seconds to keep in Database, older data will be trimmed
# away.
$DB_TRIM_SECONDS = (60 * 60 * 24 * 8);
@HeaderImpl = (
'TinderHeader::Build',
'TinderHeader::IgnoreBuilds',
'TinderHeader::MOTD',
# TinderDB::VC_Bonsai provides a
# TinderHeader::TreeState implementation,
# so comment out the TreeSTate if using
# VC_Bonsai. Most VC implementations will
# not have a State file in the version
# control system.
'TinderHeader::TreeState',
);
# Each of the TinderHeader method appears on the left side of this
# hash and gets a default value. You must have a default value for
# every header even if you do not use an implementation for it.
%HEADER2DEFAULT_HTML = (
# the build module has one piece of info
# which goes in the header, our best guess
# as to when the tree broke.
'Build' => "",
'IgnoreBuilds' => "",
'MOTD' => "",
'TreeState' => "Open",
);
# Pick one display system if your VC system can display via a web
# server then VCDisplay module that you wish to use, otherwise pick
# 'None'.
$VCDisplayImpl = (
'VCDisplay::None',
#'VCDisplay::Bonsai',
);
# Pick one method for storting data, Data::Dumper is slow but text
# files allows great debugging capabilities and Storable, availible
# from CPAN, which is a much faster binary format.
$PersistenceImpl = (
'Persistence::Dumper',
# 'Persistence::Storable',
);
# If you your using VCDisplay:Bonsai we need to know how to make HMTL
# to point to the bonsai CGI programs.
$BONSAI_URL = "http://tinderbox.mozilla.org/bonsai";
# The default number of hours shown on the status page
$DEFAULT_DISPLAY_HOURS = 6;
# The default page for a tree, used in several types of href links to
# 'return to the tree'.
#$DEFAULT_HTML_PAGE = 'index.html';
$DEFAULT_HTML_PAGE = 'status.html';
# The amount of time rmlogs keeps logs on file
$BRIEF_LOG_TRIM_DAYS = 1;
$FULL_LOG_TRIM_DAYS = 7;
# Should we write performance data to the log file?
# zero means no, one means yes.
$LOG_PERFORMANCE = 0;
1;