gecko-dev/tools/tests/SmokeTestLinux-1.pl

205 строки
6.8 KiB
Perl

#! /usr/bin/perl
# hacked together by bsharma@netscape.com and phillip@netscape.com
use Cwd;
use FileHandle;
#some vars that depend on the location of apprunner.
#apprunner_bin should be the only thing you need to change to get this to work...
$apprunner_bin = '/u/phillip/seamonkey/linux/package';
#$apprunner_bin = '/build/mozilla/dist/bin';
$apprunner = "$apprunner_bin/apprunner";
$apprunner_samples = "$apprunner_bin/res/samples";
$apprunner_log = '/tmp/apprunnerlog.txt';
$mail_log = '/tmp/maillog.txt';
$test_duration = 30; # seconds
# we fork and launch apprunner in a few spots around here, so let's define
# this just once:
$ENV{'MOZILLA_FIVE_HOME'}="$apprunner_bin";
$ENV{'LD_LIBRARY_PATH'}="/usr/lib:/lib:$apprunner_bin";
# here are a few subroutines we use:
# get_build_date - look through navigator.xul for the build id (1999-04-18-08)
# returns the string
# get_date - returns a preformatted string containing the date and time
# launch_apprunner - takes a parameter (or the null string)
# so it begins
open (REPORT_FILE, '>report.html');
REPORT_FILE->autoflush();
print (REPORT_FILE "<HTML><HEAD><TITLE>Smoke Test Report File </TITLE></HEAD>\n");
print (REPORT_FILE "<BODY>\n");
print (REPORT_FILE "<H1><CENTER> Seamonkey Build Smoke Tests Report\n");
print (REPORT_FILE "<BR>Linux</CENTER></H1><B><CENTER>\n");
print (REPORT_FILE "<BR>\n");
print (REPORT_FILE &get_date);
print (REPORT_FILE "</B></CENTER>\n <BR>\n <B><CENTER>\n Build Number: " . &get_build_date . " </CENTER></B>\n <BR>\n <HR>\n");
&launch_apprunner();
# pessimistically assume that this will fail
# just look for the string loaded successfully in the log file
$load_result = "NOT";
open (APP_LOG_FILE, "< $apprunner_log");
while (<APP_LOG_FILE>)
{
chop;
if (/loaded successfully/)
{ #since the start page was loaded successfully,
#we can say that Apprunner loaded successfully
$load_result = "";
}
}
close (APP_LOG_FILE);
print (REPORT_FILE "<B><Center>\n");
# load_result tells you if the test failed
print (REPORT_FILE "Apprunner $load_result Loaded Successfully");
print (REPORT_FILE "</B></Center>\n");
print (REPORT_FILE "<BR>\n");
print (REPORT_FILE "<HR>\n");
print (REPORT_FILE "<B><CENTER><font size=+2>\n");
print (REPORT_FILE "Loading Sites Results");
print (REPORT_FILE "</font></CENTER></B>\n");
@url_list = ("http://www.yahoo.com",
"http://www.netscape.com",
"http://www.excite.com",
"http://www.microsoft.com",
"http://www.city.net",
"http://www.mirabilis.com",
"http://www.pathfinder.com/welcome",
"http://www.warnerbros.com/home_moz3_day.html",
"http://www.cnn.com",
"http://www.usatoday.com",
"http://www.disney.go.com",
"http://www.hotwired.com",
"http://www.hotbot.com",
"http://slip/projects/marvin/bft/browser/bft_frame_index.html",
"file://$apprunner_samples/test6.html",
"http://slip/projects/marvin/bft/browser/bft_browser_applet.html",
"http://www.abcnews.com",
"http://slip/projects/marvin/bft/browser/bft_browser_imagemap.html",
"file://$apprunner_samples/test2.html",
"file://$apprunner_samples/test13.html",
"file://$apprunner_samples/test13.html",
"file://$apprunner_samples/test2.html",
"http://slip/projects/marvin/bft/browser/bft_browser_html_mix3.html",
"http://slip/projects/marvin/bft/browser/bft_browser_link.html");
my $i;
my $style;
# launch apprunner once for every browser test in the url_list
################################################################################
for ($i = 0; $i < $#url_list; $i ++)
{
print " @url_list[$i]\n";
&launch_apprunner(@url_list[$i]);
$load_result = "NOT";
open (APP_LOG_FILE, "< $apprunner_log");
while (<APP_LOG_FILE>)
{
chop;
#if (/@url_list[$i]/ and /loaded successfully/)
if (/loaded successfully/)
{
$load_result = "";
}
}
# print in red if there's a failure
if ( $load_result eq "NOT" ) {
$style = "style='color: red;'";
} else { $style = ""; }
print (REPORT_FILE "<B $style>\n<a href=\"@url_list[$i]\">@url_list[$i]</a> $load_result Loaded Successfully</B>\n<BR>\n");
}
close (APP_LOG_FILE);
# now it's time to check mail
# not yet functional
################################################################################
#open (LOG_FILE, "< $mail_log");
#while (<LOG_FILE>)
#{
# chop;
# $load_result = "NOT";
# if (/Mailbox Done/){
# $load_result = "";
# }
# print (REPORT_FILE "<B>\n$load_result</B>\n<BR>\n");
#}
# close the report, and we're done!
################################################################################
print (REPORT_FILE "<HR>\n<BR>\n<BR>\n<B><CENTER>\n");
print (REPORT_FILE &get_date());
print (REPORT_FILE "</CENTER></B>\n");
print (REPORT_FILE "<BR>\n<BR>\n<HR>\n<BR>\n<BR>\n");
print (REPORT_FILE "</BODY>\n");
print (REPORT_FILE "</HTML>\n");
close (REPORT_FILE);
################################################################################
################################################################################
##### Subroutines go here . . . ################################################
################################################################################
################################################################################
sub get_build_date {
open (XUL_FILE, "< $apprunner_samples/navigator.xul");
$BuildNo = "";
$LineList;
while (<XUL_FILE>)
{
chop;
if (/Build ID/)
{
@LineList = split / /;
$BuildNo = $LineList[4];
}
}
close( XUL_FILE );
$BuildNo =~ s/"/ /g;
return $BuildNo;
}
sub launch_apprunner{
my $url = shift || "";
if ( $pid = fork ) {
# parent will wait $test_duration seconds, then kill kid.
sleep ( $test_duration );
system("killall -9 apprunner");
}
else {
#child runs aprrunner to see if it even launches.
print "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n";
if ( $url eq "" ){
exec "$apprunner > $apprunner_log 2>&1";
} else {
exec "$apprunner -url $url > $apprunner_log 2>&1";
}
print "exec error: this line of code should never be reached\n" and die;
}
}
sub get_date {
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst)= localtime;
%weekday= (
"1", "Monday",
'2', 'Tuesday',
'3', 'Wednesday',
'4', 'Thursday',
'5', 'Friday',
'6', 'Saturday',
'7', 'Sunday',
);
$mon += 1;
return sprintf "%s %02d/%02d/19%02d %02d:%02d:%02d" ,$weekday{$wday},$mon,$mday,$year,$hour,$min,$sec;
}