#! /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 "Smoke Test Report File \n"); print (REPORT_FILE "\n"); print (REPORT_FILE "

Seamonkey Build Smoke Tests Report\n"); print (REPORT_FILE "
Linux

\n"); print (REPORT_FILE "
\n"); print (REPORT_FILE &get_date); print (REPORT_FILE "
\n
\n
\n Build Number: " . &get_build_date . "
\n
\n
\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 () { 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 "
\n"); # load_result tells you if the test failed print (REPORT_FILE "Apprunner $load_result Loaded Successfully"); print (REPORT_FILE "
\n"); print (REPORT_FILE "
\n"); print (REPORT_FILE "
\n"); print (REPORT_FILE "
\n"); print (REPORT_FILE "Loading Sites Results"); print (REPORT_FILE "
\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 () { 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 "\n@url_list[$i] $load_result Loaded Successfully\n
\n"); } close (APP_LOG_FILE); # now it's time to check mail # not yet functional ################################################################################ #open (LOG_FILE, "< $mail_log"); #while () #{ # chop; # $load_result = "NOT"; # if (/Mailbox Done/){ # $load_result = ""; # } # print (REPORT_FILE "\n$load_result\n
\n"); #} # close the report, and we're done! ################################################################################ print (REPORT_FILE "
\n
\n
\n
\n"); print (REPORT_FILE &get_date()); print (REPORT_FILE "
\n"); print (REPORT_FILE "
\n
\n
\n
\n
\n"); print (REPORT_FILE "\n"); print (REPORT_FILE "\n"); close (REPORT_FILE); ################################################################################ ################################################################################ ##### Subroutines go here . . . ################################################ ################################################################################ ################################################################################ sub get_build_date { open (XUL_FILE, "< $apprunner_samples/navigator.xul"); $BuildNo = ""; $LineList; while () { 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; }