mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-05 08:35:26 +00:00
4578 lines
179 KiB
Diff
4578 lines
179 KiB
Diff
Index: Makefile
|
|
===================================================================
|
|
RCS file: /cvsroot/mozilla/js/tests/Makefile,v
|
|
retrieving revision 1.16
|
|
diff -p -U 8 -r1.16 Makefile
|
|
--- Makefile 6 Feb 2008 20:06:39 -0000 1.16
|
|
+++ Makefile 25 Jun 2008 17:31:15 -0000
|
|
@@ -17,21 +17,19 @@ spidermonkey-extensions-n.tests: $(TEST_
|
|
find . -name '*.js' | grep -v shell.js | grep -v browser.js | grep '/extensions/' | sed 's|\.\/||' | sort > $@
|
|
|
|
menu-list.txt:
|
|
echo "http://$(TEST_HTTP)/tests/mozilla.org/$(JSDIR)/menu.html" > menu-list.txt
|
|
|
|
confidential-failures.txt:
|
|
touch confidential-failures.txt
|
|
|
|
-failures.txt: public-failures.txt confidential-failures.txt
|
|
- cp public-failures.txt public-failures.txt.save
|
|
- cp confidential-failures.txt confidential-failures.txt.save
|
|
- sort < public-failures.txt | uniq | ./create-patterns.pl > public-failures.$$
|
|
- mv public-failures.$$ public-failures.txt
|
|
- sort < confidential-failures.txt | uniq | ./create-patterns.pl > confidential-failures.$$
|
|
- mv confidential-failures.$$ confidential-failures.txt
|
|
- cat public-failures.txt confidential-failures.txt | sort | uniq > failures.txt
|
|
+public-failures.txt.expanded: public-failures.txt universe.data
|
|
+ pattern-expander.pl public-failures.txt > public-failures.txt.expanded
|
|
|
|
-clean:
|
|
- rm -f menubody.html menu.html menu-list.txt failures.txt excluded-*.tests included-*.tests urllist*.html urllist*.tests
|
|
+confidential-failures.txt.expanded: confidential-failures.txt universe.data
|
|
+ pattern-expander.pl confidential-failures.txt > confidential-failures.txt.expanded
|
|
|
|
+failures.txt: public-failures.txt.expanded confidential-failures.txt.expanded
|
|
+ sort -u public-failures.txt.expanded confidential-failures.txt.expanded > failures.txt
|
|
|
|
+clean:
|
|
+ rm -f menubody.html menu.html menu-list.txt failures.txt *failures.txt.expanded excluded-*.tests included-*.tests urllist*.html urllist*.tests
|
|
Index: Patterns.pm
|
|
===================================================================
|
|
RCS file: Patterns.pm
|
|
diff -N Patterns.pm
|
|
--- /dev/null 1 Jan 1970 00:00:00 -0000
|
|
+++ Patterns.pm 25 Jun 2008 17:31:15 -0000
|
|
@@ -0,0 +1,223 @@
|
|
+# -*- Mode: Perl; tab-width: 4; indent-tabs-mode: nil; -*-
|
|
+# ***** BEGIN LICENSE BLOCK *****
|
|
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
+#
|
|
+# 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/MPL/
|
|
+#
|
|
+# 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 Mozilla JavaScript Testing Utilities
|
|
+#
|
|
+# The Initial Developer of the Original Code is
|
|
+# Mozilla Corporation.
|
|
+# Portions created by the Initial Developer are Copyright (C) 2008
|
|
+# the Initial Developer. All Rights Reserved.
|
|
+#
|
|
+# Contributor(s): Bob Clary <bclary@bclary.com>
|
|
+#
|
|
+# Alternatively, the contents of this file may be used under the terms of
|
|
+# either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
+# in which case the provisions of the GPL or the LGPL are applicable instead
|
|
+# of those above. If you wish to allow use of your version of this file only
|
|
+# under the terms of either the GPL or the LGPL, and not to allow others to
|
|
+# use your version of this file under the terms of the MPL, indicate your
|
|
+# decision by deleting the provisions above and replace them with the notice
|
|
+# and other provisions required by the GPL or the LGPL. If you do not delete
|
|
+# the provisions above, a recipient may use your version of this file under
|
|
+# the terms of any one of the MPL, the GPL or the LGPL.
|
|
+#
|
|
+# ***** END LICENSE BLOCK *****
|
|
+
|
|
+package Patterns;
|
|
+
|
|
+sub getuniversekey
|
|
+{
|
|
+ my ($machinerecord, $excludeduniversefield) = @_;
|
|
+ my $i;
|
|
+ my $key = '';
|
|
+
|
|
+# dbg("getuniversekey: \$machinerecord=" . recordtostring($machinerecord) . ", \$excludeduniversefield=$excludeduniversefield");
|
|
+
|
|
+ for ($i = 0; $i < @universefields; $i++)
|
|
+ {
|
|
+# dbg("getuniversekey: \$universefields[$i]=$universefields[$i]");
|
|
+
|
|
+ if ($universefields[$i] ne $excludeduniversefield)
|
|
+ {
|
|
+ $key .= $machinerecord->{$universefields[$i]}
|
|
+ }
|
|
+ }
|
|
+
|
|
+# dbg("getuniversekey=$key");
|
|
+
|
|
+ return $key;
|
|
+}
|
|
+
|
|
+sub getuniverse
|
|
+{
|
|
+ my ($universekey, $excludeduniversefield) = @_;
|
|
+ my $i;
|
|
+ my $value;
|
|
+ my $testrun;
|
|
+ my @universe = ();
|
|
+ my %universehash = ();
|
|
+
|
|
+ dbg("getuniverse: \$universekey=$universekey, \$excludeduniversefield=$excludeduniversefield");
|
|
+
|
|
+ for ($i = 0; $i < @testruns; $i++)
|
|
+ {
|
|
+ $testrun = $testruns[$i];
|
|
+# dbg("getuniverse: \$testruns[$i]=" . recordtostring($testrun));
|
|
+ $testrununiversekey = getuniversekey($testrun, $excludeduniversefield);
|
|
+# dbg("getuniverse: \$testrununiversekey=$testrununiversekey");
|
|
+ if ($testrununiversekey =~ /$universekey/)
|
|
+ {
|
|
+# dbg("getuniverse: matched \$testrununiversekey=$testrununiversekey to \$universekey=$universekey");
|
|
+ $value = $testrun->{$excludeduniversefield};
|
|
+
|
|
+# dbg("getuniverse: \$testrun->{$excludeduniversefield}=$value");
|
|
+
|
|
+ if (! $universehash{$value} )
|
|
+ {
|
|
+# dbg("getuniverse: pushing $value");
|
|
+ push @universe, ($value);
|
|
+ $universehash{$value} = 1;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ @universe = sort @universe;
|
|
+ dbg("getuniverse=" . join(',', @universe));
|
|
+ return @universe;
|
|
+}
|
|
+
|
|
+sub recordtostring
|
|
+{
|
|
+ my ($record) = @_;
|
|
+ my $j;
|
|
+ my $line = '';
|
|
+ my $field;
|
|
+
|
|
+ for ($j = 0; $j < @recordfields - 1; $j++)
|
|
+ {
|
|
+ $field = $recordfields[$j];
|
|
+# dbg("recordtostring: \$field=$field, \$record->{$field}=$record->{$field}");
|
|
+ $line .= "$field=$record->{$field}, ";
|
|
+ }
|
|
+ $field = $recordfields[$#recordfields];
|
|
+# dbg("recordtodtring: \$field=$field, \$record->{$field}= $record->{$field}");
|
|
+ $line .= "$field=$record->{$field}";
|
|
+
|
|
+ return $line;
|
|
+}
|
|
+
|
|
+sub dumprecords
|
|
+{
|
|
+ my $record;
|
|
+ my $line;
|
|
+ my $prevline = '';
|
|
+ my $i;
|
|
+
|
|
+ dbg("dumping records");
|
|
+
|
|
+# @records = sort sortrecords @records;
|
|
+
|
|
+ for ($i = 0; $i < @records; $i++)
|
|
+ {
|
|
+ $record = $records[$i];
|
|
+ $line = recordtostring($record);
|
|
+ if ($line eq $prevline)
|
|
+ {
|
|
+# dbg("DUPLICATE $line") if ($DEBUG);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ print "$line\n";
|
|
+ $prevline = $line;
|
|
+ }
|
|
+ }
|
|
+}
|
|
+
|
|
+sub sortrecords
|
|
+{
|
|
+ return recordtostring($a) cmp recordtostring($b);
|
|
+}
|
|
+
|
|
+sub dbg
|
|
+{
|
|
+ if ($DEBUG)
|
|
+ {
|
|
+ print STDERR "DEBUG: " . join(" ", @_) . "\n";
|
|
+ }
|
|
+}
|
|
+
|
|
+sub copyreference
|
|
+{
|
|
+ my ($fromreference) = @_;
|
|
+ my $toreference = {};
|
|
+ my $key;
|
|
+
|
|
+ foreach $key (keys %{$fromreference})
|
|
+ {
|
|
+ $toreference->{$key} = $fromreference->{$key};
|
|
+ }
|
|
+ return $toreference;
|
|
+}
|
|
+
|
|
+#my @recordfields;
|
|
+#my @universefields;
|
|
+#my %machines;
|
|
+#my @testruns;
|
|
+
|
|
+
|
|
+BEGIN
|
|
+{
|
|
+ dbg("begin");
|
|
+
|
|
+ my $test_dir = $ENV{TEST_DIR} || "/work/mozilla/mozilla.com/test.mozilla.com/www";
|
|
+
|
|
+ $DEBUG = $ENV{DEBUG};
|
|
+
|
|
+ @recordfields = ('TEST_ID', 'TEST_BRANCH', 'TEST_BUILDTYPE', 'TEST_TYPE', 'TEST_OS', 'TEST_KERNEL', 'TEST_PROCESSORTYPE', 'TEST_MEMORY', 'TEST_CPUSPEED', 'TEST_TIMEZONE', 'TEST_RESULT', 'TEST_EXITSTATUS', 'TEST_DESCRIPTION');
|
|
+ @sortkeyfields = ('TEST_ID', 'TEST_RESULT', 'TEST_EXITSTATUS', 'TEST_DESCRIPTION', 'TEST_BRANCH', 'TEST_BUILDTYPE', 'TEST_TYPE', 'TEST_OS', 'TEST_KERNEL', 'TEST_PROCESSORTYPE', 'TEST_MEMORY', 'TEST_CPUSPEED', 'TEST_TIMEZONE', );
|
|
+ @universefields = ('TEST_BRANCH', 'TEST_BUILDTYPE', 'TEST_TYPE', 'TEST_OS', 'TEST_KERNEL', 'TEST_PROCESSORTYPE', 'TEST_MEMORY', 'TEST_CPUSPEED', 'TEST_TIMEZONE');
|
|
+
|
|
+ @records = ();
|
|
+
|
|
+ @testruns = ();
|
|
+
|
|
+ open TESTRUNS, "<$test_dir/tests/mozilla.org/js/universe.data" or die "$?";
|
|
+
|
|
+ while (<TESTRUNS>) {
|
|
+
|
|
+ chomp;
|
|
+
|
|
+ my $record = {};
|
|
+
|
|
+ my ($test_os, $test_kernel, $test_processortype, $test_memory, $test_cpuspeed, $test_timezone, $test_branch, $test_buildtype, $test_type) = $_ =~
|
|
+ /^TEST_OS=([^,]*), TEST_KERNEL=([^,]*), TEST_PROCESSORTYPE=([^,]*), TEST_MEMORY=([^,]*), TEST_CPUSPEED=([^,]*), TEST_TIMEZONE=([^,]*), TEST_BRANCH=([^,]*), TEST_BUILDTYPE=([^,]*), TEST_TYPE=([^,]*)/;
|
|
+
|
|
+ $record->{TEST_BRANCH} = $test_branch;
|
|
+ $record->{TEST_BUILDTYPE} = $test_buildtype;
|
|
+ $record->{TEST_TYPE} = $test_type;
|
|
+ $record->{TEST_OS} = $test_os;
|
|
+ $record->{TEST_KERNEL} = $test_kernel;
|
|
+ $record->{TEST_PROCESSORTYPE} = $test_processortype;
|
|
+ $record->{TEST_MEMORY} = $test_memory;
|
|
+ $record->{TEST_CPUSPEED} = $test_cpuspeed;
|
|
+ $record->{TEST_TIMEZONE} = $test_timezone;
|
|
+
|
|
+ push @testruns, ($record);
|
|
+ }
|
|
+
|
|
+ close TESTRUNS;
|
|
+
|
|
+}
|
|
+
|
|
+1;
|
|
Index: changes.sh
|
|
===================================================================
|
|
RCS file: changes.sh
|
|
diff -N changes.sh
|
|
--- /dev/null 1 Jan 1970 00:00:00 -0000
|
|
+++ changes.sh 25 Jun 2008 17:31:15 -0000
|
|
@@ -0,0 +1,120 @@
|
|
+#!/bin/bash
|
|
+# -*- Mode: Shell-script; tab-width: 4; indent-tabs-mode: nil; -*-
|
|
+
|
|
+# ***** BEGIN LICENSE BLOCK *****
|
|
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
+#
|
|
+# 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/MPL/
|
|
+#
|
|
+# 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 Mozilla JavaScript Testing Utilities
|
|
+#
|
|
+# The Initial Developer of the Original Code is
|
|
+# Mozilla Corporation.
|
|
+# Portions created by the Initial Developer are Copyright (C) 2008
|
|
+# the Initial Developer. All Rights Reserved.
|
|
+#
|
|
+# Contributor(s): Bob Clary <bclary@bclary.com>
|
|
+#
|
|
+# Alternatively, the contents of this file may be used under the terms of
|
|
+# either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
+# in which case the provisions of the GPL or the LGPL are applicable instead
|
|
+# of those above. If you wish to allow use of your version of this file only
|
|
+# under the terms of either the GPL or the LGPL, and not to allow others to
|
|
+# use your version of this file under the terms of the MPL, indicate your
|
|
+# decision by deleting the provisions above and replace them with the notice
|
|
+# and other provisions required by the GPL or the LGPL. If you do not delete
|
|
+# the provisions above, a recipient may use your version of this file under
|
|
+# the terms of any one of the MPL, the GPL or the LGPL.
|
|
+#
|
|
+# ***** END LICENSE BLOCK *****
|
|
+
|
|
+# usage: changes.sh [prefix]
|
|
+#
|
|
+# combines the {prefix}*possible-fixes.log files into {prefix}possible-fixes.log
|
|
+# and {prefix}*possible-regressions.log files into
|
|
+# possible-regressions.log.
|
|
+#
|
|
+# This script is useful in cases where log files from different machines, branches
|
|
+# and builds are being investigated.
|
|
+
|
|
+if cat /dev/null | sed -r 'q' > /dev/null 2>&1; then
|
|
+ SED="sed -r"
|
|
+elif cat /dev/null | sed -E 'q' > /dev/null 2>&1; then
|
|
+ SED="sed -E"
|
|
+else
|
|
+ echo "Neither sed -r or sed -E is supported"
|
|
+ exit 2
|
|
+fi
|
|
+
|
|
+workfile=`mktemp work.XXXXXXXX`
|
|
+if [ $? -ne 0 ]; then
|
|
+ echo "Unable to create working temp file"
|
|
+ exit 2
|
|
+fi
|
|
+
|
|
+for f in ${1}*results-possible-fixes.log*; do
|
|
+ case $f in
|
|
+ *.log)
|
|
+ CAT=cat
|
|
+ ;;
|
|
+ *.log.bz2)
|
|
+ CAT=bzcat
|
|
+ ;;
|
|
+ *.log.gz)
|
|
+ CAT=zcat
|
|
+ ;;
|
|
+ *.log.zip)
|
|
+ CAT="unzip -c"
|
|
+ ;;
|
|
+ *)
|
|
+ echo "unknown log type: $f"
|
|
+ exit 2
|
|
+ ;;
|
|
+ esac
|
|
+
|
|
+ $CAT $f | $SED "s|$|:$f|" >> $workfile
|
|
+
|
|
+done
|
|
+
|
|
+sort -u $workfile > ${1}possible-fixes.log
|
|
+
|
|
+rm $workfile
|
|
+
|
|
+
|
|
+for f in ${1}*results-possible-regressions.log*; do
|
|
+ case $f in
|
|
+ *.log)
|
|
+ CAT=cat
|
|
+ ;;
|
|
+ *.log.bz2)
|
|
+ CAT=bzcat
|
|
+ ;;
|
|
+ *.log.gz)
|
|
+ CAT=zcat
|
|
+ ;;
|
|
+ *.log.zip)
|
|
+ CAT="unzip -c"
|
|
+ ;;
|
|
+ *)
|
|
+ echo "unknown log type: $f"
|
|
+ exit 2
|
|
+ ;;
|
|
+ esac
|
|
+ $CAT $f >> $workfile
|
|
+done
|
|
+
|
|
+sort -u $workfile > ${1}possible-regressions.log
|
|
+
|
|
+rm $workfile
|
|
+
|
|
+
|
|
+
|
|
Index: create-patterns.pl
|
|
===================================================================
|
|
RCS file: create-patterns.pl
|
|
diff -N create-patterns.pl
|
|
--- create-patterns.pl 1 Oct 2007 19:10:41 -0000 1.1
|
|
+++ /dev/null 1 Jan 1970 00:00:00 -0000
|
|
@@ -1,264 +0,0 @@
|
|
-#!/usr/bin/perl
|
|
-# -*- Mode: Perl; tab-width: 4; indent-tabs-mode: nil; -*-
|
|
-
|
|
-# ***** BEGIN LICENSE BLOCK *****
|
|
-# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
-#
|
|
-# 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/MPL/
|
|
-#
|
|
-# 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 Mozilla JavaScript Testing Utilities
|
|
-#
|
|
-# The Initial Developer of the Original Code is
|
|
-# Mozilla Corporation.
|
|
-# Portions created by the Initial Developer are Copyright (C) 2007
|
|
-# the Initial Developer. All Rights Reserved.
|
|
-#
|
|
-# Contributor(s): Bob Clary <bclary@bclary.com>
|
|
-#
|
|
-# Alternatively, the contents of this file may be used under the terms of
|
|
-# either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
-# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
-# in which case the provisions of the GPL or the LGPL are applicable instead
|
|
-# of those above. If you wish to allow use of your version of this file only
|
|
-# under the terms of either the GPL or the LGPL, and not to allow others to
|
|
-# use your version of this file under the terms of the MPL, indicate your
|
|
-# decision by deleting the provisions above and replace them with the notice
|
|
-# and other provisions required by the GPL or the LGPL. If you do not delete
|
|
-# the provisions above, a recipient may use your version of this file under
|
|
-# the terms of any one of the MPL, the GPL or the LGPL.
|
|
-#
|
|
-# ***** END LICENSE BLOCK *****
|
|
-
|
|
-# make stderr, stdout unbuffered
|
|
-
|
|
-select STDERR; $| = 1;
|
|
-select STDOUT; $| = 1;
|
|
-
|
|
-my $regchars = '\[\^\-\]\|\{\}\?\*\+\.\<\>\$\(\)';
|
|
-
|
|
-sub escape_patterns;
|
|
-sub unescape_patterns;
|
|
-sub debug;
|
|
-
|
|
-my $debug = $ENV{DEBUG};
|
|
-my @outputlines = ();
|
|
-my @inputlines = ();
|
|
-
|
|
-while (<ARGV>) {
|
|
- chomp;
|
|
-
|
|
- # remove irrelevant data the caller is required to remove any
|
|
- # other data which should not be considered during the
|
|
- # consolidation such as TEST_MACHINE, etc.
|
|
-
|
|
- s/TEST_DATE=[^,]*,/TEST_DATE=.*,/;
|
|
-
|
|
- push @inputlines, ($_);
|
|
-
|
|
-}
|
|
-
|
|
-my @fieldnames = ('TEST_BRANCH', 'TEST_BUILDTYPE', 'TEST_TYPE', 'TEST_OS', 'TEST_PROCESSORTYPE', 'TEST_KERNEL', 'TEST_TIMEZONE');
|
|
-
|
|
-my $pass = 0;
|
|
-my $changed = 1;
|
|
-
|
|
-while ($changed) {
|
|
-
|
|
- # repeated loop until no changes are made.
|
|
-
|
|
- ++$pass;
|
|
- $changed = 0;
|
|
-
|
|
- debug "pass $pass, " . ($#inputlines + 1) . " inputlines, " . ($#outputlines + 1) . " outputlines\n";
|
|
-
|
|
- foreach $field (@fieldnames) {
|
|
-
|
|
- debug "pass $pass, processing $field, " . ($#inputlines + 1) . " inputlines, " . ($#outputlines + 1) . " outputlines\n";
|
|
-
|
|
- # process each field across all lines so that later consolidations
|
|
- # will match consolidated field values
|
|
-
|
|
- while ($inputline = shift(@inputlines)) {
|
|
-
|
|
- debug "inputline $inputline\n";
|
|
-
|
|
- # get the current field value from the current input line
|
|
-
|
|
- ($inputvalue) = $inputline =~ /$field=\(?([^,\)]*)\)?,/;
|
|
-
|
|
- if ($inputvalue eq '.*') {
|
|
-
|
|
- # if the current input value is the any wildcard,
|
|
- # then there is no need to perform a consolidation
|
|
- # on the field.
|
|
-
|
|
- push @outputlines, ($inputline);
|
|
-
|
|
- next;
|
|
- }
|
|
-
|
|
- # turn "off" any regular expression characters in the input line
|
|
-
|
|
- $pattern = escape_pattern($inputline);
|
|
-
|
|
- # Make the current field in the current pattern an any
|
|
- # wildcard so that it will match any value. We are looking
|
|
- # for all other lines that only differ from the current line by
|
|
- # the current field value
|
|
-
|
|
- $pattern =~ s/$field=[^,]*,/$field=.*,/;
|
|
-
|
|
- # find the matches to the current pattern
|
|
-
|
|
- debug "pattern: $pattern\n";
|
|
-
|
|
- @matched = grep /$pattern/, (@inputlines, @outputlines);
|
|
- @unmatched = grep !/$pattern/, @inputlines;
|
|
-
|
|
- debug "" . ($#matched + 1) . " matched, " . ($#unmatched + 1) . " unmatched, " . ($#inputlines + 1) . " inputlines, " . ($#outputlines + 1) . " outputlines\n";
|
|
-
|
|
- if (@matched) {
|
|
-
|
|
- # the input line matched others
|
|
-
|
|
- $outputvalue = $inputvalue;
|
|
-
|
|
- foreach $matchline (@matched) {
|
|
-
|
|
- ($matchvalue) = $matchline =~ /$field=\(?([^,\)]*)\)?,/;
|
|
-
|
|
- if ( $inputvalue !~ /$matchvalue/ && $matchvalue !~ /$inputvalue/) {
|
|
-
|
|
- # the current match value and input value
|
|
- # do not overlap so add the match
|
|
- # field value as regular expression
|
|
- # alternation | to the current field value
|
|
-
|
|
- debug "adding regexp alternation to $field: inputvalue: $inputvalue, matchvalue: $matchvalue";
|
|
-
|
|
- $outputvalue .= "|$matchvalue";
|
|
- }
|
|
- } # foreach matchline
|
|
-
|
|
- # replace the current inputs field value with the
|
|
- # consolidated value
|
|
-
|
|
- if ($outputvalue =~ /\|/) {
|
|
- $outputvalue = "(" . join('|', sort(split(/\|/, $outputvalue))) . ")";
|
|
- }
|
|
- $inputline =~ s/$field=[^,]*,/$field=$outputvalue,/;
|
|
- debug "$inputline\n";
|
|
-
|
|
- $changes = 1;
|
|
- }
|
|
- push @outputlines, ($inputline);
|
|
-
|
|
- @inputlines = @unmatched;
|
|
-
|
|
- } # while inputline
|
|
-
|
|
- @inputlines = @outputlines;
|
|
- @outputlines = ();
|
|
-
|
|
- } # foreach field
|
|
-}
|
|
-
|
|
-@inputlines = sort @inputlines;
|
|
-
|
|
-my $output = join"\n", @inputlines;
|
|
-
|
|
-debug "output: " . ($#inputlines + 1) . " lines\n";
|
|
-
|
|
-print "$output\n";
|
|
-
|
|
-### # look for over specified failures
|
|
-###
|
|
-### $field = 'TEST_DESCRIPTION';
|
|
-###
|
|
-### while ($inputline = shift(@inputlines)) {
|
|
-###
|
|
-### debug "inputline $inputline\n";
|
|
-###
|
|
-### # turn "off" any regular expression characters in the input line
|
|
-###
|
|
-### $pattern = escape_pattern($inputline);
|
|
-###
|
|
-### # Make the TEST_DESCRIPTION field in the current pattern an any
|
|
-### # wildcard so that it will match any value. We are looking
|
|
-### # for all other lines that only differ from the current line by
|
|
-### # the TEST_DESCRIPTION. These will be the potentially overspecified
|
|
-### # failures.
|
|
-###
|
|
-### $pattern =~ s/$field=[^,]*,/$field=.*,/;
|
|
-###
|
|
-### # find the matches to the current pattern
|
|
-###
|
|
-### debug "pattern: $pattern\n";
|
|
-###
|
|
-### @matched = grep /$pattern/, @inputlines;
|
|
-### @unmatched = grep !/$pattern/, @inputlines;
|
|
-###
|
|
-### debug "" . ($#matched + 1) . " matched, " . ($#unmatched + 1) . " unmatched, " . ($#inputlines + 1) . " inputlines, " . ($#outputlines + 1) . " outputlines\n";
|
|
-###
|
|
-### if (@matched) {
|
|
-###
|
|
-### # the inputline overspecifies an error
|
|
-###
|
|
-### push @matched, ($inputline);
|
|
-###
|
|
-### foreach $matchline (@matched) {
|
|
-###
|
|
-### print STDERR "OVERSPECIFIED? : $matchline\n";
|
|
-###
|
|
-### } # foreach matchline
|
|
-###
|
|
-### }
|
|
-###
|
|
-### @inputlines = @unmatched;
|
|
-###
|
|
-### } # while inputline
|
|
-###
|
|
-
|
|
-
|
|
-
|
|
-sub escape_pattern {
|
|
-
|
|
- # unlike the known-failures.pl, this escape escapes the entire
|
|
- # line to make it not contain any active regular expression patterns
|
|
- # so that any matched will be literal and not regular
|
|
- my $line = shift;
|
|
-
|
|
- chomp;
|
|
-
|
|
- # replace unescaped regular expression characters in the
|
|
- # description so they are not interpreted as regexp chars
|
|
- # when matching descriptions. leave the escaped regexp chars
|
|
- # `regexp alone so they can be unescaped later and used in
|
|
- # pattern matching.
|
|
-
|
|
- # see perldoc perlre
|
|
-
|
|
- $line =~ s/\\/\\\\/g;
|
|
-
|
|
- # escape regexpchars
|
|
- $line =~ s/([$regchars])/\\$1/g;
|
|
-
|
|
- return "$line";
|
|
-
|
|
-}
|
|
-
|
|
-sub debug {
|
|
- my $msg;
|
|
- if ($debug) {
|
|
- $msg = shift;
|
|
- print "DEBUG: $msg\n";
|
|
- }
|
|
-}
|
|
Index: get-universe.sh
|
|
===================================================================
|
|
RCS file: get-universe.sh
|
|
diff -N get-universe.sh
|
|
--- /dev/null 1 Jan 1970 00:00:00 -0000
|
|
+++ get-universe.sh 25 Jun 2008 17:31:15 -0000
|
|
@@ -0,0 +1,48 @@
|
|
+#!/bin/bash -e
|
|
+# -*- Mode: Shell-script; tab-width: 4; indent-tabs-mode: nil; -*-
|
|
+
|
|
+# ***** BEGIN LICENSE BLOCK *****
|
|
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
+#
|
|
+# 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/MPL/
|
|
+#
|
|
+# 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 Mozilla JavaScript Testing Utilities
|
|
+#
|
|
+# The Initial Developer of the Original Code is
|
|
+# Mozilla Corporation.
|
|
+# Portions created by the Initial Developer are Copyright (C) 2007
|
|
+# the Initial Developer. All Rights Reserved.
|
|
+#
|
|
+# Contributor(s): Bob Clary <bclary@bclary.com>
|
|
+#
|
|
+# Alternatively, the contents of this file may be used under the terms of
|
|
+# either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
+# in which case the provisions of the GPL or the LGPL are applicable instead
|
|
+# of those above. If you wish to allow use of your version of this file only
|
|
+# under the terms of either the GPL or the LGPL, and not to allow others to
|
|
+# use your version of this file under the terms of the MPL, indicate your
|
|
+# decision by deleting the provisions above and replace them with the notice
|
|
+# and other provisions required by the GPL or the LGPL. If you do not delete
|
|
+# the provisions above, a recipient may use your version of this file under
|
|
+# the terms of any one of the MPL, the GPL or the LGPL.
|
|
+#
|
|
+# ***** END LICENSE BLOCK *****
|
|
+
|
|
+# usage: get-universe.sh logfile(s) > universe.data
|
|
+#
|
|
+# get-universe.sh reads the processed javascript logs and writes to
|
|
+# stdout the unique set of fields to be used as the "universe" of test
|
|
+# run data. These values are used by pattern-expander.pl and
|
|
+# pattern-extracter.pl to encode the known failure files into regular
|
|
+# expressions.
|
|
+
|
|
+sed 's|.*\(TEST_BRANCH.*\), \(TEST_OS.*\), TEST_RESULT.*|\2, \1|' $@ | sort -u
|
|
Index: known-failures.pl
|
|
===================================================================
|
|
RCS file: /cvsroot/mozilla/js/tests/known-failures.pl,v
|
|
retrieving revision 1.5
|
|
diff -p -U 8 -r1.5 known-failures.pl
|
|
--- known-failures.pl 23 Mar 2008 21:42:44 -0000 1.5
|
|
+++ known-failures.pl 25 Jun 2008 17:31:16 -0000
|
|
@@ -44,30 +44,32 @@ use Getopt::Mixed "nextOption";
|
|
sub debug;
|
|
sub usage;
|
|
sub parse_options;
|
|
sub escape_pattern;
|
|
sub unescape_pattern;
|
|
|
|
# option arguments
|
|
|
|
-my $option_desc = "b=s branch>b T=s buildtype>T t=s testtype>t l=s rawlogfile>l f=s failurelogfile>f o=s os>o r=s patterns>r z=s timezone>z O=s outputprefix>O A=s arch>A K=s kernel>K D debug>D";
|
|
+my $option_desc = "b=s branch>b T=s buildtype>T t=s testtype>t o=s os>o K=s kernel>K A=s arch>A M=s memory>M S=s speed>S z=s timezone>z l=s rawlogfile>l f=s failurelogfile>f r=s patterns>r O=s outputprefix>O D debug>D";
|
|
|
|
my $testid;
|
|
my $branch;
|
|
my $buildtype;
|
|
my $testtype;
|
|
my $rawlogfile;
|
|
my $failurelogfile;
|
|
my $os;
|
|
my $patterns;
|
|
my $timezone;
|
|
my $outputprefix;
|
|
my $arch;
|
|
my $kernel;
|
|
+my $memory;
|
|
+my $cpuspeed;
|
|
my $debug = $ENV{DEBUG};
|
|
|
|
# pattern variables
|
|
|
|
my $knownfailurebranchpattern;
|
|
my $failurebranchpattern;
|
|
my $knownfailureospattern;
|
|
my $failureospattern;
|
|
@@ -76,16 +78,20 @@ my $failurebuildtypepattern;
|
|
my $knownfailuretesttypepattern;
|
|
my $failuretesttypepattern;
|
|
my $knownfailuretimezonepattern;
|
|
my $failuretimezonepattern;
|
|
my $knownfailurearchpattern;
|
|
my $failurearchpattern;
|
|
my $knownfailurekernelpattern;
|
|
my $failurekernelpattern;
|
|
+my $knownfailurememorypattern;
|
|
+my $failurememorypattern;
|
|
+my $knownfailurecpuspeedpattern;
|
|
+my $failurecpuspeedpattern;
|
|
|
|
my @patterns;
|
|
my $pattern;
|
|
my @failures;
|
|
my @fixes;
|
|
my @excludedtests;
|
|
my $excludedtest;
|
|
my $excludedfile;
|
|
@@ -139,44 +145,44 @@ foreach $includedfile ( @includedfiles )
|
|
s/\s+$//;
|
|
|
|
$includedtests{$_} = 1;
|
|
}
|
|
close INCLUDED;
|
|
}
|
|
|
|
debug "loading patterns $patterns";
|
|
-debug "pattern filter: /^TEST_ID=[^,]*, TEST_BRANCH=$knownfailurebranchpattern, TEST_RESULT=[^,]*, TEST_BUILDTYPE=$knownfailurebuildtypepattern, TEST_TYPE=$knownfailuretesttypepattern, TEST_OS=$knownfailureospattern, TEST_MACHINE=[^,]*, TEST_PROCESSORTYPE=$knownfailurearchpattern, TEST_KERNEL=$knownfailurekernelpattern, TEST_DATE=[^,]*, TEST_TIMEZONE=$knownfailuretimezonepattern,/\n";
|
|
+debug "pattern filter: ^TEST_ID=[^,]*, TEST_BRANCH=$knownfailurebranchpattern, TEST_BUILDTYPE=$knownfailurebuildtypepattern, TEST_TYPE=$knownfailuretesttypepattern, TEST_OS=$knownfailureospattern, TEST_KERNEL=$knownfailurekernelpattern, TEST_PROCESSORTYPE=$knownfailurearchpattern, TEST_MEMORY=$knownfailurememorypattern, TEST_CPUSPEED=$knownfailurecpuspeedpattern, TEST_TIMEZONE=$knownfailuretimezonepattern,";
|
|
|
|
open PATTERNS, "<$patterns" or die "Unable to open known failure patterns file $patterns: $!\n";
|
|
while (<PATTERNS>) {
|
|
chomp;
|
|
|
|
s/\s+$//;
|
|
|
|
($testid) = $_ =~ /^TEST_ID=([^,]*),/;
|
|
|
|
if (!$includedtests{$testid})
|
|
{
|
|
debug "test $testid was not included during this run";
|
|
}
|
|
- elsif ($_ =~ /^TEST_ID=[^,]*, TEST_BRANCH=$knownfailurebranchpattern, TEST_RESULT=[^,]*, TEST_BUILDTYPE=$knownfailurebuildtypepattern, TEST_TYPE=$knownfailuretesttypepattern, TEST_OS=$knownfailureospattern, TEST_MACHINE=[^,]*, TEST_PROCESSORTYPE=$knownfailurearchpattern, TEST_KERNEL=$knownfailurekernelpattern, TEST_DATE=[^,]*, TEST_TIMEZONE=$knownfailuretimezonepattern,/) {
|
|
+ elsif ($_ =~ /^TEST_ID=[^,]*, TEST_BRANCH=$knownfailurebranchpattern, TEST_BUILDTYPE=$knownfailurebuildtypepattern, TEST_TYPE=$knownfailuretesttypepattern, TEST_OS=$knownfailureospattern, TEST_KERNEL=$knownfailurekernelpattern, TEST_PROCESSORTYPE=$knownfailurearchpattern, TEST_MEMORY=$knownfailurememorypattern, TEST_CPUSPEED=$knownfailurecpuspeedpattern, TEST_TIMEZONE=$knownfailuretimezonepattern,/) {
|
|
debug "adding pattern : $_";
|
|
push @patterns, (escape_pattern($_));
|
|
}
|
|
else {
|
|
debug "skipping pattern: $_";
|
|
}
|
|
|
|
}
|
|
close PATTERNS;
|
|
|
|
# create a working copy of the current failures which match the users selection
|
|
|
|
-debug "failure filter: ^TEST_ID=[^,]*, TEST_BRANCH=$failurebranchpattern, TEST_RESULT=FAIL[^,]*, TEST_BUILDTYPE=$failurebuildtypepattern, TEST_TYPE=$failuretesttypepattern, TEST_OS=$failureospattern, TEST_MACHINE=[^,]*, TEST_PROCESSORTYPE=$failurearchpattern, TEST_KERNEL=$failurekernelpattern, TEST_DATE=[^,]*, TEST_TIMEZONE=$failuretimezonepattern,";
|
|
+debug "failure filter: ^TEST_ID=[^,]*, TEST_BRANCH=$failurebranchpattern, TEST_BUILDTYPE=$failurebuildtypepattern, TEST_TYPE=$failuretesttypepattern, TEST_OS=$failureospattern, TEST_KERNEL=$failurekernelpattern, TEST_PROCESSORTYPE=$failurearchpattern, TEST_MEMORY=$failurememorypattern, TEST_CPUSPEED=$failurecpuspeedpattern, TEST_TIMEZONE=$failuretimezonepattern, TEST_RESULT=FAIL[^,]*,/";
|
|
|
|
if (defined($rawlogfile)) {
|
|
|
|
$failurelogfile = "$outputprefix-results-failures.log";
|
|
my $alllog = "$outputprefix-results-all.log";
|
|
|
|
debug "writing failures $failurelogfile";
|
|
|
|
@@ -184,39 +190,53 @@ if (defined($rawlogfile)) {
|
|
open ALLLOG, ">$alllog" or die "Unable to open $alllog $!\n";
|
|
open FAILURELOG, ">$failurelogfile" or die "Unable to open $failurelogfile $!\n";
|
|
|
|
while (<INPUTLOG>) {
|
|
chomp;
|
|
|
|
print ALLLOG "$_\n";
|
|
|
|
- if ($_ =~ /^TEST_ID=[^,]*, TEST_BRANCH=$failurebranchpattern, TEST_RESULT=FAIL[^,]*, TEST_BUILDTYPE=$failurebuildtypepattern, TEST_TYPE=$failuretesttypepattern, TEST_OS=$failureospattern, TEST_MACHINE=[^,]*, TEST_PROCESSORTYPE=$failurearchpattern, TEST_KERNEL=$failurekernelpattern, TEST_DATE=[^,]*, TEST_TIMEZONE=$failuretimezonepattern,/) {
|
|
+ if ($_ =~ /^TEST_ID=[^,]*, TEST_BRANCH=$failurebranchpattern, TEST_BUILDTYPE=$failurebuildtypepattern, TEST_TYPE=$failuretesttypepattern, TEST_OS=$failureospattern, TEST_KERNEL=$failurekernelpattern, TEST_PROCESSORTYPE=$failurearchpattern, TEST_MEMORY=$failurememorypattern, TEST_CPUSPEED=$failurecpuspeedpattern, TEST_TIMEZONE=$failuretimezonepattern, TEST_RESULT=FAIL[^,]*,/) {
|
|
debug "failure: $_";
|
|
push @failures, ($_);
|
|
print FAILURELOG "$_\n";
|
|
}
|
|
}
|
|
close INPUTLOG;
|
|
my $inputrc = $?;
|
|
close ALLLOG;
|
|
close FAILURELOG;
|
|
|
|
die "FATAL ERROR in post-process-logs.pl" if $inputrc != 0;
|
|
-
|
|
}
|
|
-else {
|
|
-
|
|
+else
|
|
+{
|
|
debug "loading failures $failurelogfile";
|
|
|
|
- open FAILURES, "<$failurelogfile" or die "Unable to open current failure log $failurelogfile: $!\n";
|
|
+ my $failurelogfilemode;
|
|
+
|
|
+ if ($failurelogfile =~ /\.bz2$/)
|
|
+ {
|
|
+ $failurelogfilemode = "bzcat $failurelogfile|";
|
|
+ }
|
|
+ elsif ($failurelogfile =~ /\.gz$/)
|
|
+ {
|
|
+ $failurelogfilemode = "zcat $failurelogfile|";
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ $failurelogfilemode = "<$failurelogfile";
|
|
+ }
|
|
+
|
|
+ open FAILURES, "$failurelogfilemode" or die "Unable to open current failure log $failurelogfile: $!\n";
|
|
while (<FAILURES>) {
|
|
chomp;
|
|
|
|
- if ($_ =~ /^TEST_ID=[^,]*, TEST_BRANCH=$failurebranchpattern, TEST_RESULT=FAIL[^,]*, TEST_BUILDTYPE=$failurebuildtypepattern, TEST_TYPE=$failuretesttypepattern, TEST_OS=$failureospattern, TEST_MACHINE=[^,]*, TEST_PROCESSORTYPE=$failurearchpattern, TEST_KERNEL=$failurekernelpattern, TEST_DATE=[^,]*, TEST_TIMEZONE=$failuretimezonepattern,/) {
|
|
+ if ($_ =~ /^TEST_ID=[^,]*, TEST_BRANCH=$failurebranchpattern, TEST_BUILDTYPE=$failurebuildtypepattern, TEST_TYPE=$failuretesttypepattern, TEST_OS=$failureospattern, TEST_KERNEL=$failurekernelpattern, TEST_PROCESSORTYPE=$failurearchpattern, TEST_MEMORY=$failurememorypattern, TEST_CPUSPEED=$failurecpuspeedpattern, TEST_TIMEZONE=$failuretimezonepattern, TEST_RESULT=FAIL[^,]*,/) {
|
|
debug "failure: $_";
|
|
push @failures, ($_);
|
|
}
|
|
}
|
|
close FAILURES;
|
|
}
|
|
|
|
debug "finding fixed bugs";
|
|
@@ -338,35 +358,45 @@ sub debug {
|
|
sub usage {
|
|
|
|
my $msg = shift;
|
|
|
|
print STDERR <<EOF;
|
|
|
|
usage: $msg
|
|
|
|
-known-failures.pl [-b|--branch] branch [-T|--buildtype] buildtype
|
|
- [-t|--testtype] testtype [-o os|--os]
|
|
+known-failures.pl [-b|--branch] branch
|
|
+ [-T|--buildtype] buildtype
|
|
+ [-t|--testtype] testtype
|
|
+ [-o|--os] os
|
|
+ [-K|--kernel] kernel
|
|
+ [-A|--arch] arch
|
|
+ [-M|--memory] memory
|
|
+ [-S|--speed] speed
|
|
+ [-z|--timezone] timezone
|
|
+ [-r|--patterns] patterns
|
|
([-f|--failurelogfile] failurelogfile|[-l|--logfile] rawlogfile])
|
|
- [-r|--patterns] patterns [-z|--timezone] timezone
|
|
[-O|--outputprefix] outputprefix
|
|
+ [-D]
|
|
|
|
variable description
|
|
=============== ============================================================
|
|
-b branch branch 1.8.0, 1.8.1, 1.9.0, all
|
|
-T buildtype build type opt, debug, all
|
|
-t testtype test type browser, shell, all
|
|
+ -o os operating system nt, darwin, linux, all
|
|
+ -K kernel kernel, all or a specific pattern
|
|
+ -A arch architecture, all or a specific pattern
|
|
+ -M memory memory in Gigabytes, all or a specific pattern
|
|
+ -S speed speed, all or specific pattern
|
|
+ -z timezone -0400, -0700, etc. default to user\'s zone
|
|
-l rawlogfile raw logfile
|
|
-f failurelogfile failure logfile
|
|
- -o os operating system win32, mac, linux, all
|
|
-r patterns known failure patterns
|
|
- -z timezone -0400, -0700, etc. default to user\'s zone
|
|
-O outputprefix output files will be generated with this prefix
|
|
- -A arch architecture, all or a specific pattern
|
|
- -K kernel kernel, all or a specific pattern
|
|
-D turn on debugging output
|
|
EOF
|
|
|
|
exit(2);
|
|
}
|
|
|
|
sub parse_options {
|
|
my ($option, $value);
|
|
@@ -380,171 +410,216 @@ sub parse_options {
|
|
$branch = $value;
|
|
}
|
|
elsif ($option eq "T") {
|
|
$buildtype = $value;
|
|
}
|
|
elsif ($option eq "t") {
|
|
$testtype = $value;
|
|
}
|
|
- elsif ($option eq "l") {
|
|
- $rawlogfile = $value;
|
|
- }
|
|
- elsif ($option eq "f") {
|
|
- $failurelogfile = $value;
|
|
- }
|
|
elsif ($option eq "o") {
|
|
$os = $value;
|
|
}
|
|
- elsif ($option eq "r") {
|
|
- $patterns = $value;
|
|
+ elsif ($option eq "K") {
|
|
+ $kernel = $value;
|
|
+ }
|
|
+ elsif ($option eq "A") {
|
|
+ $arch = $value;
|
|
+ }
|
|
+ elsif ($option eq "M") {
|
|
+ $memory = $value;
|
|
+ }
|
|
+ elsif ($option eq "S") {
|
|
+ $cpuspeed = $value;
|
|
+ if ($cpuspeed < 4)
|
|
+ {
|
|
+ $cpuspeed = 'slow';
|
|
+ }
|
|
+ elsif ($cpuspeed < 9)
|
|
+ {
|
|
+ $cpuspeed = 'medium';
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ $cpuspeed = 'fast';
|
|
+ }
|
|
}
|
|
elsif ($option eq "z") {
|
|
$timezone = $value;
|
|
}
|
|
- elsif ($option eq "O") {
|
|
- $outputprefix = $value;
|
|
+ elsif ($option eq "r") {
|
|
+ $patterns = $value;
|
|
}
|
|
- elsif ($option eq "A") {
|
|
- $arch = $value;
|
|
+ elsif ($option eq "l") {
|
|
+ $rawlogfile = $value;
|
|
}
|
|
- elsif ($option eq "K") {
|
|
- $kernel = $value;
|
|
+ elsif ($option eq "f") {
|
|
+ $failurelogfile = $value;
|
|
+ }
|
|
+ elsif ($option eq "O") {
|
|
+ $outputprefix = $value;
|
|
}
|
|
elsif ($option eq "D") {
|
|
$debug = 1;
|
|
}
|
|
|
|
}
|
|
|
|
if ($debug) {
|
|
- print "branch=$branch, rawlogfile=$rawlogfile failurelogfile=$failurelogfile, os=$os, buildtype=$buildtype, testtype=$testtype, patterns=$patterns, timezone=$timezone, outputprefix=$outputprefix\n";
|
|
+ print "branch=$branch, buildtype=$buildtype, testtype=$testtype, os=$os, kernel=$kernel, arch=$arch, memory=$memory, cpuspeed=$cpuspeed, timezone=$timezone, patterns=$patterns, rawlogfile=$rawlogfile failurelogfile=$failurelogfile, outputprefix=$outputprefix\n";
|
|
}
|
|
Getopt::Mixed::cleanup();
|
|
|
|
if ( !defined($branch) ) {
|
|
usage "missing branch";
|
|
}
|
|
|
|
- if (!defined($rawlogfile) && !defined($failurelogfile)) {
|
|
- usage "missing logfile";
|
|
+ if (!defined($buildtype)) {
|
|
+ usage "missing buildtype";
|
|
}
|
|
|
|
+ if (!defined($testtype)) {
|
|
+ usage "missing testtype";
|
|
+ }
|
|
|
|
if (!defined($os)) {
|
|
usage "missing os";
|
|
}
|
|
|
|
- if (!defined($buildtype)) {
|
|
- usage "missing buildtype";
|
|
+ if (!defined($memory)) {
|
|
+ $memory = 'all';
|
|
}
|
|
|
|
- if (!defined($testtype)) {
|
|
- usage "missing testtype";
|
|
+ if (!defined($cpuspeed)) {
|
|
+ $cpuspeed = 'all';
|
|
+ }
|
|
+
|
|
+ if (!defined($timezone)) {
|
|
+ usage "missing timezone";
|
|
}
|
|
|
|
if (!defined($patterns)) {
|
|
usage "missing patterns";
|
|
}
|
|
|
|
-
|
|
- if (!defined($timezone)) {
|
|
- usage "missing timezone";
|
|
+ if (!defined($rawlogfile) && !defined($failurelogfile)) {
|
|
+ usage "missing logfile";
|
|
}
|
|
|
|
-
|
|
if (!defined($outputprefix)) {
|
|
usage "missing outputprefix";
|
|
}
|
|
|
|
if ($branch eq "1.8.0") {
|
|
- $knownfailurebranchpattern = "([^,]*1\\.8\\.0[^,]*|\\.\\*)";
|
|
+ $knownfailurebranchpattern = "(1\\.8\\.0|\\.\\*)";
|
|
$failurebranchpattern = "1\\.8\\.0";
|
|
}
|
|
- if ($branch eq "1.8.1") {
|
|
- $knownfailurebranchpattern = "([^,]*1\\.8\\.1[^,]*|\\.\\*)";
|
|
+ elsif ($branch eq "1.8.1") {
|
|
+ $knownfailurebranchpattern = "(1\\.8\\.1|\\.\\*)";
|
|
$failurebranchpattern = "1\\.8\\.1";
|
|
}
|
|
elsif ($branch eq "1.9.0") {
|
|
- $knownfailurebranchpattern = "([^,]*1\\.9\\.0[^,]*|\\.\\*)";
|
|
+ $knownfailurebranchpattern = "(1\\.9\\.0|\\.\\*)";
|
|
$failurebranchpattern = "1\\.9\\.0";
|
|
}
|
|
+ elsif ($branch eq "1.9.1") {
|
|
+ $knownfailurebranchpattern = "(1\\.9\\.1|\\.\\*)";
|
|
+ $failurebranchpattern = "1\\.9\\.1";
|
|
+ }
|
|
elsif ($branch eq "all") {
|
|
$knownfailurebranchpattern = "[^,]*";
|
|
$failurebranchpattern = "[^,]*";
|
|
}
|
|
|
|
- if ($os eq "win32") {
|
|
- $knownfailureospattern = "([^,]*win32[^,]*|\\.\\*)";
|
|
- $failureospattern = "win32";
|
|
- }
|
|
- elsif ($os eq "mac") {
|
|
- $knownfailureospattern = "([^,]*mac[^,]*|\\.\\*)";
|
|
- $failureospattern = "mac";
|
|
- }
|
|
- elsif ($os eq "linux") {
|
|
- $knownfailureospattern = "([^,]*linux[^,]*|\\.\\*)";
|
|
- $failureospattern = "linux";
|
|
- }
|
|
- elsif ($os eq "all") {
|
|
- $knownfailureospattern = "[^,]*";
|
|
- $failureospattern = "[^,]*";
|
|
- }
|
|
-
|
|
if ($buildtype eq "opt") {
|
|
- $knownfailurebuildtypepattern = "([^,]*opt[^,]*|\\.\\*)";
|
|
+ $knownfailurebuildtypepattern = "(opt|\\.\\*)";
|
|
$failurebuildtypepattern = "opt";
|
|
}
|
|
elsif ($buildtype eq "debug") {
|
|
- $knownfailurebuildtypepattern = "([^,]*debug[^,]*|\\.\\*)";
|
|
+ $knownfailurebuildtypepattern = "(debug|\\.\\*)";
|
|
$failurebuildtypepattern = "debug";
|
|
}
|
|
elsif ($buildtype eq "all") {
|
|
$knownfailurebuildtypepattern = "[^,]*";
|
|
$failurebuildtypepattern = "[^,]*";
|
|
}
|
|
|
|
if ($testtype eq "shell") {
|
|
- $knownfailuretesttypepattern = "([^,]*shell[^,]*|\\.\\*)";
|
|
+ $knownfailuretesttypepattern = "(shell|\\.\\*)";
|
|
$failuretesttypepattern = "shell";
|
|
}
|
|
elsif ($testtype eq "browser") {
|
|
- $knownfailuretesttypepattern = "([^,]*browser[^,]*|\\.\\*)";
|
|
+ $knownfailuretesttypepattern = "(browser|\\.\\*)";
|
|
$failuretesttypepattern = "browser";
|
|
}
|
|
elsif ($testtype eq "all") {
|
|
$knownfailuretesttypepattern = "[^,]*";
|
|
$failuretesttypepattern = "[^,]*";
|
|
}
|
|
|
|
- if ($timezone eq "all") {
|
|
- $knownfailuretimezonepattern = "[^,]*";
|
|
- $failuretimezonepattern = "[^,]*";
|
|
+ if ($os eq "nt") {
|
|
+ $knownfailureospattern = "(nt|\\.\\*)";
|
|
+ $failureospattern = "nt";
|
|
+ }
|
|
+ elsif ($os eq "darwin") {
|
|
+ $knownfailureospattern = "(darwin|\\.\\*)";
|
|
+ $failureospattern = "darwin";
|
|
+ }
|
|
+ elsif ($os eq "linux") {
|
|
+ $knownfailureospattern = "(linux|\\.\\*)";
|
|
+ $failureospattern = "linux";
|
|
+ }
|
|
+ elsif ($os eq "all") {
|
|
+ $knownfailureospattern = "[^,]*";
|
|
+ $failureospattern = "[^,]*";
|
|
+ }
|
|
+
|
|
+ if ($kernel ne "all") {
|
|
+ $knownfailurekernelpattern = "(" . $kernel . "|\\.\\*)";
|
|
+ $failurekernelpattern = "$kernel";
|
|
}
|
|
else {
|
|
- $knownfailuretimezonepattern = "([^,]*" . $timezone . "[^,]*|\\.\\*)";
|
|
- $failuretimezonepattern = "$timezone";
|
|
+ $knownfailurekernelpattern = "[^,]*";
|
|
+ $failurekernelpattern = "[^,]*";
|
|
}
|
|
|
|
if ($arch ne "all") {
|
|
- $knownfailurearchpattern = "([^,]*" . $arch . "[^,]*|\\.\\*)";
|
|
+ $knownfailurearchpattern = "(" . $arch . "|\\.\\*)";
|
|
$failurearchpattern = "$arch";
|
|
}
|
|
else {
|
|
$knownfailurearchpattern = "[^,]*";
|
|
$failurearchpattern = "[^,]*";
|
|
}
|
|
|
|
- if ($kernel ne "all") {
|
|
- $knownfailurekernelpattern = "([^,]*" . $kernel . "[^,]*|\\.\\*)";
|
|
- $failurekernelpattern = "$kernel";
|
|
+ if ($memory ne "all") {
|
|
+ $knownfailurememorypattern = "(" . $memory . "|\\.\\*)";
|
|
+ $failurememorypattern = "$memory";
|
|
}
|
|
else {
|
|
- $knownfailurekernelpattern = "[^,]*";
|
|
- $failurekernelpattern = "[^,]*";
|
|
+ $knownfailurememorypattern = "[^,]*";
|
|
+ $failurememorypattern = "[^,]*";
|
|
+ }
|
|
+
|
|
+ if ($cpuspeed ne "all") {
|
|
+ $knownfailurecpuspeedpattern = "(" . $cpuspeed . "|\\.\\*)";
|
|
+ $failurecpuspeedpattern = "$cpuspeed";
|
|
+ }
|
|
+ else {
|
|
+ $knownfailurecpuspeedpattern = "[^,]*";
|
|
+ $failurecpuspeedpattern = "[^,]*";
|
|
+ }
|
|
+
|
|
+ if ($timezone eq "all") {
|
|
+ $knownfailuretimezonepattern = "[^,]*";
|
|
+ $failuretimezonepattern = "[^,]*";
|
|
+ }
|
|
+ else {
|
|
+ $knownfailuretimezonepattern = "(" . $timezone . "|\\.\\*)";
|
|
+ $failuretimezonepattern = "$timezone";
|
|
}
|
|
|
|
|
|
}
|
|
|
|
sub escape_pattern {
|
|
|
|
my $line = shift;
|
|
Index: pattern-expander.pl
|
|
===================================================================
|
|
RCS file: pattern-expander.pl
|
|
diff -N pattern-expander.pl
|
|
--- /dev/null 1 Jan 1970 00:00:00 -0000
|
|
+++ pattern-expander.pl 25 Jun 2008 17:31:16 -0000
|
|
@@ -0,0 +1,159 @@
|
|
+#!/usr/bin/perl -w
|
|
+# -*- Mode: Perl; tab-width: 4; indent-tabs-mode: nil; -*-
|
|
+# ***** BEGIN LICENSE BLOCK *****
|
|
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
+#
|
|
+# 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/MPL/
|
|
+#
|
|
+# 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 Mozilla JavaScript Testing Utilities
|
|
+#
|
|
+# The Initial Developer of the Original Code is
|
|
+# Mozilla Corporation.
|
|
+# Portions created by the Initial Developer are Copyright (C) 2008
|
|
+# the Initial Developer. All Rights Reserved.
|
|
+#
|
|
+# Contributor(s): Bob Clary <bclary@bclary.com>
|
|
+#
|
|
+# Alternatively, the contents of this file may be used under the terms of
|
|
+# either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
+# in which case the provisions of the GPL or the LGPL are applicable instead
|
|
+# of those above. If you wish to allow use of your version of this file only
|
|
+# under the terms of either the GPL or the LGPL, and not to allow others to
|
|
+# use your version of this file under the terms of the MPL, indicate your
|
|
+# decision by deleting the provisions above and replace them with the notice
|
|
+# and other provisions required by the GPL or the LGPL. If you do not delete
|
|
+# the provisions above, a recipient may use your version of this file under
|
|
+# the terms of any one of the MPL, the GPL or the LGPL.
|
|
+#
|
|
+# ***** END LICENSE BLOCK *****
|
|
+
|
|
+# usage: pattern-expander.pl knownfailures > knownfailures.expanded
|
|
+#
|
|
+# pattern-expander.pl reads the specified knownfailures file and
|
|
+# writes to stdout an expanded set of failures where the wildcards
|
|
+# ".*" are replaced with the set of possible values specified in the
|
|
+# universe.data file.
|
|
+
|
|
+use lib "/work/mozilla/mozilla.com/test.mozilla.com/www/tests/mozilla.org/js";
|
|
+
|
|
+use Patterns;
|
|
+
|
|
+package Patterns;
|
|
+
|
|
+processfile();
|
|
+
|
|
+sub processfile
|
|
+{
|
|
+ my ($i, $j);
|
|
+
|
|
+ while (<ARGV>) {
|
|
+
|
|
+ chomp;
|
|
+
|
|
+ $record = {};
|
|
+
|
|
+ my ($test_id, $test_branch, $test_buildtype, $test_type, $test_os, $test_kernel, $test_processortype, $test_memory, $test_cpuspeed, $test_timezone, $test_result, $test_exitstatus, $test_description) = $_ =~
|
|
+ /TEST_ID=([^,]*), TEST_BRANCH=([^,]*), TEST_BUILDTYPE=([^,]*), TEST_TYPE=([^,]*), TEST_OS=([^,]*), TEST_KERNEL=([^,]*), TEST_PROCESSORTYPE=([^,]*), TEST_MEMORY=([^,]*), TEST_CPUSPEED=([^,]*), TEST_TIMEZONE=([^,]*), TEST_RESULT=([^,]*), TEST_EXITSTATUS=([^,]*), TEST_DESCRIPTION=(.*)/;
|
|
+
|
|
+ $record->{TEST_ID} = $test_id;
|
|
+ $record->{TEST_BRANCH} = $test_branch;
|
|
+ $record->{TEST_BUILDTYPE} = $test_buildtype;
|
|
+ $record->{TEST_TYPE} = $test_type;
|
|
+ $record->{TEST_OS} = $test_os;
|
|
+ $record->{TEST_KERNEL} = $test_kernel;
|
|
+ $record->{TEST_PROCESSORTYPE} = $test_processortype;
|
|
+ $record->{TEST_MEMORY} = $test_memory;
|
|
+ $record->{TEST_CPUSPEED} = $test_cpuspeed;
|
|
+ $record->{TEST_TIMEZONE} = $test_timezone;
|
|
+ $record->{TEST_RESULT} = $test_result;
|
|
+ $record->{TEST_EXITSTATUS} = $test_exitstatus;
|
|
+ $record->{TEST_DESCRIPTION} = $test_description;
|
|
+
|
|
+ dbg("processfile: \$_=$_");
|
|
+
|
|
+ my @list1 = ();
|
|
+ my @list2 = ();
|
|
+
|
|
+ my $iuniversefield;
|
|
+ my $universefield;
|
|
+
|
|
+ $item1 = copyreference($record);
|
|
+ dbg("processfile: check copyreference");
|
|
+ dbg("processfile: \$record=" . recordtostring($record));
|
|
+ dbg("processfile: \$item1=" . recordtostring($item1));
|
|
+
|
|
+ push @list1, ($item1);
|
|
+
|
|
+ for ($iuniversefield = 0; $iuniversefield < @universefields; $iuniversefield++)
|
|
+ {
|
|
+ $universefield = $universefields[$iuniversefield];
|
|
+
|
|
+ dbg("processfile: \$universefields[$iuniversefield]=$universefield, \$record->{$universefield}=$record->{$universefield}");
|
|
+
|
|
+ for ($j = 0; $j < @list1; $j++)
|
|
+ {
|
|
+ $item1 = $list1[$j];
|
|
+ dbg("processfile: item1 \$list1[$j]=" . recordtostring($item1));
|
|
+ # create a reference to a copy of the hash referenced by $item1
|
|
+ if ($item1->{$universefield} ne '.*')
|
|
+ {
|
|
+ dbg("processfile: literal value");
|
|
+ $item2 = copyreference($item1);
|
|
+ dbg("processfile: check copyreference");
|
|
+ dbg("processfile: \$item1=" . recordtostring($item1));
|
|
+ dbg("processfile: \$item2=" . recordtostring($item2));
|
|
+ dbg("processfile: pushing existing record to list 2: " . recordtostring($item2));
|
|
+ push @list2, ($item2);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ dbg("processfile: wildcard value");
|
|
+ $keyfielduniversekey = getuniversekey($item1, $universefield);
|
|
+ @keyfielduniverse = getuniverse($keyfielduniversekey, $universefield);
|
|
+
|
|
+ dbg("processfile: \$keyfielduniversekey=$keyfielduniversekey, \@keyfielduniverse=" . join(',', @keyfielduniverse));
|
|
+
|
|
+ for ($i = 0; $i < @keyfielduniverse; $i++)
|
|
+ {
|
|
+ $item2 = copyreference($item1);
|
|
+ dbg("processfile: check copyreference");
|
|
+ dbg("processfile: \$item1=" . recordtostring($item1));
|
|
+ dbg("processfile: \$item2=" . recordtostring($item2));
|
|
+ $item2->{$universefield} = $keyfielduniverse[$i];
|
|
+ dbg("processfile: pushing new record to list 2 " . recordtostring($item2));
|
|
+ push @list2, ($item2);
|
|
+ }
|
|
+ }
|
|
+ for ($i = 0; $i < @list1; $i++)
|
|
+ {
|
|
+ dbg("processfile: \$list1[$i]=" . recordtostring($list1[$i]));
|
|
+ }
|
|
+ for ($i = 0; $i < @list2; $i++)
|
|
+ {
|
|
+ dbg("processfile: \$list2[$i]=" . recordtostring($list2[$i]));
|
|
+ }
|
|
+ }
|
|
+
|
|
+ @list1 = @list2;
|
|
+ @list2 = ();
|
|
+ }
|
|
+ for ($j = 0; $j < @list1; $j++)
|
|
+ {
|
|
+ $item1 = $list1[$j];
|
|
+ push @records, ($item1);
|
|
+ }
|
|
+ }
|
|
+ @records = sort sortrecords @records;
|
|
+
|
|
+ dumprecords();
|
|
+}
|
|
+
|
|
Index: pattern-extracter.pl
|
|
===================================================================
|
|
RCS file: pattern-extracter.pl
|
|
diff -N pattern-extracter.pl
|
|
--- /dev/null 1 Jan 1970 00:00:00 -0000
|
|
+++ pattern-extracter.pl 25 Jun 2008 17:31:16 -0000
|
|
@@ -0,0 +1,217 @@
|
|
+#!/usr/bin/perl -w
|
|
+# -*- Mode: Perl; tab-width: 4; indent-tabs-mode: nil; -*-
|
|
+# ***** BEGIN LICENSE BLOCK *****
|
|
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
+#
|
|
+# 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/MPL/
|
|
+#
|
|
+# 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 Mozilla JavaScript Testing Utilities
|
|
+#
|
|
+# The Initial Developer of the Original Code is
|
|
+# Mozilla Corporation.
|
|
+# Portions created by the Initial Developer are Copyright (C) 2008
|
|
+# the Initial Developer. All Rights Reserved.
|
|
+#
|
|
+# Contributor(s): Bob Clary <bclary@bclary.com>
|
|
+#
|
|
+# Alternatively, the contents of this file may be used under the terms of
|
|
+# either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
+# in which case the provisions of the GPL or the LGPL are applicable instead
|
|
+# of those above. If you wish to allow use of your version of this file only
|
|
+# under the terms of either the GPL or the LGPL, and not to allow others to
|
|
+# use your version of this file under the terms of the MPL, indicate your
|
|
+# decision by deleting the provisions above and replace them with the notice
|
|
+# and other provisions required by the GPL or the LGPL. If you do not delete
|
|
+# the provisions above, a recipient may use your version of this file under
|
|
+# the terms of any one of the MPL, the GPL or the LGPL.
|
|
+#
|
|
+# ***** END LICENSE BLOCK *****
|
|
+
|
|
+# usage: pattern-extracter.pl knownfailures.expanded > knownfailures
|
|
+#
|
|
+# pattern-extracter.pl reads the specified expanded knownfailures file
|
|
+# (see pattern-expander.pl) and writes to stdout a set of knownfailures
|
|
+# where repetitions of values found in the universe.data file are
|
|
+# replaced with wildcards ".*".
|
|
+
|
|
+use lib "/work/mozilla/mozilla.com/test.mozilla.com/www/tests/mozilla.org/js";
|
|
+
|
|
+use Patterns;
|
|
+
|
|
+package Patterns;
|
|
+
|
|
+
|
|
+my $universefield;
|
|
+
|
|
+processfile();
|
|
+
|
|
+sub processfile
|
|
+{
|
|
+ my $recordcurr = {};
|
|
+ my $recordprev;
|
|
+
|
|
+ my @output;
|
|
+ my $keycurr = '';
|
|
+ my $keyprev = '';
|
|
+ my @values = ();
|
|
+ my $universefielduniversekey; # universekey for universefield
|
|
+ my @universefielduniverse;
|
|
+ my $i;
|
|
+ my $j;
|
|
+ my $v;
|
|
+
|
|
+ while (<ARGV>) {
|
|
+
|
|
+ chomp;
|
|
+
|
|
+ $recordcurr = {};
|
|
+
|
|
+ my ($test_id, $test_branch, $test_buildtype, $test_type, $test_os, $test_kernel, $test_processortype, $test_memory, $test_cpuspeed, $test_timezone, $test_result, $test_exitstatus, $test_description) = $_ =~
|
|
+ /TEST_ID=([^,]*), TEST_BRANCH=([^,]*), TEST_BUILDTYPE=([^,]*), TEST_TYPE=([^,]*), TEST_OS=([^,]*), TEST_KERNEL=([^,]*), TEST_PROCESSORTYPE=([^,]*), TEST_MEMORY=([^,]*), TEST_CPUSPEED=([^,]*), TEST_TIMEZONE=([^,]*), TEST_RESULT=([^,]*), TEST_EXITSTATUS=([^,]*), TEST_DESCRIPTION=(.*)/;
|
|
+
|
|
+ $recordcurr->{TEST_ID} = $test_id;
|
|
+ $recordcurr->{TEST_BRANCH} = $test_branch;
|
|
+ $recordcurr->{TEST_BUILDTYPE} = $test_buildtype;
|
|
+ $recordcurr->{TEST_TYPE} = $test_type;
|
|
+ $recordcurr->{TEST_OS} = $test_os;
|
|
+ $recordcurr->{TEST_KERNEL} = $test_kernel;
|
|
+ $recordcurr->{TEST_PROCESSORTYPE} = $test_processortype;
|
|
+ $recordcurr->{TEST_MEMORY} = $test_memory;
|
|
+ $recordcurr->{TEST_CPUSPEED} = $test_cpuspeed;
|
|
+ $recordcurr->{TEST_TIMEZONE} = $test_timezone;
|
|
+ $recordcurr->{TEST_RESULT} = $test_result;
|
|
+ $recordcurr->{TEST_EXITSTATUS} = $test_exitstatus;
|
|
+ $recordcurr->{TEST_DESCRIPTION} = $test_description;
|
|
+
|
|
+ push @records, ($recordcurr);
|
|
+ }
|
|
+
|
|
+ for ($j = $#universefields; $j >= 0; $j--)
|
|
+ {
|
|
+ $universefield = $universefields[$j];
|
|
+
|
|
+ @records = sort {getkey($a, $universefield) cmp getkey($b, $universefield);} @records;
|
|
+
|
|
+ $recordprev = $records[0];
|
|
+ $keyprev = getkey($recordprev, $universefield);
|
|
+ @values = ();
|
|
+
|
|
+ my $recordtemp;
|
|
+ my $keytemp;
|
|
+
|
|
+ dbg("processfile: begin processing records for \$universefields[$j]=$universefield");
|
|
+
|
|
+ for ($i = 0; $i < @records; $i++)
|
|
+ {
|
|
+ $recordcurr = $records[$i];
|
|
+ $keycurr = getkey($recordcurr, $universefield);
|
|
+
|
|
+ dbg("processfile: processing record[$i]");
|
|
+ dbg("processfile: recordprev: " . recordtostring($recordprev));
|
|
+ dbg("processfile: recordcurr: " . recordtostring($recordcurr));
|
|
+ dbg("processfile: \$keyprev=$keyprev");
|
|
+ dbg("processfile: \$keycurr=$keycurr");
|
|
+
|
|
+ if ($keycurr ne $keyprev)
|
|
+ {
|
|
+ # key changed, must output previous record
|
|
+ dbg("processfile: new key");
|
|
+ $universefielduniversekey = getuniversekey($recordprev, $universefield);
|
|
+ @universefielduniverse = getuniverse($universefielduniversekey, $universefield);
|
|
+ dbg("processfile: \@values: ". join(',', @values));
|
|
+ dbg("processfile: \$universefielduniversekey=$universefielduniversekey, \@universefielduniverse=" . join(',', @universefielduniverse));
|
|
+ @values = ('.*') if (arraysequal(\@values, \@universefielduniverse));
|
|
+ dbg("processfile: \@values=" . join(',', @values));
|
|
+
|
|
+ for ($v = 0; $v < @values; $v++)
|
|
+ {
|
|
+ dbg("processfile: stuffing $values[$v]");
|
|
+ $recordtemp = copyreference($recordprev);
|
|
+ $recordtemp->{$universefield} = $values[$v];
|
|
+ dbg("processfile: stuffed $recordtemp->{$universefield}");
|
|
+ dbg("processfile: recordprev: " . recordtostring($recordprev));
|
|
+ dbg("processfile: output: " . recordtostring($recordtemp));
|
|
+ push @output, ($recordtemp);
|
|
+ }
|
|
+ @values = ();
|
|
+ }
|
|
+ dbg("processfile: collecting \$recordcurr->{$universefield}=$recordcurr->{$universefield}");
|
|
+ push @values, ($recordcurr->{$universefield});
|
|
+ $keyprev = $keycurr;
|
|
+ $recordprev = $recordcurr;
|
|
+ }
|
|
+ dbg("processfile: finish processing records for \$universefields[$j]=$universefield");
|
|
+ if (@values)
|
|
+ {
|
|
+ dbg("processfile: last record for \$universefields[$j]=$universefield has pending values");
|
|
+ $universefielduniversekey = getuniversekey($recordprev, $universefield);
|
|
+ @universefielduniverse = getuniverse($universefielduniversekey, $universefield);
|
|
+ dbg("processfile: \@values: ". join(',', @values));
|
|
+ dbg("processfile: \$universefielduniversekey=$universefielduniversekey, \@universefielduniverse=" . join(',', @universefielduniverse));
|
|
+ @values = ('.*') if (arraysequal(\@values, \@universefielduniverse));
|
|
+ dbg("processfile: \@values=" . join(',', @values));
|
|
+
|
|
+ for ($v = 0; $v < @values; $v++)
|
|
+ {
|
|
+ dbg("processfile: stuffing $values[$v]");
|
|
+ $recordtemp = copyreference($recordprev);
|
|
+ $recordtemp->{$universefield} = $values[$v];
|
|
+ dbg("processfile: stuffed $recordprev->{$universefield}");
|
|
+ dbg("processfile: recordprev: " . recordtostring($recordprev));
|
|
+ dbg("processfile: output: " . recordtostring($recordtemp));
|
|
+ push @output, ($recordtemp);
|
|
+ }
|
|
+ @values = ();
|
|
+ }
|
|
+ @records = @output;
|
|
+ @output = ();
|
|
+ }
|
|
+
|
|
+ @records = sort sortrecords @records;
|
|
+ dumprecords();
|
|
+}
|
|
+
|
|
+
|
|
+sub getkey
|
|
+{
|
|
+ my ($record, $universefield) = @_;
|
|
+
|
|
+ my $i;
|
|
+
|
|
+ my $key = '';
|
|
+
|
|
+ for ($i = 0; $i < @sortkeyfields; $i++)
|
|
+ {
|
|
+ if ($sortkeyfields[$i] ne $universefield)
|
|
+ {
|
|
+ $key .= $record->{$sortkeyfields[$i]}
|
|
+ }
|
|
+ }
|
|
+ return $key;
|
|
+}
|
|
+
|
|
+sub arraysequal
|
|
+{
|
|
+ my ($larrayref, $rarrayref) = @_;
|
|
+ my $i;
|
|
+
|
|
+ dbg("arraysequal: checking if " . (join ',', @{$larrayref}) . " is equal to " . (join ',', @{$rarrayref}));
|
|
+ return 0 if (@{$larrayref} != @{$rarrayref});
|
|
+
|
|
+ for ($i = 0; $i < @{$larrayref}; $i++)
|
|
+ {
|
|
+ return 0 if ($rarrayref->[$i] ne $larrayref->[$i]);
|
|
+ }
|
|
+ dbg("arraysequal: equal");
|
|
+ return 1;
|
|
+}
|
|
+
|
|
Index: post-process-logs.pl
|
|
===================================================================
|
|
RCS file: /cvsroot/mozilla/js/tests/post-process-logs.pl,v
|
|
retrieving revision 1.10
|
|
diff -p -U 8 -r1.10 post-process-logs.pl
|
|
--- post-process-logs.pl 3 Apr 2008 16:25:01 -0000 1.10
|
|
+++ post-process-logs.pl 25 Jun 2008 17:31:16 -0000
|
|
@@ -57,33 +57,36 @@ $ENV{LC_ALL} = 'C';
|
|
|
|
(undef, $temp) = tempfile();
|
|
|
|
open TEMP, ">$temp" or
|
|
die "FATAL ERROR: Unable to open temporary file $temp for writing: $!\n";
|
|
|
|
local ($test_id,
|
|
$tmp_test_id,
|
|
+ $tmp_test_exit_status,
|
|
%test_id,
|
|
%test_reported,
|
|
$test_result,
|
|
$test_type,
|
|
$tmp_test_type,
|
|
$test_description,
|
|
@messages,
|
|
$test_processortype,
|
|
$test_kernel,
|
|
$test_suite,
|
|
- $exit_status,
|
|
- $page_status,
|
|
+ $test_exit_status,
|
|
+ @expected_exit_code_list,
|
|
+ $expected_exit_code,
|
|
+ $exit_code,
|
|
$state);
|
|
|
|
-local ($actual_exit, $actual_signal);
|
|
-
|
|
-local %test_reported = ();
|
|
+local $test_memory = 0;
|
|
+local $test_cpuspeed = 0;
|
|
+local %test_reported = ();
|
|
|
|
while ($file = shift @ARGV)
|
|
{
|
|
@messages = ();
|
|
|
|
dbg "file: $file";
|
|
|
|
my $filename = basename $file;
|
|
@@ -95,776 +98,491 @@ while ($file = shift @ARGV)
|
|
$test_machine,$test_global_target) = split /,/, $filename;
|
|
|
|
$test_branchid =~ s/[^0-9.]//g;
|
|
$test_global_target =~ s/.log$//;
|
|
|
|
local ($test_timezone) = $test_date;
|
|
$test_timezone =~ s/.*([-+]\d{4,4})/$1/;
|
|
|
|
- open FILE, "$file" or die "FATAL ERROR: unable to open $file for reading: $!\n";
|
|
+ my $filemode;
|
|
+
|
|
+ if ($file =~ /\.bz2$/)
|
|
+ {
|
|
+ $filemode = "bzcat $file|";
|
|
+ }
|
|
+ elsif ($file =~ /\.gz$/)
|
|
+ {
|
|
+ $filemode = "zcat $file|";
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ $filemode = "<$file";
|
|
+ }
|
|
+
|
|
+ open FILE, "$filemode" or die "FATAL ERROR: unable to open $file for reading: $!\n";
|
|
|
|
dbg "process header with environment variables used in test";
|
|
|
|
while (<FILE>)
|
|
{
|
|
$state = 'failure';
|
|
|
|
chomp;
|
|
|
|
# remove carriage returns, bels and other annoyances.
|
|
$_ =~ s/[\r]$//;
|
|
$_ =~ s/[\r]/CR/g;
|
|
$_ =~ s/[\x01-\x08]//g;
|
|
$_ =~ s/\s+$//;
|
|
|
|
- dbg "INPUT: $_";
|
|
+ if ($debug)
|
|
+ {
|
|
+ dbg "\nINPUT: $_";
|
|
+ }
|
|
|
|
- last if ( $_ =~ /^environment: EOF/);
|
|
+ last if ( $_ =~ /^arguments:/);
|
|
|
|
if (($envvar, $envval) = $_ =~ /^environment: (TEST_[A-Z0-9_]*)=(.*)/ )
|
|
{
|
|
dbg "envvar=$envvar, envval=$envval";
|
|
+ if ($envvar =~ /TEST_KERNEL/)
|
|
+ {
|
|
+ $envval =~ s/([0-9]+)\.([0-9]+)\.([0-9]+).*/$1.$2.$3/;
|
|
+ dbg "found TEST_KERNEL";
|
|
+ }
|
|
$envvar =~ tr/A-Z/a-z/;
|
|
$$envvar = $envval;
|
|
dbg $envvar . "=" . $$envvar;
|
|
}
|
|
elsif (($envval) = $_ =~ /^environment: OSID=(.*)/ )
|
|
{
|
|
$test_os = $envval;
|
|
}
|
|
}
|
|
|
|
+ if ($test_cpuspeed < 4)
|
|
+ {
|
|
+ $test_cpuspeed = 'slow';
|
|
+ }
|
|
+ elsif ($test_cpuspeed < 9)
|
|
+ {
|
|
+ $test_cpuspeed = 'medium';
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ $test_cpuspeed = 'fast';
|
|
+ }
|
|
+
|
|
if ($test_product eq "js")
|
|
{
|
|
- while (<FILE>)
|
|
- {
|
|
- chomp;
|
|
+ $test_type = "shell";
|
|
+ }
|
|
+ elsif ($test_product eq "firefox" || $test_product eq "thunderbird")
|
|
+ {
|
|
+ $test_buildtype = "nightly" unless $test_buildtype;
|
|
+ $test_type = "browser";
|
|
+ }
|
|
|
|
- dbg "INPUT: $_";
|
|
+# Expected sequence if all output written to the log.
|
|
+#
|
|
+# Input
|
|
+# -----------------------------
|
|
+# JavaScriptTest: Begin Run
|
|
+# JavaScriptTest: Begin Test t;
|
|
+# jstest: t
|
|
+# t:.*EXIT STATUS:
|
|
+# JavaScriptTest: End Test t
|
|
+# JavaScriptTest: End Run
|
|
+# EOF
|
|
+#
|
|
+ %test_id = ();
|
|
+ @messages = ();
|
|
+ $test_exit_status = '';
|
|
+ $state = 'idle';
|
|
|
|
- if (/Wrote results to/)
|
|
- {
|
|
- $state = 'success';
|
|
- last;
|
|
- }
|
|
+ while (<FILE>)
|
|
+ {
|
|
+ chomp;
|
|
|
|
- $_ =~ s/[\r]$//;
|
|
- $_ =~ s/[\r]/CR/g;
|
|
- $_ =~ s/[\x01-\x08]//g;
|
|
- $_ =~ s/\s+$//;
|
|
+ if ($debug)
|
|
+ {
|
|
+ dbg "\nINPUT: '$_'";
|
|
+ }
|
|
|
|
- next if ( $_ !~ /^jstest: /);
|
|
+ $_ =~ s/[\r]$//;
|
|
+ $_ =~ s/[\r]/CR/g;
|
|
+ $_ =~ s/[\x01-\x08]//g;
|
|
+ $_ =~ s/\s+$//;
|
|
|
|
- ($test_id) = $_ =~ /^jstest: (.*?) *bug:/;
|
|
- ($test_result) = $_ =~ /result: (.*?) *type:/;
|
|
- ($test_type) = $_ =~ /type: (.*?) *description:/;
|
|
- ($test_description) = $_ =~ /description: (.*)/;
|
|
+ if ( /^JavaScriptTest: Begin Run/)
|
|
+ {
|
|
+ dbg "Begin Run";
|
|
|
|
- if (!$test_description)
|
|
+ if ($state eq 'idle')
|
|
{
|
|
- $test_description = "";
|
|
+ $state = 'beginrun';
|
|
}
|
|
else
|
|
{
|
|
- ($actual_exit, $actual_signal) = $test_description =~ /expected: Expected exit [03] actual: Actual exit ([0-9]*), signal ([0-9]*)/;
|
|
- if (defined($actual_exit) or defined($actual_signal))
|
|
- {
|
|
- if ($actual_exit > 3 || $actual_signal > 0)
|
|
- {
|
|
- $test_description =~ s/ *expected: Expected exit [03] actual: Actual exit ([0-9]*), signal ([0-9]*) /EXIT STATUS: CRASHED $actual_exit signal $actual_signal, /;
|
|
- }
|
|
- }
|
|
- elsif ($test_result eq "FAILED TIMED OUT")
|
|
- {
|
|
- $test_description = "EXIT STATUS: TIMED OUT, $test_description";
|
|
- $test_result = "FAILED";
|
|
- }
|
|
+ warn "WARNING: state: $state, expected: idle, log: $file";
|
|
+ $state = 'beginrun';
|
|
}
|
|
+ }
|
|
+ elsif ( ($tmp_test_id) = $_ =~ /^JavaScriptTest: Begin Test ([^ ]*)/)
|
|
+ {
|
|
+ dbg "Begin Test: $tmp_test_id";
|
|
|
|
- if ($test_description =~ /error: can.t allocate region/ || /set a breakpoint in malloc_error_break/ ||
|
|
- /set a breakpoint in szone_error to debug/ || /malloc:.*mmap/ || /vm_allocate/ )
|
|
+ if ($state eq 'beginrun' || $state eq 'endtest')
|
|
{
|
|
- dbg "Adding message: /$test_id:0: out of memory";
|
|
- $test_description .= "; /$test_id:0: out of memory";
|
|
+ $state = 'runningtest';
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ warn "WARNING: state: $state, expected: beginrun, endtest, log: $file";
|
|
+ $state = 'runningtest';
|
|
}
|
|
|
|
- dbg "test_id: $test_id";
|
|
- dbg "test_result: $test_result";
|
|
- dbg "test_type: $test_type";
|
|
- dbg "test_description: $test_description";
|
|
-
|
|
- outputrecord $test_id, $test_description, $test_result;
|
|
+ $test_id{$state} = $tmp_test_id;
|
|
+ @messages = ();
|
|
+ @expected_exit_code_list = ();
|
|
+ $expected_exit_code = ();
|
|
+
|
|
+ $test_id = '';
|
|
+ $test_result = '';
|
|
+ $test_exit_status = 'NORMAL'; # default to normal, so subtests will have a NORMAL status
|
|
+ $test_description = '';
|
|
|
|
- dbg "-";
|
|
+ push @expected_exit_code_list, (3) if ($tmp_test_id =~ /-n.js$/);
|
|
+
|
|
}
|
|
- }
|
|
- elsif ($test_product eq "firefox")
|
|
- {
|
|
- %test_id = ();
|
|
- @messages = ();
|
|
-
|
|
- $page_status = '';
|
|
- $exit_status = '';
|
|
- $test_buildtype = "nightly" unless $test_buildtype;
|
|
- $test_type = "browser";
|
|
+ elsif ( ($expected_exit_code) = $_ =~ /WE EXPECT EXIT CODE ([0-9]*)/ )
|
|
+ {
|
|
+ dbg "Expected Exit Code: $expected_exit_code";
|
|
|
|
+ push @expected_exit_code_list, ($expected_exit_code);
|
|
+ }
|
|
+ elsif ( ($tmp_test_id) = $_ =~ /^jstest: (.*?) *bug:/)
|
|
+ {
|
|
+ dbg "jstest: $tmp_test_id";
|
|
|
|
-# non-restart mode. start spider; for each test { load test;} exit spider;
|
|
-# restart mode. for each test; { start spider; load test; exit spider; }
|
|
-#
|
|
-# Expected sequence if all output written to the log.
|
|
-#
|
|
-# Input Initial State Next State userhook event outputrecord
|
|
-# ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
-# Spider: Start.*start-spider.html idle startrun
|
|
-# Spider: Begin loading.*start-spider.html startrun startrun
|
|
-# Start Spider: try.*EXIT STATUS: NORMAL startrun initialized
|
|
-# Start Spider: try.*EXIT STATUS: (TIMED OUT|CRASHED) startrun startrun
|
|
-# Spider: Start.*urllist initialized initialized (non restart mode)
|
|
-# Spider: Begin loading.*urllist initialized initialized (non restart mode)
|
|
-# Spider: Finish loading.*urllist initialized initialized (non restart mode)
|
|
-# Spider: Current Url:.*urllist initialized initialized (non restart mode)
|
|
-# Spider: Start.*test=t; initialized starttest (has test id)
|
|
-# JavaScriptTest: Begin Run starttest starttest onStart
|
|
-# Spider: Begin loading.*test=t; starttest loadingtest (has test id)
|
|
-# JavaScriptTest: Begin Test t; loadingtest runningtest onBeforePage (has test id)
|
|
-# jstest: t runningtest reportingtest (has test id) yes.
|
|
-# Spider: Finish loading.*t=t; reportingtest loadedtest (has test id)
|
|
-# Spider: Finish loading.*t=t; runningtest pendingtest (has test id)
|
|
-# Spider: Current Url:.*test=t; loadedtest loadedtest (has test id)
|
|
-# http://.*test=t;.*PAGE STATUS: NORMAL loadedtest loadedtest onAfterPage (has test id)
|
|
-# http://.*test=t;.*PAGE STATUS: TIMED OUT loadedtest endrun onPageTimeout (has test id) yes.
|
|
-# JavaScriptTest: t Elapsed time loadedtest completedtest checkTestCompleted (has test id)
|
|
-# JavaScriptTest: End Test t completedtest completedtest checkTestCompleted (has test id)
|
|
-# JavaScriptTest: End Test t endrun endrun onPageTimeout (has test id)
|
|
-# Spider: Start.*test=t; completedtest starttest (non restart mode) (has test id)
|
|
-# JavaScriptTest: End Run completedtest endrun onStop
|
|
-# JavaScriptTest: End Run loadedtest endrun onStop
|
|
-# Spider: Start.*test=t; endrun starttest (restart mode) (has test id)
|
|
-# http://.*test=t;.*EXIT STATUS: NORMAL endrun endrun (has test id) maybe.
|
|
-# http://.*test=t;.*EXIT STATUS: TIMED OUT endrun endrun (has test id) yes.
|
|
-# http://.*test=t;.*EXIT STATUS: CRASHED endrun endrun (has test id) yes.
|
|
-# /work/mozilla/mozilla.com/test.mozilla.com/www$ endrun success
|
|
-# EOF success success
|
|
-# EOF endrun failure
|
|
-#
|
|
-# States has test id
|
|
-# -------------------------
|
|
-# idle
|
|
-# startrun
|
|
-# initialized
|
|
-# starttest has test id
|
|
-# loadingtest has test id
|
|
-# runningtest has test id
|
|
-# pendingtest has test id
|
|
-# reportingtest has test id
|
|
-# loadedtest has test id
|
|
-# endrun has test id
|
|
-# completedtest has test id
|
|
-# success
|
|
-# failure
|
|
+# if ($test_id{$state} && $tmp_test_id ne $test_id{$state})
|
|
+# {
|
|
+# warn "WARNING: state: $state, expected runningtest, reportingtest. mismatched test_id: expected: $tmp_test_id, actual: $test_id{$state}, log: $file";
|
|
+# }
|
|
|
|
- dbg "Assuming starting in restart mode";
|
|
+ if ($state eq 'runningtest')
|
|
+ {
|
|
+ $state = 'reportingtest';
|
|
+ }
|
|
+ elsif ($state eq 'reportingtest')
|
|
+ {
|
|
+ $state = 'reportingtest';
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ warn "WARNING: test_id: $test_id{$state}, state: $state, expected: runningtest, reportingtest, log: $file";
|
|
+ $state = 'reportingtest';
|
|
+ }
|
|
|
|
- $mode = 'restart';
|
|
- $state = 'idle';
|
|
+ ($test_result) = $_ =~ /result: (.*?) *type:/;
|
|
+ ($tmp_test_type) = $_ =~ /type: (.*?) *description:/;
|
|
|
|
- while (<FILE>)
|
|
- {
|
|
- chomp;
|
|
+ die "FATAL ERROR: test_id: $test_id{$state}, jstest test type mismatch: start test_type: $test_type, current test_type: $tmp_test_type, test state: $state, log: $file"
|
|
+ if ($test_type ne $tmp_test_type);
|
|
|
|
- # remove carriage returns, bels and other annoyances.
|
|
- $_ =~ s/[\r]$//;
|
|
- $_ =~ s/[\r]/CR/g;
|
|
- $_ =~ s/[\x01-\x08]//g;
|
|
- $_ =~ s/\s+$//;
|
|
+ ($test_description) = $_ =~ /description: (.*)/;
|
|
|
|
- if ($debug)
|
|
+ if (!$test_description)
|
|
{
|
|
- dbg "\nINPUT: $_";
|
|
+ $test_description = "";
|
|
}
|
|
+ $test_description .= '; messages: ' . (join '; ', @messages) . ';';
|
|
|
|
- # massage the input to make more uniform across test types and platforms
|
|
- s/\.js, line ([0-9]*): out of memory/.js:$1: out of memory/g;
|
|
+ outputrecord $tmp_test_id, $test_description, $test_result;
|
|
|
|
+ $test_id{$state} = $tmp_test_id;
|
|
+ }
|
|
+ elsif ( $state ne 'idle' && (($tmp_test_id) = $_ =~ /^([^:]*):.* EXIT STATUS: NORMAL/))
|
|
+ {
|
|
+ $test_exit_status = 'NORMAL';
|
|
+ dbg "Exit Status Normal: $tmp_test_id, $test_exit_status";
|
|
|
|
- if (/^Spider: Start.*start-spider.html/)
|
|
+ if ($test_id{$state} && $tmp_test_id ne $test_id{$state})
|
|
{
|
|
- if ($state eq 'idle')
|
|
- {
|
|
- $state = 'startrun';
|
|
- }
|
|
- else
|
|
- {
|
|
- warn "WARNING: state: $state, expected: idle, log: $file";
|
|
- $state = 'startrun';
|
|
- }
|
|
+ warn "WARNING: state: $state, mismatched test_id: expected: $tmp_test_id, actual: $test_id{$state}, log: $file";
|
|
}
|
|
- elsif (/^Spider: Begin loading.*start-spider.html/)
|
|
+
|
|
+ if ($state eq 'reportingtest' || $state eq 'runningtest')
|
|
{
|
|
- if ($state eq 'startrun')
|
|
- {
|
|
- $state = 'startrun';
|
|
- }
|
|
- else
|
|
- {
|
|
- warn "WARNING: state: $state, expected: startrun, log: $file";
|
|
- $state = 'startrun';
|
|
- }
|
|
+ $state = 'exitedtest';
|
|
}
|
|
- elsif (/^Start Spider: try.*EXIT STATUS: NORMAL/)
|
|
+ else
|
|
{
|
|
- if ($state eq 'startrun')
|
|
- {
|
|
- $state = 'initialized';
|
|
- }
|
|
- else
|
|
- {
|
|
- warn "WARNING: state: $state, expected: startrun, log: $file";
|
|
- $state = 'initialized';
|
|
- }
|
|
+ warn "WARNING: state: $state, expected: reportingtest, runningtest, log: $file";
|
|
+ $state = 'exitedtest';
|
|
}
|
|
- elsif (/^Start Spider: try.*EXIT STATUS: (TIMED OUT|CRASHED)/)
|
|
+
|
|
+ if (! $test_reported{$tmp_test_id})
|
|
{
|
|
- if ($state eq 'startrun')
|
|
- {
|
|
- $state = 'startrun';
|
|
- }
|
|
- else
|
|
- {
|
|
- warn "WARNING: state: $state, expected: startrun, log: $file";
|
|
- $state = 'startrun';
|
|
- }
|
|
+ dbg "No test results reported: $tmp_test_id";
|
|
+
|
|
+ $test_result = 'FAILED';
|
|
+ $test_description = 'No test results reported; messages: ' . (join '; ', @messages) . ';';
|
|
+
|
|
+ outputrecord $tmp_test_id, $test_description, $test_result;
|
|
}
|
|
- elsif ( /^Spider: Start: -url .*test.mozilla.com.tests.mozilla.org.js.urllist-/)
|
|
- {
|
|
- dbg "Setting mode to nonrestart";
|
|
|
|
- $mode = 'nonrestart';
|
|
+ $test_id{$state} = $tmp_test_id;
|
|
+ }
|
|
+ elsif ( $state ne 'idle' && (($tmp_test_id) = $_ =~ /^([^:]*):.* EXIT STATUS: TIMED OUT/))
|
|
+ {
|
|
+ $test_exit_status = 'TIMED OUT';
|
|
+ dbg "Exit Status Timed Out: $tmp_test_id, $test_exit_status";
|
|
|
|
- if ($state eq 'initialized')
|
|
- {
|
|
- $state = 'initialized';
|
|
- }
|
|
- elsif ($state eq 'starttest')
|
|
- {
|
|
- $state = 'initialized';
|
|
- }
|
|
- else
|
|
- {
|
|
- warn "WARNING: state: $state, expected: initialized, starttest, log: $file";
|
|
- $state = 'initialized';
|
|
- }
|
|
- }
|
|
- elsif ( ($tmp_test_id) = $_ =~ /^Spider: Start.*http.*test=([^;]*);/)
|
|
+ if ($test_id{$state} && $tmp_test_id ne $test_id{$state})
|
|
{
|
|
- if ($state eq 'initialized')
|
|
- {
|
|
- $state = 'starttest';
|
|
- }
|
|
- elsif ($state eq 'completedtest')
|
|
- {
|
|
- $state = 'starttest';
|
|
- }
|
|
- elsif ($state eq 'endrun')
|
|
- {
|
|
- $state = 'starttest';
|
|
- }
|
|
- else
|
|
- {
|
|
- warn "WARNING: state: $state, expected: initialized, completedtest, endrun, log: $file";
|
|
- $state = 'starttest';
|
|
- }
|
|
-
|
|
- $test_id{$state} = $tmp_test_id;
|
|
- $test_id{'loadingtest'} = $test_id{'runningtest'} = $test_id{'reportingtest'} = $test_id{'loadedtest'} = $test_id{'endrun'} = $test_id {'completedtest'} = $test_id{'loadedtest'} = '';
|
|
- @messages = ();
|
|
+ warn "WARNING: state: $state, mismatched test_id: expected: $tmp_test_id, actual: $test_id{$state}, log: $file";
|
|
}
|
|
- elsif ( /^JavaScriptTest: Begin Run/)
|
|
+
|
|
+ if ($state eq 'reportingtest' || $state eq 'runningtest')
|
|
{
|
|
- if ($state eq 'starttest')
|
|
- {
|
|
- $state = 'starttest';
|
|
- }
|
|
- elsif ($state eq 'initialized' && $mode eq 'nonrestart')
|
|
- {
|
|
- $state = 'starttest';
|
|
- }
|
|
- else
|
|
- {
|
|
- warn "WARNING: state: $state, expected: starttest or initialized in non restart mode, mode $mode, log: $file";
|
|
- $state = 'starttest';
|
|
- }
|
|
+ $state = 'exitedtest';
|
|
}
|
|
- elsif ( ($tmp_test_id) = $_ =~ /^Spider: Begin loading http.*test=([^;]*);/)
|
|
+ else
|
|
{
|
|
- if ($mode eq 'restart' && $test_id{$state} && $tmp_test_id ne $test_id{$state})
|
|
- {
|
|
- warn "WARNING: state: $state, expected starttest. mismatched test_id: expected: $tmp_test_id, actual: $test_id{$state}, log: $file";
|
|
- }
|
|
+ dbg "state: $state, expected: reportingtest, runningtest";
|
|
+ $state = 'exitedtest';
|
|
+ }
|
|
|
|
- if ($state eq 'starttest')
|
|
- {
|
|
- $state = 'loadingtest';
|
|
- }
|
|
- elsif ($state eq 'initialized' && $mode eq 'nonrestart')
|
|
- {
|
|
- $state = 'loadingtest';
|
|
- }
|
|
- else
|
|
- {
|
|
- warn "WARNING: state: $state, expected: starttest or initialized in non restart mode, log: $file";
|
|
- $state = 'loadingtest';
|
|
- }
|
|
+ $test_result = 'FAILED';
|
|
+ $test_description .= '; messages: ' . (join '; ', @messages) . ';';
|
|
+
|
|
+ outputrecord $tmp_test_id, $test_description, $test_result;
|
|
|
|
- $test_id{$state} = $tmp_test_id;
|
|
- }
|
|
- elsif ( ($tmp_test_id) = $_ =~ /^JavaScriptTest: Begin Test ([^ ]*)/)
|
|
- {
|
|
- if ($test_id{$state} && $tmp_test_id ne $test_id{$state})
|
|
- {
|
|
- warn "WARNING: state: $state, expected loadingtest. mismatched test_id: expected: $tmp_test_id, actual: $test_id{$state}, log: $file";
|
|
- }
|
|
+ $test_id{$state} = $tmp_test_id;
|
|
+ }
|
|
+ elsif ( $state ne 'idle' && (($tmp_test_id, $tmp_test_exit_status) = $_ =~ /^([^:]*):.* EXIT STATUS: (CRASHED signal [0-9]+ [A-Z]+) \([0-9.]+ seconds\)/))
|
|
+ {
|
|
+ $test_exit_status = $tmp_test_exit_status;
|
|
+ dbg "Exit Status Crashed: $tmp_test_id, $test_exit_status";
|
|
|
|
- if ($state eq 'loadingtest')
|
|
- {
|
|
- $state = 'runningtest';
|
|
- }
|
|
- else
|
|
- {
|
|
- warn "WARNING: state: $state, expected: loadingtest, log: $file";
|
|
- $state = 'runningtest';
|
|
- }
|
|
+ if ($test_id{$state} && $tmp_test_id ne $test_id{$state})
|
|
+ {
|
|
+ warn "WARNING: state: $state, mismatched test_id: expected: $tmp_test_id, actual: $test_id{$state}, log: $file";
|
|
+ }
|
|
|
|
- $test_id{$state} = $tmp_test_id;
|
|
+ if ($state eq 'reportingtest' || $state eq 'runningtest')
|
|
+ {
|
|
+ $state = 'exitedtest';
|
|
}
|
|
- elsif ( ($tmp_test_id) = $_ =~ /^jstest: (.*?) *bug:/)
|
|
+ else
|
|
{
|
|
- if ($test_id{$state} && $tmp_test_id ne $test_id{$state})
|
|
- {
|
|
- warn "WARNING: state: $state, expected runningtest, reportingtest. mismatched test_id: expected: $tmp_test_id, actual: $test_id{$state}, log: $file";
|
|
- }
|
|
-
|
|
- if ($state eq 'runningtest')
|
|
- {
|
|
- $state = 'reportingtest';
|
|
- }
|
|
- elsif ($state eq 'reportingtest')
|
|
- {
|
|
- $state = 'reportingtest';
|
|
- }
|
|
- elsif ($state eq 'pendingtest')
|
|
- {
|
|
- $state = 'reportingtest';
|
|
- }
|
|
- else
|
|
- {
|
|
- warn "WARNING: test_id: $test_id{$state}, state: $state, expected: runningtest, reportingtest, pendingtest, log: $file";
|
|
- $state = 'reportingtest';
|
|
- }
|
|
-
|
|
- ($test_result) = $_ =~ /result: (.*?) *type:/;
|
|
- ($tmp_test_type) = $_ =~ /type: (.*?) *description:/;
|
|
-
|
|
- die "FATAL ERROR: test_id: $test_id{$state}, jstest test type mismatch: start test_type: $test_type, current test_type: $tmp_test_type, test state: $state, log: $file"
|
|
- if ($test_type ne $tmp_test_type);
|
|
-
|
|
- ($test_description) = $_ =~ /description: (.*)/;
|
|
+ dbg "state: $state, expected: reportingtest, runningtest";
|
|
+ $state = 'exitedtest';
|
|
+ }
|
|
|
|
- if (!$test_description)
|
|
- {
|
|
- $test_description = "";
|
|
- }
|
|
- $test_description .= ' ' . join '; ', @messages;
|
|
+ $test_result = 'FAILED';
|
|
+ $test_description .= '; messages: ' . (join '; ', @messages) . ';';
|
|
+
|
|
+ outputrecord $tmp_test_id, $test_description, $test_result;
|
|
|
|
- outputrecord $tmp_test_id, $test_description, $test_result;
|
|
+ $test_id{$state} = $tmp_test_id;
|
|
+ }
|
|
+ elsif ( $state ne 'idle' && (($tmp_test_id, $tmp_test_exit_status) = $_ =~ /^([^:]*):.* EXIT STATUS: (ABNORMAL [0-9]+) \([0-9.]+ seconds\)/))
|
|
+ {
|
|
+ $test_exit_status = $tmp_test_exit_status;
|
|
+ dbg "Exit Status Abnormal: $tmp_test_id, $test_exit_status";
|
|
|
|
- $test_id{$state} = $tmp_test_id;
|
|
- }
|
|
- elsif ( ($tmp_test_id) = $_ =~ /^Spider: Finish loading http.*test=([^;]*);/)
|
|
+ if ($test_id{$state} && $tmp_test_id ne $test_id{$state})
|
|
{
|
|
- if ($test_id{$state} && $tmp_test_id ne $test_id{$state})
|
|
- {
|
|
- warn "WARNING: state: $state, expected reportingtest. mismatched test_id: expected: $tmp_test_id, actual: $test_id{$state}, log: $file";
|
|
- }
|
|
-
|
|
- if ($state eq 'reportingtest')
|
|
- {
|
|
- $state = 'loadedtest';
|
|
- }
|
|
- else
|
|
- {
|
|
- # probably an out of memory error or a browser only delayed execution test.
|
|
- dbg "state: $state, expected: reportingtest. assuming test result is pending";
|
|
- $state = 'pendingtest';
|
|
- }
|
|
-
|
|
- $test_id{$state} = $tmp_test_id;
|
|
+ warn "WARNING: state: $state, mismatched test_id: expected: $tmp_test_id, actual: $test_id{$state}, log: $file";
|
|
}
|
|
- elsif ( ($tmp_test_id) = $_ =~ /^Spider: Current Url:.*test=([^;]*);/)
|
|
- {
|
|
- if ($test_id{$state} && $tmp_test_id ne $test_id{$state})
|
|
- {
|
|
- warn "WARNING: state: $state, expected loadedtest. mismatched test_id: expected: $tmp_test_id, actual: $test_id{$state}, log: $file";
|
|
- }
|
|
-
|
|
- if ($state eq 'loadedtest')
|
|
- {
|
|
- $state = 'loadedtest';
|
|
- }
|
|
- elsif ($state eq 'reportingtest')
|
|
- {
|
|
- $state = 'loadedtest';
|
|
- }
|
|
- elsif ($state eq 'pendingtest')
|
|
- {
|
|
- $state = 'pendingtest';
|
|
- }
|
|
- else
|
|
- {
|
|
- warn "WARNING: state: $state, expected: loadedtest, reportingtest, pendingtest, log: $file";
|
|
- $state = 'loadedtest';
|
|
- }
|
|
|
|
- $test_id{$state} = $tmp_test_id;
|
|
- }
|
|
- elsif ( ($tmp_test_id, $page_status) = $_ =~ /^http:.*test=([^;]*);.* (PAGE STATUS: NORMAL.*)/)
|
|
+ if ($state eq 'reportingtest' || $state eq 'runningtest')
|
|
{
|
|
- if ($test_id{$state} && $tmp_test_id ne $test_id{$state})
|
|
- {
|
|
- warn "WARNING: state: $state, expected loadedtest. mismatched test_id: expected: $tmp_test_id, actual: $test_id{$state}, log: $file";
|
|
- }
|
|
-
|
|
- if ($state eq 'loadedtest')
|
|
- {
|
|
- $state = 'loadedtest';
|
|
- }
|
|
- elsif ($state eq 'pendingtest')
|
|
- {
|
|
- $state = 'pendingtest';
|
|
- }
|
|
- elsif ($state eq 'reportingtest')
|
|
- {
|
|
- # test was pending, but output a result.
|
|
- $state = 'loadedtest';
|
|
- }
|
|
- else
|
|
- {
|
|
- warn "WARNING: state: $state, expected: loadedtest, pendingtest, reportingtest, log: $file";
|
|
- $state = 'loadedtest';
|
|
- }
|
|
-
|
|
- $test_id{$state} = $tmp_test_id;
|
|
+ $state = 'exitedtest';
|
|
}
|
|
- elsif ( ($tmp_test_id, $page_status) = $_ =~ /^http:.*test=([^;]*);.* (PAGE STATUS: TIMED OUT.*)/)
|
|
+ else
|
|
{
|
|
- if ($test_id{$state} && $tmp_test_id ne $test_id{$state})
|
|
- {
|
|
- warn "WARNING: state: $state, expected loadedtest. mismatched test_id: expected: $tmp_test_id, actual: $test_id{$state}, log: $file";
|
|
- }
|
|
-
|
|
- if ($state eq 'loadedtest')
|
|
- {
|
|
- $state = 'endrun';
|
|
- }
|
|
- elsif ($state eq 'runningtest')
|
|
- {
|
|
- $state = 'completedtest';
|
|
- }
|
|
- elsif ($state eq 'reportingtest')
|
|
- {
|
|
- $state = 'completedtest';
|
|
- }
|
|
- elsif ($state eq 'pendingtest')
|
|
- {
|
|
- $state = 'completedtest';
|
|
- }
|
|
- else
|
|
- {
|
|
- warn "WARNING: state: $state, expected: loadedtest, runningtest, reportingtest, pendingtest, log: $file";
|
|
- $state = 'endrun';
|
|
- }
|
|
+ dbg "state: $state, expected: reportingtest, runningtest";
|
|
+ $state = 'exitedtest';
|
|
+ }
|
|
|
|
- $test_result = 'FAILED';
|
|
- $test_description = $page_status . ' ' . join '; ', @messages;;
|
|
-
|
|
- outputrecord $tmp_test_id, $test_description, $test_result;
|
|
+ ($exit_code) = $test_exit_status =~ /ABNORMAL ([0-9]+)/;
|
|
|
|
- $test_id{$state} = $tmp_test_id;
|
|
+ if (grep /$exit_code/, @expected_exit_code_list)
|
|
+ {
|
|
+ $test_result = 'PASSED';
|
|
}
|
|
- elsif ( ($tmp_test_id) = $_ =~ /^JavaScriptTest: ([^ ]*) Elapsed time/)
|
|
+ else
|
|
{
|
|
- if ($test_id{$state} && $tmp_test_id ne $test_id{$state})
|
|
- {
|
|
- warn "WARNING: state: $state, expected loadedtest. mismatched test_id: expected: $tmp_test_id, actual: $test_id{$state}, log: $file";
|
|
- }
|
|
+ $test_result = 'FAILED';
|
|
+ }
|
|
|
|
- if ($state eq 'loadedtest')
|
|
- {
|
|
- $state = 'completedtest';
|
|
- }
|
|
- elsif ($state eq 'pendingtest')
|
|
- {
|
|
- $state = 'pendingtest';
|
|
- }
|
|
- elsif ($state eq 'reportingtest')
|
|
- {
|
|
- # test was pending, but has been reported.
|
|
- $state = 'completedtest';
|
|
- }
|
|
- else
|
|
- {
|
|
- warn "WARNING: state: $state, expected: loadedtest, loadedtest, pendingtest, reportingtest, log: $file";
|
|
- $state = 'completedtest';
|
|
- }
|
|
+ $test_description .= '; messages: ' . (join '; ', @messages) . ';';
|
|
|
|
- $test_id{$state} = $tmp_test_id;
|
|
- }
|
|
- elsif ( ($tmp_test_id) = $_ =~ /^JavaScriptTest: End Test ([^ ]*)/)
|
|
- {
|
|
- if ($test_id{$state} && $tmp_test_id ne $test_id{$state})
|
|
- {
|
|
- warn "WARNING: state: $state, expected completedtest, endrun. mismatched test_id: expected: $tmp_test_id, actual: $test_id{$state}, log: $file";
|
|
- }
|
|
+ dbg "Exit Code: $exit_code, Test Result: $test_result, Expected Exit Codes: " . (join '; ', @expected_exit_code_list);
|
|
|
|
- if ($state eq 'completedtest')
|
|
- {
|
|
- if ($mode eq 'restart')
|
|
- {
|
|
- $state = 'completedtest';
|
|
- }
|
|
- else
|
|
- {
|
|
- $state = 'starttest';
|
|
- }
|
|
- }
|
|
- elsif ($state eq 'pendingtest')
|
|
- {
|
|
- $state = 'completedtest';
|
|
+ outputrecord $tmp_test_id, $test_description, $test_result;
|
|
|
|
- $test_result = 'UNKNOWN';
|
|
- $test_description = 'No test results reported. ' . join '; ', @messages;
|
|
-
|
|
- outputrecord $tmp_test_id, $test_description, $test_result;
|
|
- }
|
|
- elsif ($state eq 'endrun')
|
|
- {
|
|
- $state = 'endrun';
|
|
- }
|
|
- else
|
|
- {
|
|
- warn "WARNING: state: $state, expected: completedtest, pendingtest, endrun, log: $file";
|
|
- $state = 'completedtest';
|
|
- }
|
|
+ $test_id{$state} = $tmp_test_id;
|
|
+ }
|
|
+ elsif ( ($tmp_test_id) = $_ =~ /^JavaScriptTest: End Test ([^ ]*)/)
|
|
+ {
|
|
+ dbg "End Test: $tmp_test_id";
|
|
|
|
- $test_id{$state} = $tmp_test_id;
|
|
+ if ($test_id{$state} && $tmp_test_id ne $test_id{$state})
|
|
+ {
|
|
+ warn "WARNING: state: $state, mismatched test_id: expected: $tmp_test_id, actual: $test_id{$state}, log: $file";
|
|
}
|
|
- elsif ( /^JavaScriptTest: End Run/)
|
|
+
|
|
+ if ($state eq 'exitedtest' || $state eq 'runningtest' || $state eq 'reportingtest')
|
|
{
|
|
- if ($state eq 'completedtest')
|
|
- {
|
|
- $state = 'endrun';
|
|
- }
|
|
- elsif ($state eq 'loadedtest')
|
|
- {
|
|
- $state = 'endrun';
|
|
- }
|
|
- elsif ($state eq 'pendingtest')
|
|
- {
|
|
- $state = 'pendingtest';
|
|
- }
|
|
- elsif ($state eq 'starttest' && $mode eq 'nonrestart')
|
|
- {
|
|
- # non restart mode, at last test.
|
|
- $state = 'endrun';
|
|
- }
|
|
- else
|
|
- {
|
|
- warn "WARNING: state: $state, expected: completedtest, loadedtest, pendingtest or starttest in non restart mode, log: $file";
|
|
- $state = 'endrun';
|
|
- }
|
|
+ $state = 'endtest';
|
|
}
|
|
- elsif ( ($tmp_test_id, $exit_status) = $_ =~ /^http:.*test=([^;]*);.* (EXIT STATUS: NORMAL.*)/)
|
|
+ else
|
|
{
|
|
- if ($test_id{$state} && $tmp_test_id ne $test_id{$state})
|
|
- {
|
|
- warn "WARNING: state: $state, expected endrun. mismatched test_id: expected: $tmp_test_id, actual: $test_id{$state}, log: $file";
|
|
- }
|
|
-
|
|
- if ($state eq 'endrun')
|
|
- {
|
|
- $state = 'endrun';
|
|
- }
|
|
- elsif ($state eq 'completedtest')
|
|
- {
|
|
- dbg "previously pending test $test_id{$state} completed and is now endrun";
|
|
- $state = 'endrun';
|
|
- }
|
|
- else
|
|
- {
|
|
- warn "WARNING: state: $state, expected: endrun, log: $file";
|
|
- $state = 'endrun';
|
|
- }
|
|
+ warn "WARNING: state: $state, expected: runningtest, reportingtest, exitedtest, log: $file";
|
|
+ $state = 'endtest';
|
|
+ }
|
|
|
|
- if (! $test_reported{$tmp_test_id})
|
|
- {
|
|
- $test_result = 'UNKNOWN';
|
|
- $test_description = $exit_status . ' No test results reported. ' . join '; ', @messages;
|
|
-
|
|
- outputrecord $tmp_test_id, $test_description, $test_result;
|
|
- }
|
|
+ $test_id{$state} = $tmp_test_id;
|
|
+ }
|
|
+ elsif ( /^JavaScriptTest: End Run/)
|
|
+ {
|
|
+ dbg "End Run";
|
|
|
|
- $test_id{$state} = $tmp_test_id;
|
|
+ if ($state eq 'endtest')
|
|
+ {
|
|
+ $state = 'endrun';
|
|
}
|
|
- elsif ( ($tmp_test_id, $exit_status) = $_ =~ /^http:.*test=([^;]*);.* (EXIT STATUS: TIMED OUT.*)/)
|
|
+ else
|
|
{
|
|
- if ($test_id{$state} && $tmp_test_id ne $test_id{$state})
|
|
- {
|
|
- warn "WARNING: state: $state, expected endrun. mismatched test_id: expected: $tmp_test_id, actual: $test_id{$state}, log: $file";
|
|
- }
|
|
-
|
|
- if ($state eq 'endrun')
|
|
- {
|
|
- $state = 'endrun';
|
|
- }
|
|
- else
|
|
- {
|
|
- dbg "state: $state, expected: endrun";
|
|
- $state = 'endrun';
|
|
- }
|
|
-
|
|
- $test_result = 'FAILED';
|
|
- $test_description = $exit_status . ' ' . join '; ', @messages;
|
|
-
|
|
- outputrecord $tmp_test_id, $test_description, $test_result;
|
|
-
|
|
- $test_id{$state} = $tmp_test_id;
|
|
+ warn "WARNING: state: $state, expected: endtest, log: $file";
|
|
+ $state = 'endrun';
|
|
}
|
|
- elsif ( ($tmp_test_id, $exit_status) = $_ =~ /^http:.*test=([^;]*);.* (EXIT STATUS: CRASHED.*)/)
|
|
+ }
|
|
+ elsif ($_ &&
|
|
+ !/^\s+$/ &&
|
|
+ !/^(STATUS:| *PASSED!| *FAILED!)/ &&
|
|
+ !/^JavaScriptTest:/ &&
|
|
+ !/^[*][*][*]/ &&
|
|
+ !/^[-+]{2,2}(WEBSHELL|DOMWINDOW)/ &&
|
|
+ !/^Spider:/ &&
|
|
+ !/real.*user.*sys.*$/ &&
|
|
+ !/user.*system.*elapsed/)
|
|
+ {
|
|
+ if ('runningtest, reportingtest' =~ /$state/)
|
|
{
|
|
- if ($test_id{$state} && $tmp_test_id ne $test_id{$state})
|
|
- {
|
|
- warn "WARNING: state: $state, expected endrun. mismatched test_id: expected: $tmp_test_id, actual: $test_id{$state}, log: $file";
|
|
- }
|
|
|
|
- if ($state eq 'endrun')
|
|
- {
|
|
- $state = 'endrun';
|
|
- }
|
|
- else
|
|
+ if (/error: can.t allocate region/ || /set a breakpoint in malloc_error_break/ ||
|
|
+ /set a breakpoint in szone_error to debug/ || /malloc:.*mmap/ || /vm_allocate/ ||
|
|
+ /terminate called after throwing an instance of 'std::bad_alloc'/)
|
|
{
|
|
- dbg "state: $state, expected: endrun";
|
|
- $state = 'endrun';
|
|
+ dbg "Adding message: $_ converted to /$test_id{$state}:0: out of memory";
|
|
+ push @messages, ('/' . $test_id{$state} . ':0: out of memory');
|
|
}
|
|
-
|
|
- $test_result = 'FAILED';
|
|
- $test_description = $exit_status . ' ' . join '; ', @messages;;
|
|
-
|
|
- outputrecord $tmp_test_id, $test_description, $test_result;
|
|
-
|
|
- $test_id{$state} = $tmp_test_id;
|
|
- }
|
|
- elsif ( m@^(\/cygdrive\/.|\/.)?$test_dir$@)
|
|
- {
|
|
- if ($state eq 'endrun')
|
|
+ elsif (/\.js, line [0-9]+: out of memory/ )
|
|
{
|
|
- $state = 'success';
|
|
+ s/\.js, line ([0-9]+): out of memory/\.js:$1:/;
|
|
+ dbg "Adding message: $_ converted to /$test_id{$state}:0: out of memory";
|
|
+ push @messages, ('/' . $test_id{$state} . ':0: out of memory');
|
|
}
|
|
else
|
|
{
|
|
- warn "WARNING: state: $state, expected: endrun, log: $file";
|
|
- $state = 'success';
|
|
+ dbg "Adding message: $_";
|
|
+ push @messages, ($_);
|
|
}
|
|
-
|
|
- $test_id{$state} = $tmp_test_id;
|
|
}
|
|
- elsif (!/^ \=\>/ && !/^\s+$/ && !/^[*][*][*]/ && !/^[-+]{2,2}(WEBSHELL|DOMWINDOW)/ && !/^Spider:/ &&
|
|
- !/^JavaScriptTest:/ && !/real.*user.*sys.*$/ && !/user.*system.*elapsed/)
|
|
- {
|
|
- if ('starttest, loadingtest, runningtest, reportingtest, pendingtest, loadedtest, endrun, completedtest' =~ /$state/)
|
|
- {
|
|
+ }
|
|
+ elsif ($debug)
|
|
+ {
|
|
+ dbg "Skipping: $_";
|
|
+ }
|
|
|
|
- if (/error: can.t allocate region/ || /set a breakpoint in malloc_error_break/ ||
|
|
- /set a breakpoint in szone_error to debug/ || /malloc:.*mmap/ || /vm_allocate/ )
|
|
- {
|
|
- dbg "Adding message: $_ converted to /$test_id{$state}:0: out of memory";
|
|
- push @messages, ('/' . $test_id{$state} . ':0: out of memory');
|
|
- }
|
|
- else
|
|
- {
|
|
- dbg "Adding message: $_";
|
|
- push @messages, ($_);
|
|
- }
|
|
- }
|
|
+ if ($debug)
|
|
+ {
|
|
+ if ($test_id{$state})
|
|
+ {
|
|
+ dbg "test_id{$state}=$test_id{$state}, " . (join '; ', @messages);
|
|
}
|
|
-
|
|
- if ($debug)
|
|
+ else
|
|
{
|
|
- if ($test_id{$state})
|
|
- {
|
|
- dbg "test_id{$state}=$test_id{$state}, " . join '; ', @messages;
|
|
- }
|
|
- else
|
|
- {
|
|
- dbg "state=$state, " . join '; ', @messages;
|
|
- }
|
|
+ dbg "state=$state, " . (join '; ', @messages);
|
|
}
|
|
}
|
|
}
|
|
- close FILE;
|
|
-
|
|
- undef $test_branchid;
|
|
- undef $test_date;
|
|
- undef $test_buildtype;
|
|
- undef $test_machine;
|
|
- undef $test_product;
|
|
- undef $test_suite;
|
|
-
|
|
+ if ($state eq 'endrun')
|
|
+ {
|
|
+ $state = 'success';
|
|
+ }
|
|
die "FATAL ERROR: Test run terminated prematurely. state: $state, log: $file" if ($state ne 'success');
|
|
-}
|
|
|
|
+}
|
|
+close FILE;
|
|
close TEMP;
|
|
|
|
+undef $test_branchid;
|
|
+undef $test_date;
|
|
+undef $test_buildtype;
|
|
+undef $test_machine;
|
|
+undef $test_product;
|
|
+undef $test_suite;
|
|
+
|
|
outresults;
|
|
|
|
unlink $temp;
|
|
|
|
sub dbg {
|
|
if ($debug)
|
|
{
|
|
my $msg = shift;
|
|
print STDERR "DEBUG: $msg\n";
|
|
}
|
|
}
|
|
|
|
sub outresults
|
|
{
|
|
+ dbg "sorting temp file $temp";
|
|
system("sort < $temp | uniq");
|
|
+ dbg "finished sorting";
|
|
}
|
|
|
|
sub outputrecord
|
|
{
|
|
my ($test_id, $test_description, $test_result) = @_;
|
|
|
|
# cut off the extra jstest: summaries as they duplicate the other
|
|
# output and follow it.
|
|
$test_description =~ s/jstest:.*//;
|
|
|
|
- if (length($test_description) > 6000)
|
|
- {
|
|
- $test_description = substr($test_description, 0, 6000);
|
|
- }
|
|
+# if (length($test_description) > 6000)
|
|
+# {
|
|
+# $test_description = substr($test_description, 0, 6000);
|
|
+# }
|
|
+#
|
|
|
|
my $output =
|
|
- "TEST_ID=$test_id, TEST_BRANCH=$test_branchid, TEST_RESULT=$test_result, " .
|
|
- "TEST_BUILDTYPE=$test_buildtype, TEST_TYPE=$test_type, TEST_OS=$test_os, " .
|
|
- "TEST_MACHINE=$test_machine, TEST_PROCESSORTYPE=$test_processortype, " .
|
|
- "TEST_KERNEL=$test_kernel, TEST_DATE=$test_date, TEST_TIMEZONE=$test_timezone, " .
|
|
- "TEST_DESCRIPTION=$test_description\n";
|
|
+ "TEST_ID=$test_id, " .
|
|
+ "TEST_BRANCH=$test_branchid, " .
|
|
+ "TEST_BUILDTYPE=$test_buildtype, " .
|
|
+ "TEST_TYPE=$test_type, " .
|
|
+ "TEST_OS=$test_os, " .
|
|
+ "TEST_KERNEL=$test_kernel, " .
|
|
+ "TEST_PROCESSORTYPE=$test_processortype, " .
|
|
+ "TEST_MEMORY=$test_memory, " .
|
|
+ "TEST_CPUSPEED=$test_cpuspeed, " .
|
|
+ "TEST_TIMEZONE=$test_timezone, " .
|
|
+ "TEST_RESULT=$test_result, " .
|
|
+ "TEST_EXITSTATUS=$test_exit_status, " .
|
|
+ "TEST_DESCRIPTION=$test_description, " .
|
|
+ "TEST_MACHINE=$test_machine, " .
|
|
+ "TEST_DATE=$test_date" .
|
|
+ "\n";
|
|
|
|
if ($debug)
|
|
{
|
|
dbg "RECORD: $output";
|
|
}
|
|
print TEMP $output;
|
|
|
|
$test_reported{$test_id} = 1;
|
|
Index: process-logs.sh
|
|
===================================================================
|
|
RCS file: /cvsroot/mozilla/js/tests/process-logs.sh,v
|
|
retrieving revision 1.3
|
|
diff -p -U 8 -r1.3 process-logs.sh
|
|
--- process-logs.sh 3 Apr 2008 16:25:02 -0000 1.3
|
|
+++ process-logs.sh 25 Jun 2008 17:31:16 -0000
|
|
@@ -33,23 +33,23 @@
|
|
# decision by deleting the provisions above and replace them with the notice
|
|
# and other provisions required by the GPL or the LGPL. If you do not delete
|
|
# the provisions above, a recipient may use your version of this file under
|
|
# the terms of any one of the MPL, the GPL or the LGPL.
|
|
#
|
|
# ***** END LICENSE BLOCK *****
|
|
|
|
if [[ -z "$TEST_DIR" ]]; then
|
|
- cat <<EOF
|
|
+ cat <<EOF
|
|
`basename $0`: error
|
|
|
|
TEST_DIR, the location of the Sisyphus framework,
|
|
is required to be set prior to calling this script.
|
|
EOF
|
|
- exit 2
|
|
+ exit 2
|
|
fi
|
|
|
|
if [[ ! -e $TEST_DIR/bin/library.sh ]]; then
|
|
echo "TEST_DIR=$TEST_DIR"
|
|
echo ""
|
|
echo "This script requires the Sisyphus testing framework. Please "
|
|
echo "cvs check out the Sisyphys framework from mozilla/testing/sisyphus"
|
|
echo "and set the environment variable TEST_DIR to the directory where it"
|
|
@@ -69,54 +69,72 @@ usage()
|
|
usage: process-logs.sh.sh -l testlogfiles -A arch -K kernel
|
|
|
|
variable description
|
|
=============== ============================================================
|
|
testlogfiles The test log to be processed. If testlogfiles is a file
|
|
pattern it must be single quoted to prevent the shell from
|
|
expanding it before it is passed to the script.
|
|
|
|
+kernel optional. The machine kernel as specified by uname -r
|
|
+ If not specified, the script will attempt to determine the
|
|
+ value from the TEST_KERNEL line in the log.
|
|
+ 'all' - do not filter on machine kernel. Use this for
|
|
+ Windows.
|
|
+ For Linux distros, use the value of uname -r
|
|
+ and replace the minor version numbers with .* as in
|
|
+ 2.6.23.1-21.fc7 -> 2.6.23.*fc7
|
|
arch optional. The machine architecture as specified by uname -p
|
|
If not specified, the script will attempt to determine the
|
|
value from the TEST_PROCESSORTYPE line in each log.
|
|
'all' - do not filter on machine architecture. Use this
|
|
for Windows.
|
|
'i686' - Linux distros such as Fedora Core or RHEL or CentOS.
|
|
'i386' - Mac Intel
|
|
'powerpc' - Mac PowerPC
|
|
|
|
-kernel optional. The machine kernel as specified by uname -r
|
|
- If not specified, the script will attempt to determine the
|
|
- value from the TEST_KERNEL line in the log.
|
|
- 'all' - do not filter on machine kernel. Use this for
|
|
- Windows.
|
|
- For Linux distros, use the value of uname -r
|
|
- and replace the minor version numbers with .* as in
|
|
- 2.6.23.1-21.fc7 -> 2.6.23.*fc7
|
|
EOF
|
|
exit 2
|
|
}
|
|
|
|
while getopts "l:A:K:" optname;
|
|
- do
|
|
- case $optname in
|
|
- l) testlogfiles=$OPTARG;;
|
|
- A) optarch=$OPTARG;;
|
|
- K) optkernel=$OPTARG;;
|
|
- esac
|
|
+do
|
|
+ case $optname in
|
|
+ l) testlogfiles=$OPTARG;;
|
|
+ A) optarch=$OPTARG;;
|
|
+ K) optkernel=$OPTARG;;
|
|
+ esac
|
|
done
|
|
|
|
if [[ -z "$testlogfiles" ]]; then
|
|
usage
|
|
fi
|
|
|
|
for testlogfile in `ls $testlogfiles`; do
|
|
|
|
debug "testlogfile=$testlogfile"
|
|
|
|
+ case $testlogfile in
|
|
+ *.log)
|
|
+ worktestlogfile=$testlogfile
|
|
+ ;;
|
|
+ *.log.bz2)
|
|
+ worktestlogfile=`mktemp $testlogfile.XXXXXX`
|
|
+ bunzip2 -c $testlogfile > $worktestlogfile
|
|
+ ;;
|
|
+ *.log.gz)
|
|
+ worktestlogfile=`mktemp $testlogfile.XXXXXX`
|
|
+ gunzip -c $testlogfile > $worktestlogfile
|
|
+ ;;
|
|
+ *)
|
|
+ echo "unknown log type: $f"
|
|
+ exit 2
|
|
+ ;;
|
|
+ esac
|
|
+
|
|
case "$testlogfile" in
|
|
*,js,*) testtype=shell;;
|
|
*,firefox,*) testtype=browser;;
|
|
*) error "unknown testtype in logfile $testlogfile" $LINENO;;
|
|
esac
|
|
|
|
debug "testtype=$testtype"
|
|
|
|
@@ -128,72 +146,86 @@ for testlogfile in `ls $testlogfiles`; d
|
|
esac
|
|
|
|
debug "buildtype=$buildtype"
|
|
|
|
case "$testlogfile" in
|
|
*,1.8.0*) branch=1.8.0;;
|
|
*,1.8.1*) branch=1.8.1;;
|
|
*,1.9.0*) branch=1.9.0;;
|
|
+ *,1.9.1*) branch=1.9.1;;
|
|
*)
|
|
- branch=`grep '^environment: TEST_BRANCH=' $testlogfile | sed 's|.*TEST_BRANCH=\(.*\)|\1|'`
|
|
+ branch=`grep -m 1 '^environment: TEST_BRANCH=' $worktestlogfile | sed 's|.*TEST_BRANCH=\(.*\)|\1|'`
|
|
if [[ -z "$branch" ]]; then
|
|
error "unknown branch in logfile $testlogfile" $LINENO
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
debug "branch=$branch"
|
|
|
|
case "$testlogfile" in
|
|
- *,win32,*) OSID=win32;;
|
|
+ *,nt,*) OSID=nt;;
|
|
*,linux,*) OSID=linux;;
|
|
- *,mac,*) OSID=mac;;
|
|
+ *,darwin,*) OSID=darwin;;
|
|
*)
|
|
- OSID=`grep '^environment: OSID=' $testlogfile | sed 's|.*OSID=\(.*\)|\1|'`
|
|
+ OSID=`grep -m 1 '^environment: OSID=' $worktestlogfile | sed 's|.*OSID=\(.*\)|\1|'`
|
|
if [[ -z "$OSID" ]]; then
|
|
error "unknown OS in logfile $testlogfile" $LINENO
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
debug "OSID=$OSID"
|
|
|
|
if [[ -n "$optkernel" ]]; then
|
|
kernel="$optkernel"
|
|
else
|
|
- if [[ "$OSID" == "win32" ]]; then
|
|
- kernel=all
|
|
- else
|
|
- kernel=`grep '^environment: TEST_KERNEL=' $testlogfile | sed 's|.*TEST_KERNEL=\(.*\)|\1|'`
|
|
- kernel=`echo $kernel | sed 's|\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)[-.0-9]*\.\([a-zA-Z0-9]*\)|\1.\2.\3.*\4|'`
|
|
+ kernel=`grep -m 1 '^environment: TEST_KERNEL=' $worktestlogfile | sed 's|.*TEST_KERNEL=\(.*\)|\1|'`
|
|
+ if [[ "$OSID" == "linux" ]]; then
|
|
+ kernel=`echo $kernel | sed 's|\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*|\1.\2.\3|'`
|
|
fi
|
|
fi
|
|
|
|
debug "kernel=$kernel"
|
|
|
|
if [[ -n "$optarch" ]]; then
|
|
arch="$optarch"
|
|
else
|
|
- if [[ "$OSID" == "win32" ]]; then
|
|
- arch=all
|
|
- else
|
|
- arch=`grep '^environment: TEST_PROCESSORTYPE=' $testlogfile | sed 's|.*TEST_PROCESSORTYPE=\(.*\)|\1|'`
|
|
- fi
|
|
+ arch=`grep -m 1 '^environment: TEST_PROCESSORTYPE=' $worktestlogfile | sed 's|.*TEST_PROCESSORTYPE=\(.*\)|\1|'`
|
|
fi
|
|
|
|
debug "arch=$arch"
|
|
|
|
+ memory=`grep -m 1 '^environment: TEST_MEMORY=' $worktestlogfile | sed 's|.*TEST_MEMORY=\(.*\)|\1|'`
|
|
+ speed=`grep -m 1 '^environment: TEST_CPUSPEED=' $worktestlogfile | sed 's|.*TEST_CPUSPEED=\(.*\)|\1|'`
|
|
+
|
|
timezone=`basename $testlogfile | sed 's|^[-0-9]*\([-+]\)\([0-9]\{4,4\}\),.*|\1\2|'`
|
|
|
|
debug "timezone=$timezone"
|
|
|
|
outputprefix=$testlogfile
|
|
|
|
includetests="included-$branch-$testtype-$buildtype.tests"
|
|
excludetests="excluded-$branch-$testtype-$buildtype.tests"
|
|
|
|
- grep '^include: ' $testlogfile | sed 's|include: ||' > $TEST_DIR/tests/mozilla.org/js/$includetests
|
|
- grep '^exclude: ' $testlogfile | sed 's|exclude: ||' > $TEST_DIR/tests/mozilla.org/js/$excludetests
|
|
-
|
|
- $TEST_DIR/tests/mozilla.org/js/known-failures.pl -b "$branch" -T "$buildtype" -t "$testtype" -o "$OSID" -z "$timezone" -l "$testlogfile" -A "$arch" -K "$kernel" -r "$TEST_JSDIR/failures.txt" -O "$outputprefix"
|
|
+ grep '^include: ' $worktestlogfile | sed 's|include: ||' > $TEST_DIR/tests/mozilla.org/js/$includetests
|
|
+ grep '^exclude: ' $worktestlogfile | sed 's|exclude: ||' > $TEST_DIR/tests/mozilla.org/js/$excludetests
|
|
|
|
+ $TEST_DIR/tests/mozilla.org/js/known-failures.pl \
|
|
+ -b "$branch" \
|
|
+ -T "$buildtype" \
|
|
+ -t "$testtype" \
|
|
+ -o "$OSID" \
|
|
+ -K "$kernel" \
|
|
+ -A "$arch" \
|
|
+ -M "$memory" \
|
|
+ -S "$speed" \
|
|
+ -z "$timezone" \
|
|
+ -r "$TEST_JSDIR/failures.txt" \
|
|
+ -l "$worktestlogfile" \
|
|
+ -O "$outputprefix"
|
|
+
|
|
+ if [[ "$testlogfile" != "$worktestlogfile" ]]; then
|
|
+ rm $worktestlogfile
|
|
+ unset worktestlogfile
|
|
+ fi
|
|
done
|
|
Index: remove-fixed-failures.sh
|
|
===================================================================
|
|
RCS file: remove-fixed-failures.sh
|
|
diff -N remove-fixed-failures.sh
|
|
--- /dev/null 1 Jan 1970 00:00:00 -0000
|
|
+++ remove-fixed-failures.sh 25 Jun 2008 17:31:17 -0000
|
|
@@ -0,0 +1,82 @@
|
|
+#!/bin/bash
|
|
+# -*- Mode: Shell-script; tab-width: 4; indent-tabs-mode: nil; -*-
|
|
+
|
|
+# ***** BEGIN LICENSE BLOCK *****
|
|
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
+#
|
|
+# 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/MPL/
|
|
+#
|
|
+# 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 Mozilla JavaScript Testing Utilities
|
|
+#
|
|
+# The Initial Developer of the Original Code is
|
|
+# Mozilla Corporation.
|
|
+# Portions created by the Initial Developer are Copyright (C) 2008
|
|
+# the Initial Developer. All Rights Reserved.
|
|
+#
|
|
+# Contributor(s): Bob Clary <bclary@bclary.com>
|
|
+#
|
|
+# Alternatively, the contents of this file may be used under the terms of
|
|
+# either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
+# in which case the provisions of the GPL or the LGPL are applicable instead
|
|
+# of those above. If you wish to allow use of your version of this file only
|
|
+# under the terms of either the GPL or the LGPL, and not to allow others to
|
|
+# use your version of this file under the terms of the MPL, indicate your
|
|
+# decision by deleting the provisions above and replace them with the notice
|
|
+# and other provisions required by the GPL or the LGPL. If you do not delete
|
|
+# the provisions above, a recipient may use your version of this file under
|
|
+# the terms of any one of the MPL, the GPL or the LGPL.
|
|
+#
|
|
+# ***** END LICENSE BLOCK *****
|
|
+
|
|
+if [[ ! -e "$1" || ! -e "$2" ]]; then
|
|
+ cat <<EOF
|
|
+Usage: remove-fixed-failures.sh possible-fixes.log failures.log
|
|
+
|
|
+possible-fixes.log contains the possible fixes from the most recent
|
|
+test run.
|
|
+
|
|
+failures.log contains the current known failures.
|
|
+
|
|
+remove-fixed-failures.sh removes each pattern in possible-fixes.log
|
|
+from failures.log.
|
|
+
|
|
+The original failures.log is saved as failures.log.orig for safe keeping.
|
|
+
|
|
+EOF
|
|
+ exit 1
|
|
+fi
|
|
+
|
|
+fixes="$1"
|
|
+failures="$2"
|
|
+
|
|
+# save the original failures file in case of an error
|
|
+cp $failures $failures.orig
|
|
+
|
|
+# create a temporary file to contain the current list
|
|
+# of failures.
|
|
+workfailures=`mktemp working-failures.XXXXX`
|
|
+workfixes=`mktemp working-fixes.XXXXX`
|
|
+
|
|
+trap "rm -f $workfailures; rm -f $temp" EXIT
|
|
+
|
|
+# create working copy of the failures file
|
|
+cp $failures $workfailures
|
|
+cp $fixes $workfixes
|
|
+
|
|
+sed -i 's|:[^:]*\.log||' $workfixes;
|
|
+
|
|
+grep -Fv -f $workfixes ${workfailures} > ${workfailures}.temp
|
|
+
|
|
+mv $workfailures.temp $workfailures
|
|
+
|
|
+mv $workfailures $failures
|
|
+
|
|
Index: runtests.sh
|
|
===================================================================
|
|
RCS file: /cvsroot/mozilla/js/tests/runtests.sh,v
|
|
retrieving revision 1.14
|
|
diff -p -U 8 -r1.14 runtests.sh
|
|
--- runtests.sh 1 May 2008 23:38:29 -0000 1.14
|
|
+++ runtests.sh 25 Jun 2008 17:31:17 -0000
|
|
@@ -33,23 +33,23 @@
|
|
# decision by deleting the provisions above and replace them with the notice
|
|
# and other provisions required by the GPL or the LGPL. If you do not delete
|
|
# the provisions above, a recipient may use your version of this file under
|
|
# the terms of any one of the MPL, the GPL or the LGPL.
|
|
#
|
|
# ***** END LICENSE BLOCK *****
|
|
|
|
if [[ -z "$TEST_DIR" ]]; then
|
|
- cat <<EOF
|
|
+ cat <<EOF
|
|
`basename $0`: error
|
|
|
|
TEST_DIR, the location of the Sisyphus framework,
|
|
is required to be set prior to calling this script.
|
|
EOF
|
|
- exit 2
|
|
+ exit 2
|
|
fi
|
|
|
|
if [[ ! -e $TEST_DIR/bin/library.sh ]]; then
|
|
echo "TEST_DIR=$TEST_DIR"
|
|
echo ""
|
|
echo "This script requires the Sisyphus testing framework. Please "
|
|
echo "cvs check out the Sisyphys framework from mozilla/testing/sisyphus"
|
|
echo "and set the environment variable TEST_DIR to the directory where it"
|
|
@@ -61,78 +61,75 @@ fi
|
|
|
|
source $TEST_DIR/bin/library.sh
|
|
|
|
TEST_JSDIR=`dirname $0`
|
|
|
|
usage()
|
|
{
|
|
cat <<EOF
|
|
-usage: runtests.sh -p products -b branches -T buildtypes -B buildcommands -e extra [-v] \\
|
|
- -S -R -X excludetests -I includetests -c -t
|
|
+usage: runtests.sh -p products -b branches -e extra\\
|
|
+ -T buildtypes -B buildcommands \\
|
|
+ [-v] [-S] [-X excludetests] [-I includetests] [-c] [-t] \\
|
|
+ [-Z n]
|
|
|
|
variable description
|
|
=============== ============================================================
|
|
-p products space separated list of js, firefox
|
|
--b branches space separated list of branches 1.8.0, 1.8.1, 1.9.0
|
|
--T buildtypes space separated list of build types opt debug
|
|
+-b branches space separated list of branches 1.8.0, 1.8.1, 1.9.0, 1.9.1
|
|
-e extra optional. extra qualifier to pick build tree and mozconfig.
|
|
+-T buildtypes space separated list of build types opt debug
|
|
-B buildcommands optional space separated list of build commands
|
|
clean, checkout, build. If not specified, defaults to
|
|
'clean checkout build'.
|
|
If you wish to skip any build steps, simply specify a value
|
|
not containing any of the build commands, e.g. 'none'.
|
|
-v optional. verbose - copies log file output to stdout.
|
|
-S optional. summary - output tailered for use with
|
|
Buildbot|Tinderbox
|
|
--R optional. by default the browser test will start Firefox
|
|
- Spider and execute the tests one after another in the same
|
|
- process. -R will start an new instance of Firefox for each
|
|
- test. This has no effect for shell based tests.
|
|
-X excludetests optional. By default the test will exclude the
|
|
tests listed in spidermonkey-n-\$branch.tests,
|
|
performance-\$branch.tests. excludetests is a list of either
|
|
individual tests, manifest files or sub-directories which
|
|
will override the default exclusion list.
|
|
-I includetests optional. By default the test will include the
|
|
JavaScript tests appropriate for the branch. includetests is a
|
|
list of either individual tests, manifest files or
|
|
sub-directories which will override the default inclusion
|
|
list.
|
|
--Z n optional. Set gczeal to n. Currently, only valid for
|
|
- Gecko 1.9.0 and later.
|
|
-c optional. By default the test will exclude tests
|
|
which crash on this branch, test type, build type and
|
|
operating system. -c will include tests which crash.
|
|
Typically this should only be used in combination with -R.
|
|
This has no effect on shell based tests which execute crash
|
|
tests regardless.
|
|
-t optional. By default the test will exclude tests
|
|
which time out on this branch, test type, build type and
|
|
operating system. -t will include tests which timeout.
|
|
+-Z n optional. Set gczeal to n. Currently, only valid for
|
|
+ debug builds of Gecko 1.8.1.15, 1.9.0 and later.
|
|
|
|
if an argument contains more than one value, it must be quoted.
|
|
EOF
|
|
exit 2
|
|
}
|
|
|
|
verbose=0
|
|
|
|
-while getopts "p:b:T:B:e:X:I:Z:vSRct" optname;
|
|
+while getopts "p:b:T:B:e:X:I:Z:vSct" optname;
|
|
do
|
|
case $optname in
|
|
p) products=$OPTARG;;
|
|
b) branches=$OPTARG;;
|
|
T) buildtypes=$OPTARG;;
|
|
e) extra="$OPTARG"
|
|
extraflag="-e $OPTARG";;
|
|
B) buildcommands=$OPTARG;;
|
|
v) verbose=1
|
|
verboseflag="-v";;
|
|
- R) restart=1;;
|
|
S) summary=1;;
|
|
X) excludetests=$OPTARG;;
|
|
I) includetests=$OPTARG;;
|
|
Z) gczeal="-Z $OPTARG";;
|
|
c) crashes=1;;
|
|
t) timeouts=1;;
|
|
esac
|
|
done
|
|
@@ -175,68 +172,66 @@ testlogfiles="`grep '^log:' $testlogfile
|
|
|
|
fatalerrors=`grep 'FATAL ERROR' $testlogfiles | cat`
|
|
if [[ -n "$fatalerrors" ]]; then
|
|
testlogarray=( $testlogfiles )
|
|
let itestlog=${#testlogarray[*]}-1
|
|
error "`tail -n 20 ${testlogarray[$itestlog]}`" $LINENO
|
|
fi
|
|
|
|
-case "$OSID" in
|
|
- win32)
|
|
- arch=all
|
|
- kernel=all
|
|
- ;;
|
|
- linux)
|
|
- arch="`uname -p`"
|
|
- kernel="`uname -r | sed 's|\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)[-.0-9]*\.\([a-zA-Z0-9]*\)|\1.\2.\3.*\4|'`"
|
|
- ;;
|
|
- mac)
|
|
- arch="`uname -p`"
|
|
- kernel=all
|
|
- ;;
|
|
- *)
|
|
- error "$OSID not supported" $LINENO
|
|
- ;;
|
|
-esac
|
|
-
|
|
for testlogfile in $testlogfiles; do
|
|
|
|
if [[ -n "$DEBUG" ]]; then
|
|
dumpvars testlogfile
|
|
fi
|
|
|
|
case "$testlogfile" in
|
|
*,js,*) testtype=shell;;
|
|
*,firefox,*) testtype=browser;;
|
|
*) error "unknown testtype in logfile $testlogfile" $LINENO;;
|
|
esac
|
|
+
|
|
case "$testlogfile" in
|
|
*,opt,*) buildtype=opt;;
|
|
*,debug,*) buildtype=debug;;
|
|
+ *,nightly,*) buildtype=opt;;
|
|
*) error "unknown buildtype in logfile $testlogfile" $LINENO;;
|
|
esac
|
|
+
|
|
case "$testlogfile" in
|
|
*,1.8.0*) branch=1.8.0;;
|
|
*,1.8.1*) branch=1.8.1;;
|
|
*,1.9.0*) branch=1.9.0;;
|
|
+ *,1.9.1*) branch=1.9.1;;
|
|
*) error "unknown branch in logfile $testlogfile" $LINENO;;
|
|
esac
|
|
outputprefix=$testlogfile
|
|
|
|
if [[ -n "$DEBUG" ]]; then
|
|
- dumpvars branch buildtype testtype OSID testlogfile arch kernel outputprefix
|
|
+ dumpvars branch buildtype testtype OSID testlogfile TEST_PROCESSORTYPE TEST_KERNEL outputprefix
|
|
fi
|
|
|
|
- if ! $TEST_DIR/tests/mozilla.org/js/known-failures.pl -b $branch -T $buildtype -t $testtype -o "$OSID" -z `date +%z` -l $testlogfile -A "$arch" -K "$kernel" -r $TEST_JSDIR/failures.txt -O $outputprefix; then
|
|
+ if ! $TEST_DIR/tests/mozilla.org/js/known-failures.pl \
|
|
+ -b $branch \
|
|
+ -T $buildtype \
|
|
+ -t $testtype \
|
|
+ -o "$OSID" \
|
|
+ -K "$TEST_KERNEL" \
|
|
+ -A "$TEST_PROCESSORTYPE" \
|
|
+ -M "$TEST_MEMORY" \
|
|
+ -S "$TEST_CPUSPEED" \
|
|
+ -z `date +%z` \
|
|
+ -l $testlogfile \
|
|
+ -r $TEST_JSDIR/failures.txt \
|
|
+ -O $outputprefix; then
|
|
error "known-failures.pl" $LINENO
|
|
fi
|
|
|
|
if [[ -n "$summary" ]]; then
|
|
-
|
|
+
|
|
# use let to work around mac problem where numbers were
|
|
# output with leading characters.
|
|
# if let's arg evaluates to 0, let will return 1
|
|
# so we need to test
|
|
|
|
if let npass="`grep TEST_RESULT=PASSED ${outputprefix}-results-all.log | wc -l`"; then true; fi
|
|
if let nfail="`cat ${outputprefix}-results-failures.log | wc -l`"; then true; fi
|
|
if let nfixes="`cat ${outputprefix}-results-possible-fixes.log | wc -l`"; then true; fi
|
|
@@ -247,11 +242,11 @@ for testlogfile in $testlogfiles; do
|
|
cat "${outputprefix}-results-failures.log"
|
|
echo -e "\nPossible Fixes:\n"
|
|
cat "${outputprefix}-results-possible-fixes.log"
|
|
echo -e "\nPossible Regressions:\n"
|
|
cat "${outputprefix}-results-possible-regressions.log"
|
|
echo -e "\nTinderboxPrint:<div title=\"$testlogfile\">\n"
|
|
echo -e "\nTinderboxPrint:js tests<br/>$branch $buildtype $testtype<br/>$npass/$nfail<br/>F:$nfixes R:$nregressions"
|
|
echo -e "\nTinderboxPrint:</div>\n"
|
|
-
|
|
fi
|
|
+
|
|
done
|
|
Index: shell.js
|
|
===================================================================
|
|
RCS file: /cvsroot/mozilla/js/tests/shell.js,v
|
|
retrieving revision 1.6
|
|
diff -p -U 8 -r1.6 shell.js
|
|
--- shell.js 25 Apr 2008 17:52:13 -0000 1.6
|
|
+++ shell.js 25 Jun 2008 17:31:17 -0000
|
|
@@ -155,18 +155,18 @@ function TestCase(n, d, e, a)
|
|
}
|
|
|
|
TestCase.prototype.dump = function () {
|
|
dump('\njstest: ' + this.path + ' ' +
|
|
'bug: ' + this.bugnumber + ' ' +
|
|
'result: ' + (this.passed ? 'PASSED':'FAILED') + ' ' +
|
|
'type: ' + this.type + ' ' +
|
|
'description: ' + toPrinted(this.description) + ' ' +
|
|
- 'expected: ' + toPrinted(this.expect) + ' ' +
|
|
- 'actual: ' + toPrinted(this.actual) + ' ' +
|
|
+// 'expected: ' + toPrinted(this.expect) + ' ' +
|
|
+// 'actual: ' + toPrinted(this.actual) + ' ' +
|
|
'reason: ' + toPrinted(this.reason) + '\n');
|
|
};
|
|
|
|
/*
|
|
* The test driver searches for such a phrase in the test output.
|
|
* If such phrase exists, it will set n as the expected exit code.
|
|
*/
|
|
function expectExitCode(n)
|
|
Index: test-browser.sh
|
|
===================================================================
|
|
RCS file: test-browser.sh
|
|
diff -N test-browser.sh
|
|
--- test-browser.sh 1 May 2008 23:38:30 -0000 1.12
|
|
+++ /dev/null 1 Jan 1970 00:00:00 -0000
|
|
@@ -1,336 +0,0 @@
|
|
-#!/bin/bash -e
|
|
-# -*- Mode: Shell-script; tab-width: 4; indent-tabs-mode: nil; -*-
|
|
-
|
|
-# ***** BEGIN LICENSE BLOCK *****
|
|
-# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
-#
|
|
-# 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/MPL/
|
|
-#
|
|
-# 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 Mozilla JavaScript Testing Utilities
|
|
-#
|
|
-# The Initial Developer of the Original Code is
|
|
-# Mozilla Corporation.
|
|
-# Portions created by the Initial Developer are Copyright (C) 2007
|
|
-# the Initial Developer. All Rights Reserved.
|
|
-#
|
|
-# Contributor(s): Bob Clary <bclary@bclary.com>
|
|
-#
|
|
-# Alternatively, the contents of this file may be used under the terms of
|
|
-# either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
-# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
-# in which case the provisions of the GPL or the LGPL are applicable instead
|
|
-# of those above. If you wish to allow use of your version of this file only
|
|
-# under the terms of either the GPL or the LGPL, and not to allow others to
|
|
-# use your version of this file under the terms of the MPL, indicate your
|
|
-# decision by deleting the provisions above and replace them with the notice
|
|
-# and other provisions required by the GPL or the LGPL. If you do not delete
|
|
-# the provisions above, a recipient may use your version of this file under
|
|
-# the terms of any one of the MPL, the GPL or the LGPL.
|
|
-#
|
|
-# ***** END LICENSE BLOCK *****
|
|
-
|
|
-if [[ -z "$TEST_DIR" ]]; then
|
|
- cat <<EOF
|
|
-`basename $0`: error
|
|
-
|
|
-TEST_DIR, the location of the Sisyphus framework,
|
|
-is required to be set prior to calling this script.
|
|
-EOF
|
|
- exit 2
|
|
-fi
|
|
-
|
|
-if [[ ! -e $TEST_DIR/bin/library.sh ]]; then
|
|
- echo "TEST_DIR=$TEST_DIR"
|
|
- echo ""
|
|
- echo "This script requires the Sisyphus testing framework. Please "
|
|
- echo "cvs check out the Sisyphys framework from mozilla/testing/sisyphus"
|
|
- echo "and set the environment variable TEST_DIR to the directory where it"
|
|
- echo "located."
|
|
- echo ""
|
|
-
|
|
- exit 2
|
|
-fi
|
|
-
|
|
-source $TEST_DIR/bin/library.sh
|
|
-
|
|
-TEST_JSDIR=`dirname $0`
|
|
-
|
|
-TEST_JSEACH_TIMEOUT=${TEST_JSEACH_TIMEOUT:-485}
|
|
-TEST_JSEACH_PAGE_TIMEOUT=${TEST_JSEACH_PAGE_TIMEOUT:-480}
|
|
-TEST_JSALL_TIMEOUT=${TEST_JSALL_TIMEOUT:-21600}
|
|
-TEST_WWW_JS=`echo $TEST_JSDIR|sed "s|$TEST_DIR||"`
|
|
-
|
|
-#
|
|
-# options processing
|
|
-#
|
|
-usage()
|
|
-{
|
|
- cat <<EOF
|
|
-usage: $SCRIPT -p product -b branch -T buildtype -x executablepath -N profilename \\
|
|
- -R -X excludetests -I includetests -c -t -F [-d datafiles]
|
|
-
|
|
-variable description
|
|
-=============== ============================================================
|
|
--p product required. firefox|thunderbird
|
|
--b branch required. 1.8.0|1.8.1|1.9.0
|
|
--T buildtype required. one of opt debug
|
|
--x executablepath required. directory-tree containing executable 'product'
|
|
--N profilename required. profile name
|
|
--R optional. by default the browser test will start Firefox
|
|
- spider and execute the tests one after another in the same
|
|
- process. -R will start an new instance of Firefox for each
|
|
- test.
|
|
--X excludetests optional. By default the test will exclude the
|
|
- tests listed in spidermonkey-n-\$branch.tests,
|
|
- performance-\$branch.tests. excludetests is a list of either
|
|
- individual tests, manifest files or sub-directories which
|
|
- will override the default exclusion list.
|
|
--I includetests optional. By default the test will include the
|
|
- JavaScript tests appropriate for the branch. includetests is a
|
|
- list of either individual tests, manifest files or
|
|
- sub-directories which will override the default inclusion
|
|
- list.
|
|
--Z n Set gczeal to n. Only valid for Gecko 1.9.0 and later.
|
|
--c optional. By default the test will exclude tests
|
|
- which crash on this branch, test type, build type and
|
|
- operating system. -c will include tests which crash.
|
|
- Typically this should only be used in combination with -R.
|
|
- This has no effect on shell based tests which execute crash
|
|
- tests regardless.
|
|
--t optional. By default the test will exclude tests
|
|
- which time out on this branch, test type, build type and
|
|
- operating system. -t will include tests which timeout.
|
|
--F optional. Just generate file lists without running any tests.
|
|
--d datafiles optional. one or more filenames of files containing
|
|
- environment variable definitions to be included.
|
|
-
|
|
- note that the environment variables should have the same
|
|
- names as in the "variable" column.
|
|
-
|
|
-if an argument contains more than one value, it must be quoted.
|
|
-EOF
|
|
- exit 2
|
|
-}
|
|
-
|
|
-while getopts "p:b:T:x:N:d:X:I:Z:RctF" optname
|
|
-do
|
|
- case $optname in
|
|
- p) product=$OPTARG;;
|
|
- b) branch=$OPTARG;;
|
|
- T) buildtype=$OPTARG;;
|
|
- N) profilename=$OPTARG;;
|
|
- x) executablepath=$OPTARG;;
|
|
- R) restart=1;;
|
|
- X) excludetests=$OPTARG;;
|
|
- I) includetests=$OPTARG;;
|
|
- c) crashes=1;;
|
|
- t) timeouts=1;;
|
|
- F) filesonly=1;;
|
|
- Z) gczeal=";gczeal=$OPTARG";;
|
|
- d) datafiles=$OPTARG;;
|
|
- esac
|
|
-done
|
|
-
|
|
-# include environment variables
|
|
-if [[ -n "$datafiles" ]]; then
|
|
- for datafile in $datafiles; do
|
|
- source $datafile
|
|
- done
|
|
-fi
|
|
-
|
|
-dumpvars product branch buildtype profilename executablepath restart excludetests includetests crashes timeouts filesonly gczeal datafiles | sed "s|^|arguments: |"
|
|
-
|
|
-if [[ -z "$product" || -z "$branch" || -z "$executablepath" || -z "$profilename" ]]; then
|
|
- usage
|
|
-fi
|
|
-
|
|
-executable=`get_executable $product $branch $executablepath`
|
|
-
|
|
-pushd $TEST_JSDIR
|
|
-
|
|
-rm -f finished-$branch-browser-$buildtype
|
|
-
|
|
-if ! make failures.txt; then
|
|
- error "during make failures.txt" $LINENO
|
|
-fi
|
|
-
|
|
-includetestsfile="included-$branch-browser-$buildtype.tests"
|
|
-rm -f $includetestsfile
|
|
-touch $includetestsfile
|
|
-
|
|
-if [[ -z "$includetests" ]]; then
|
|
- # by default include tests appropriate for the branch
|
|
- includetests="e4x ecma ecma_2 ecma_3 js1_1 js1_2 js1_3 js1_4 js1_5 js1_6"
|
|
-
|
|
- case "$branch" in
|
|
- 1.8.0)
|
|
- ;;
|
|
- 1.8.1)
|
|
- includetests="$includetests js1_7"
|
|
- ;;
|
|
- 1.9.0)
|
|
- includetests="$includetests js1_7 js1_8"
|
|
- ;;
|
|
- esac
|
|
-fi
|
|
-
|
|
-for i in $includetests; do
|
|
- if [[ -f "$i" ]]; then
|
|
- echo "# including $i" >> $includetestsfile
|
|
- if echo $i | grep -q '\.js$'; then
|
|
- echo $i >> $includetestsfile
|
|
- else
|
|
- cat $i >> $includetestsfile
|
|
- fi
|
|
- elif [[ -d "$i" ]]; then
|
|
- find $i -name '*.js' -print | egrep -v '(shell|browser|template|jsref|userhook.*|\.#.*)\.js' | sed 's/^\.\///' | sort >> $includetestsfile
|
|
- fi
|
|
-done
|
|
-
|
|
-excludetestsfile="excluded-$branch-browser-$buildtype.tests"
|
|
-rm -f $excludetestsfile
|
|
-touch $excludetestsfile
|
|
-
|
|
-if [[ -z "$excludetests" ]]; then
|
|
- excludetests="spidermonkey-n-$branch.tests performance-$branch.tests"
|
|
-fi
|
|
-
|
|
-for e in $excludetests; do
|
|
- if [[ -f "$e" ]]; then
|
|
- echo "# excluding $e" >> $excludetestsfile
|
|
- if echo $e | grep -q '\.js$'; then
|
|
- echo $e >> $excludetestsfile
|
|
- else
|
|
- cat $e >> $excludetestsfile
|
|
- fi
|
|
- elif [[ -d "$e" ]]; then
|
|
- find $e -name '*.js' -print | egrep -v '(shell|browser|template|jsref|userhook.*|\.#.*)\.js' | sed 's/^\.\///' | sort >> $excludetestsfile
|
|
- fi
|
|
-done
|
|
-
|
|
-case "$OSID" in
|
|
- win32)
|
|
- arch='.*'
|
|
- kernel='.*'
|
|
- ;;
|
|
- linux)
|
|
- arch="`uname -p`"
|
|
- kernel="`uname -r | sed 's|\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)[-.0-9]*\.\([a-zA-Z0-9]*\)|\1.\2.\3.*\4|'`"
|
|
- ;;
|
|
- mac)
|
|
- arch="`uname -p`"
|
|
- kernel='[^,]*'
|
|
- ;;
|
|
- *)
|
|
- error "$OSID not supported" $LINENO
|
|
- ;;
|
|
-esac
|
|
-
|
|
-if [[ -z "$timeouts" ]]; then
|
|
- echo "# exclude tests that time out" >> $excludetestsfile
|
|
- egrep "TEST_BRANCH=([^,]*$branch[^,]*|[.][*]), TEST_RESULT=FAILED, TEST_BUILDTYPE=([^,]*$buildtype[^,]*|[.][*]), TEST_TYPE=([^,]*browser[^,]*|[.][*]), TEST_OS=([^,]*$OSID[^,]*|[.][*]), .*, TEST_PROCESSORTYPE=([^,]*$arch[^,]*|[.][*]), TEST_KERNEL=([^,]*$kernel[^,]*|[.][*]), .*, TEST_DESCRIPTION=.*EXIT STATUS: TIMED OUT" \
|
|
- failures.txt | sed 's/TEST_ID=\([^,]*\),.*/\1/' | sort | uniq >> $excludetestsfile
|
|
-fi
|
|
-
|
|
-if [[ -z "$crashes" ]]; then
|
|
- echo "# exclude tests that crash" >> $excludetestsfile
|
|
- pattern="TEST_BRANCH=([^,]*$branch[^,]*|[.][*]), TEST_RESULT=FAILED, TEST_BUILDTYPE=([^,]*$buildtype[^,]*|[.][*]), TEST_TYPE=([^,]*browser[^,]*|[.][*]), TEST_OS=([^,]*$OSID[^,]*|[.][*]), .*, TEST_PROCESSORTYPE=([^,]*$arch[^,]*|[.][*]), TEST_KERNEL=([^,]*$kernel[^,]*|[.][*]), .*, TEST_DESCRIPTION=.*"
|
|
- case "$buildtype" in
|
|
- opt)
|
|
- pattern="${pattern}EXIT STATUS: CRASHED"
|
|
- ;;
|
|
- debug)
|
|
- pattern="${pattern}(EXIT STATUS: CRASHED|Assertion failure:)"
|
|
- ;;
|
|
- esac
|
|
- egrep "$pattern" failures.txt | sed 's/TEST_ID=\([^,]*\),.*/\1/' | sort | uniq >> $excludetestsfile
|
|
-
|
|
-fi
|
|
-
|
|
-urllist="urllist-$branch-browser-$buildtype.tests"
|
|
-urlhtml="urllist-$branch-browser-$buildtype.html"
|
|
-
|
|
-rm -f $urllist $urlhtml
|
|
-
|
|
-cat > $urlhtml <<EOF
|
|
-<html xmlns="http://www.w3.org/1999/xhtml">
|
|
-<head>
|
|
-<title>JavaScript Tests</title>
|
|
-</head>
|
|
-<body>
|
|
-<ul>
|
|
-EOF
|
|
-
|
|
-cat $includetestsfile | while read jsfile
|
|
-do
|
|
- if echo $jsfile | grep -q '^#'; then
|
|
- continue
|
|
- fi
|
|
-
|
|
- if ! grep -q $jsfile $excludetestsfile; then
|
|
-
|
|
- result=`echo $jsfile | sed 's/.*js\([0-9]\)_\([0-9]\).*/\1.\2/'`
|
|
-
|
|
- case $result in
|
|
- 1.5) version=";version=1.5";;
|
|
- 1.6) version=";version=1.6";;
|
|
- 1.7) version=";version=1.7";;
|
|
- 1.8) version=";version=1.8";;
|
|
- 1.9) version=";version=1.9";;
|
|
- 2.0) version=";version=2.0";;
|
|
- *) version="";;
|
|
- esac
|
|
-
|
|
- echo "http://$TEST_HTTP/$TEST_WWW_JS/js-test-driver-standards.html?test=$jsfile;language=type;text/javascript$version$gczeal" >> $urllist
|
|
- echo "<li><a href='http://$TEST_HTTP/$TEST_WWW_JS/js-test-driver-standards.html?test=$jsfile;language=type;text/javascript$version$gczeal'>$jsfile</a></li>" >> $urlhtml
|
|
- fi
|
|
-done
|
|
-
|
|
-cat >> $urlhtml <<EOF
|
|
-</ul>
|
|
-</body>
|
|
-</html>
|
|
-EOF
|
|
-
|
|
-chmod a+r $urlhtml
|
|
-
|
|
-cat $includetestsfile | sed 's|^|include: |'
|
|
-cat $excludetestsfile | sed 's|^|exclude: |'
|
|
-
|
|
-if [[ -z "$filesonly" ]]; then
|
|
- if [[ "$restart" == "1" ]]; then
|
|
- cat "$urllist" | while read url;
|
|
- do
|
|
- edit-talkback.sh -p "$product" -b "$branch" -x "$executablepath" -i "$url"
|
|
- if time timed_run.py $TEST_JSEACH_TIMEOUT "$url" \
|
|
- "$executable" -P "$profilename" \
|
|
- -spider -start -quit \
|
|
- -uri "$url" \
|
|
- -depth 0 -timeout "$TEST_JSEACH_PAGE_TIMEOUT" \
|
|
- -hook "http://$TEST_HTTP/$TEST_WWW_JS/userhookeach.js"; then
|
|
- true;
|
|
- fi
|
|
-
|
|
- done
|
|
- else
|
|
- edit-talkback.sh -p "$product" -b "$branch" -x "$executablepath" -i "http://$TEST_HTTP/$TEST_WWW_JS/$urlhtml"
|
|
- if ! time timed_run.py $TEST_JSALL_TIMEOUT "http://$TEST_HTTP/$TEST_WWW_JS/$urlhtml" \
|
|
- "$executable" -P "$profilename" \
|
|
- -spider -start -quit \
|
|
- -uri "http://$TEST_HTTP/$TEST_WWW_JS/$urlhtml" \
|
|
- -depth 1 -timeout "$TEST_JSEACH_PAGE_TIMEOUT" \
|
|
- -hook "http://$TEST_HTTP/$TEST_WWW_JS/userhookeach.js"; then
|
|
- error "timed_run.py ended abnormally: $?" $LINENO
|
|
- fi
|
|
- fi
|
|
-fi
|
|
-
|
|
-popd
|
|
Index: test-shell.sh
|
|
===================================================================
|
|
RCS file: test-shell.sh
|
|
diff -N test-shell.sh
|
|
--- test-shell.sh 1 May 2008 23:38:30 -0000 1.11
|
|
+++ /dev/null 1 Jan 1970 00:00:00 -0000
|
|
@@ -1,261 +0,0 @@
|
|
-#!/bin/bash -e
|
|
-# -*- Mode: Shell-script; tab-width: 4; indent-tabs-mode: nil; -*-
|
|
-
|
|
-# ***** BEGIN LICENSE BLOCK *****
|
|
-# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
-#
|
|
-# 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/MPL/
|
|
-#
|
|
-# 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 Mozilla JavaScript Testing Utilities
|
|
-#
|
|
-# The Initial Developer of the Original Code is
|
|
-# Mozilla Corporation.
|
|
-# Portions created by the Initial Developer are Copyright (C) 2007
|
|
-# the Initial Developer. All Rights Reserved.
|
|
-#
|
|
-# Contributor(s): Bob Clary <bclary@bclary.com>
|
|
-#
|
|
-# Alternatively, the contents of this file may be used under the terms of
|
|
-# either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
-# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
-# in which case the provisions of the GPL or the LGPL are applicable instead
|
|
-# of those above. If you wish to allow use of your version of this file only
|
|
-# under the terms of either the GPL or the LGPL, and not to allow others to
|
|
-# use your version of this file under the terms of the MPL, indicate your
|
|
-# decision by deleting the provisions above and replace them with the notice
|
|
-# and other provisions required by the GPL or the LGPL. If you do not delete
|
|
-# the provisions above, a recipient may use your version of this file under
|
|
-# the terms of any one of the MPL, the GPL or the LGPL.
|
|
-#
|
|
-# ***** END LICENSE BLOCK *****
|
|
-
|
|
-if [[ -z "$TEST_DIR" ]]; then
|
|
- cat <<EOF
|
|
-`basename $0`: error
|
|
-
|
|
-TEST_DIR, the location of the Sisyphus framework,
|
|
-is required to be set prior to calling this script.
|
|
-EOF
|
|
- exit 2
|
|
-fi
|
|
-
|
|
-if [[ ! -e $TEST_DIR/bin/library.sh ]]; then
|
|
- echo "TEST_DIR=$TEST_DIR"
|
|
- echo ""
|
|
- echo "This script requires the Sisyphus testing framework. Please "
|
|
- echo "cvs check out the Sisyphys framework from mozilla/testing/sisyphus"
|
|
- echo "and set the environment variable TEST_DIR to the directory where it"
|
|
- echo "located."
|
|
- echo ""
|
|
-
|
|
- exit 2
|
|
-fi
|
|
-
|
|
-source $TEST_DIR/bin/library.sh
|
|
-
|
|
-TEST_JSDIR=`dirname $0`
|
|
-TEST_JSSHELL_TIMEOUT=${TEST_JSSHELL_TIMEOUT:-480}
|
|
-
|
|
-#
|
|
-# options processing
|
|
-#
|
|
-usage()
|
|
-{
|
|
- cat <<EOF
|
|
-usage: $SCRIPT -b branch -s sourcepath -T buildtype [-d datafiles]
|
|
-
|
|
-variable description
|
|
-=============== ===========================================================
|
|
--p product required. js
|
|
--b branch required. 1.8.0|1.8.1|1.9.0
|
|
--s sourcepath required. path to js shell source directory mozilla/js/src
|
|
--T buildtype required. one of opt debug
|
|
--X excludetests optional. By default the test will exclude the
|
|
- tests listed in spidermonkey-n-\$branch.tests,
|
|
- performance-\$branch.tests. excludetests is a list of either
|
|
- individual tests, manifest files or sub-directories which
|
|
- will override the default exclusion list.
|
|
--I includetests optional. By default the test will include the
|
|
- JavaScript tests appropriate for the branch. includetests is a
|
|
- list of either individual tests, manifest files or
|
|
- sub-directories which will override the default inclusion
|
|
- list.
|
|
--Z n optional. Set gczeal to n. Currently, only valid for
|
|
- Gecko 1.9.0 and later.
|
|
--c optional. By default the test will exclude tests
|
|
- which crash on this branch, test type, build type and
|
|
- operating system. -c will include tests which crash.
|
|
- Typically this should only be used in combination with -R.
|
|
- This has no effect on shell based tests which execute crash
|
|
- tests regardless.
|
|
--t optional. By default the test will exclude tests
|
|
- which time out on this branch, test type, build type and
|
|
- operating system. -t will include tests which timeout.
|
|
--d datafiles optional. one or more filenames of files containing
|
|
- environment variable definitions to be included.
|
|
-
|
|
-EOF
|
|
- exit 2
|
|
-}
|
|
-
|
|
-while getopts "b:s:T:d:X:I:Z:ct" optname
|
|
-do
|
|
- case $optname in
|
|
- b) branch=$OPTARG;;
|
|
- s) sourcepath=$OPTARG;;
|
|
- T) buildtype=$OPTARG;;
|
|
- X) excludetests=$OPTARG;;
|
|
- I) includetests=$OPTARG;;
|
|
- C) crashes=1;;
|
|
- T) timeouts=1;;
|
|
- Z) gczeal="-Z $OPTARG";;
|
|
- d) datafiles=$OPTARG;;
|
|
- esac
|
|
-done
|
|
-
|
|
-# include environment variables
|
|
-if [[ -n "$datafiles" ]]; then
|
|
- for datafile in $datafiles; do
|
|
- source $datafile
|
|
- done
|
|
-fi
|
|
-
|
|
-dumpvars branch sourcepath buildtype excludetests includetests crashes timeouts gczeal datafiles | sed "s|^|arguments: |"
|
|
-
|
|
-if [[ -z "$branch" || -z "$sourcepath" || -z "$buildtype" ]]; then
|
|
- usage
|
|
-fi
|
|
-
|
|
-pushd $TEST_JSDIR
|
|
-
|
|
-rm -f finished-$branch-shell-$buildtype
|
|
-
|
|
-. config.sh
|
|
-
|
|
-executable="$sourcepath/$JS_OBJDIR/js$EXE_EXT"
|
|
-
|
|
-if ! make failures.txt; then
|
|
- error "during make failures.txt" $LINENO
|
|
-fi
|
|
-
|
|
-#includetestsfile=`mktemp includetestsfile.XXXXX`
|
|
-includetestsfile="included-$branch-shell-$buildtype.tests"
|
|
-rm -f $includetestsfile
|
|
-touch $includetestsfile
|
|
-
|
|
-if [[ -z "$includetests" ]]; then
|
|
-
|
|
- # by default include tests appropriate for the branch
|
|
- includetests="e4x ecma ecma_2 ecma_3 js1_1 js1_2 js1_3 js1_4 js1_5 js1_6"
|
|
-
|
|
- case "$branch" in
|
|
- 1.8.0)
|
|
- ;;
|
|
- 1.8.1)
|
|
- includetests="$includetests js1_7"
|
|
- ;;
|
|
- 1.9.0)
|
|
- includetests="$includetests js1_7 js1_8"
|
|
- ;;
|
|
- esac
|
|
-fi
|
|
-
|
|
-for i in $includetests; do
|
|
- if [[ -f "$i" ]]; then
|
|
- echo "# including $i" >> $includetestsfile
|
|
- if echo $i | grep -q '\.js$'; then
|
|
- echo $i >> $includetestsfile
|
|
- else
|
|
- cat $i >> $includetestsfile
|
|
- fi
|
|
- elif [[ -d "$i" ]]; then
|
|
- find $i -name '*.js' -print | egrep -v '(shell|browser|template|jsref|userhook.*|\.#.*)\.js' | sed 's/^\.\///' | sort >> $includetestsfile
|
|
- fi
|
|
-done
|
|
-
|
|
-#excludetestsfile=`mktemp excludetestsfile.XXXXX`
|
|
-excludetestsfile="excluded-$branch-shell-$buildtype.tests"
|
|
-rm -f $excludetestsfile
|
|
-touch $excludetestsfile
|
|
-
|
|
-if [[ -z "$excludetests" ]]; then
|
|
- excludetests="spidermonkey-n-$branch.tests performance-$branch.tests"
|
|
-fi
|
|
-
|
|
-for e in $excludetests; do
|
|
- if [[ -f "$e" ]]; then
|
|
- echo "# excluding $e" >> $excludetestsfile
|
|
- if echo $e | grep -q '\.js$'; then
|
|
- echo $e >> $excludetestsfile
|
|
- else
|
|
- cat $e >> $excludetestsfile
|
|
- fi
|
|
- elif [[ -d "$e" ]]; then
|
|
- find $e -name '*.js' -print | egrep -v '(shell|browser|template|userhook.*|\.#.*).js' | sed 's/^\.\///' | sort >> $excludetestsfile
|
|
- fi
|
|
-done
|
|
-
|
|
-case "$OSID" in
|
|
- win32)
|
|
- arch='.*'
|
|
- kernel='.*'
|
|
- ;;
|
|
- linux)
|
|
- arch="`uname -p`"
|
|
- kernel="`uname -r | sed 's|\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)[-.0-9]*\.\([a-zA-Z0-9]*\)|\1.\2.\3.*\4|'`"
|
|
- ;;
|
|
- mac)
|
|
- arch="`uname -p`"
|
|
- kernel='[^,]*'
|
|
- ;;
|
|
- *)
|
|
- error "$product-$branch-$buildtype: $OSID not supported" $LINENO
|
|
- ;;
|
|
-esac
|
|
-
|
|
-if [[ -z "$timeouts" ]]; then
|
|
- echo "# exclude tests that time out" >> $excludetestsfile
|
|
- egrep "TEST_BRANCH=([^,]*$branch[^,]*|[.][*]), TEST_RESULT=FAILED, TEST_BUILDTYPE=([^,]*$buildtype[^,]*|[.][*]), TEST_TYPE=([^,]*shell[^,]*|[.][*]), TEST_OS=([^,]*$OSID[^,]*|[.][*]), .*, TEST_PROCESSORTYPE=([^,]*$arch[^,]*|[.][*]), TEST_KERNEL=([^,]*$kernel[^,]*|[.][*]), .*, TEST_DESCRIPTION=.*EXIT STATUS: TIMED OUT" \
|
|
- failures.txt | sed 's/TEST_ID=\([^,]*\),.*/\1/' | sort | uniq >> $excludetestsfile
|
|
-fi
|
|
-
|
|
-if [[ -z "$crashes" ]]; then
|
|
- echo "# exclude tests that crash" >> $excludetestsfile
|
|
- pattern="TEST_BRANCH=([^,]*$branch[^,]*|[.][*]), TEST_RESULT=FAILED, TEST_BUILDTYPE=([^,]*$buildtype[^,]*|[.][*]), TEST_TYPE=([^,]*shell[^,]*|[.][*]), TEST_OS=([^,]*$OSID[^,]*|[.][*]), .*, TEST_PROCESSORTYPE=([^,]*$arch[^,]*|[.][*]), TEST_KERNEL=([^,]*$kernel[^,]*|[.][*]), .*, TEST_DESCRIPTION=.*"
|
|
- case "$buildtype" in
|
|
- opt)
|
|
- pattern="${pattern}EXIT STATUS: CRASHED"
|
|
- ;;
|
|
- debug)
|
|
- pattern="${pattern}(EXIT STATUS: CRASHED|Assertion failure:)"
|
|
- ;;
|
|
- esac
|
|
- egrep "$pattern" failures.txt | sed 's/TEST_ID=\([^,]*\),.*/\1/' | sort | uniq >> $excludetestsfile
|
|
-
|
|
-fi
|
|
-
|
|
-cat $includetestsfile | sed 's|^|include: |'
|
|
-cat $excludetestsfile | sed 's|^|exclude: |'
|
|
-
|
|
-if ! time perl jsDriver.pl \
|
|
- -l $includetestsfile \
|
|
- -L $excludetestsfile \
|
|
- -s $executable \
|
|
- -e sm$buildtype \
|
|
- -o "-S 524288 $gczeal" \
|
|
- -R \
|
|
- -T $TEST_JSSHELL_TIMEOUT \
|
|
- -f /dev/null \
|
|
- -Q; then
|
|
- error "$product-$branch-$buildtype-$OSID: jsDriver.pl" $LINENO
|
|
-fi
|
|
-
|
|
-popd
|
|
Index: test.sh
|
|
===================================================================
|
|
RCS file: /cvsroot/mozilla/js/tests/test.sh,v
|
|
retrieving revision 1.8
|
|
diff -p -U 8 -r1.8 test.sh
|
|
--- test.sh 10 Apr 2008 20:35:58 -0000 1.8
|
|
+++ test.sh 25 Jun 2008 17:31:17 -0000
|
|
@@ -33,23 +33,23 @@
|
|
# decision by deleting the provisions above and replace them with the notice
|
|
# and other provisions required by the GPL or the LGPL. If you do not delete
|
|
# the provisions above, a recipient may use your version of this file under
|
|
# the terms of any one of the MPL, the GPL or the LGPL.
|
|
#
|
|
# ***** END LICENSE BLOCK *****
|
|
|
|
if [[ -z "$TEST_DIR" ]]; then
|
|
- cat <<EOF
|
|
+ cat <<EOF
|
|
`basename $0`: error
|
|
|
|
TEST_DIR, the location of the Sisyphus framework,
|
|
is required to be set prior to calling this script.
|
|
EOF
|
|
- exit 2
|
|
+ exit 2
|
|
fi
|
|
|
|
if [[ ! -e $TEST_DIR/bin/library.sh ]]; then
|
|
echo "TEST_DIR=$TEST_DIR"
|
|
echo ""
|
|
echo "This script requires the Sisyphus testing framework. Please "
|
|
echo "cvs check out the Sisyphys framework from mozilla/testing/sisyphus"
|
|
echo "and set the environment variable TEST_DIR to the directory where it"
|
|
@@ -58,60 +58,356 @@ if [[ ! -e $TEST_DIR/bin/library.sh ]];
|
|
|
|
exit 2
|
|
fi
|
|
|
|
source $TEST_DIR/bin/library.sh
|
|
|
|
TEST_JSDIR=`dirname $0`
|
|
|
|
+TEST_JSSHELL_TIMEOUT=${TEST_JSSHELL_TIMEOUT:-480}
|
|
+TEST_JSEACH_TIMEOUT=${TEST_JSEACH_TIMEOUT:-485}
|
|
+TEST_JSEACH_PAGE_TIMEOUT=${TEST_JSEACH_PAGE_TIMEOUT:-480}
|
|
+TEST_JSALL_TIMEOUT=${TEST_JSALL_TIMEOUT:-21600}
|
|
+TEST_WWW_JS=`echo $TEST_JSDIR|sed "s|$TEST_DIR||"`
|
|
+
|
|
#
|
|
# options processing
|
|
#
|
|
usage()
|
|
{
|
|
cat <<EOF
|
|
-usage: $SCRIPT -d datafiles
|
|
-
|
|
-This script is used to dispatch to either test-browser.sh
|
|
-for browser based JavaScript tests or test-shell.js for
|
|
-shell based JavaScript tests. It ignores all input arguments
|
|
-except -d datafiles which it uses to pass data to the
|
|
-appropriate script.
|
|
+usage: test.sh -p product -b branch -T buildtype -x executablepath -N profilename \\
|
|
+ [-X excludetests] [-I includetests] [-c] [-t] [-F] [-d datafiles]
|
|
|
|
variable description
|
|
=============== ============================================================
|
|
+-p product required. firefox|thunderbird|js
|
|
+-b branch required. 1.8.0|1.8.1|1.9.0|1.9.1
|
|
+-s sourcepath required for shell. path to js shell source directory mozilla/js/src
|
|
+-T buildtype required. one of opt debug
|
|
+-x executablepath required for browser. directory-tree containing executable 'product'
|
|
+-N profilename required for browser. profile name
|
|
+-X excludetests optional. By default the test will exclude the
|
|
+ tests listed in spidermonkey-n-\$branch.tests,
|
|
+ performance-\$branch.tests. excludetests is a list of either
|
|
+ individual tests, manifest files or sub-directories which
|
|
+ will override the default exclusion list.
|
|
+-I includetests optional. By default the test will include the
|
|
+ JavaScript tests appropriate for the branch. includetests is a
|
|
+ list of either individual tests, manifest files or
|
|
+ sub-directories which will override the default inclusion
|
|
+ list.
|
|
+-c optional. By default the test will exclude tests
|
|
+ which crash on this branch, test type, build type and
|
|
+ operating system. -c will include tests which crash.
|
|
+ Typically this should only be used in combination with -R.
|
|
+ This has no effect on shell based tests which execute crash
|
|
+ tests regardless.
|
|
+-t optional. By default the test will exclude tests
|
|
+ which time out on this branch, test type, build type and
|
|
+ operating system. -t will include tests which timeout.
|
|
+-Z n optional. Set gczeal to n. Currently, only valid for
|
|
+ debug builds of Gecko 1.8.1.15, 1.9.0 and later.
|
|
+-F optional. Just generate file lists without running any tests.
|
|
-d datafiles optional. one or more filenames of files containing
|
|
environment variable definitions to be included.
|
|
--Z n optional. Set gczeal to n. Currently, only valid for
|
|
- Gecko 1.9.0 and later.
|
|
+
|
|
+ note that the environment variables should have the same
|
|
+ names as in the "variable" column.
|
|
+
|
|
if an argument contains more than one value, it must be quoted.
|
|
EOF
|
|
exit 2
|
|
}
|
|
|
|
-unset datafiles
|
|
-
|
|
-while getopts "d:Z:" optname ;
|
|
+while getopts "p:b:s:T:x:N:d:X:I:Z:RctF" optname
|
|
do
|
|
case $optname in
|
|
+ p)
|
|
+ product=$OPTARG;;
|
|
+ b)
|
|
+ branch=$OPTARG;;
|
|
+ T)
|
|
+ buildtype=$OPTARG;;
|
|
+ s)
|
|
+ sourcepath=$OPTARG;;
|
|
+ N)
|
|
+ profilename=$OPTARG;;
|
|
+ x)
|
|
+ executablepath=$OPTARG;;
|
|
+ X)
|
|
+ excludetests=$OPTARG;;
|
|
+ I)
|
|
+ includetests=$OPTARG;;
|
|
+ c)
|
|
+ crashes=1;;
|
|
+ t)
|
|
+ timeouts=1;;
|
|
+ F)
|
|
+ filesonly=1;;
|
|
+ Z)
|
|
+ gczealshell="-Z $OPTARG"
|
|
+ gczealbrowser=";gczeal=$OPTARG"
|
|
+ ;;
|
|
d) datafiles=$OPTARG;;
|
|
- Z) gczeal="-Z $OPTARG";;
|
|
esac
|
|
done
|
|
|
|
-if [[ -z "$datafiles" ]]; then
|
|
- usage
|
|
+# include environment variables
|
|
+if [[ -n "$datafiles" ]]; then
|
|
+ for datafile in $datafiles; do
|
|
+ source $datafile
|
|
+ done
|
|
+fi
|
|
+
|
|
+if [[ -n "$gczeal" && "$buildtype" != "debug" ]]; then
|
|
+ error "gczeal is supported for buildtype debug and not $buildtype"
|
|
+fi
|
|
+
|
|
+dumpvars product branch buildtype sourcepath profilename executablepath excludetests includetests crashes timeouts filesonly gczeal datafiles | sed "s|^|arguments: |"
|
|
+
|
|
+pushd $TEST_JSDIR
|
|
+
|
|
+case $product in
|
|
+ js)
|
|
+ if [[ -z "$branch" || -z "$buildtype" || -z "$sourcepath" ]]; then
|
|
+ usage
|
|
+ fi
|
|
+ source config.sh
|
|
+ testtype=shell
|
|
+ executable="$sourcepath/$JS_OBJDIR/js$EXE_EXT"
|
|
+ ;;
|
|
+
|
|
+ firefox|thunderbird)
|
|
+ if [[ -z "$branch" || -z "$buildtype" || -z "$executablepath" || -z "$profilename" ]]; then
|
|
+ usage
|
|
+ fi
|
|
+ testtype=browser
|
|
+ executable=`get_executable $product $branch $executablepath`
|
|
+
|
|
+ ;;
|
|
+ *)
|
|
+ echo "Unknown product: $product"
|
|
+ usage
|
|
+ ;;
|
|
+esac
|
|
+
|
|
+rm -f finished-$branch-$testtype-$buildtype
|
|
+
|
|
+if ! make failures.txt; then
|
|
+ error "during make failures.txt" $LINENO
|
|
+fi
|
|
+
|
|
+includetestsfile="included-$branch-$testtype-$buildtype.tests"
|
|
+rm -f $includetestsfile
|
|
+touch $includetestsfile
|
|
+
|
|
+if [[ -z "$includetests" ]]; then
|
|
+ # by default include tests appropriate for the branch
|
|
+ includetests="e4x ecma ecma_2 ecma_3 js1_1 js1_2 js1_3 js1_4 js1_5 js1_6"
|
|
+
|
|
+ case "$branch" in
|
|
+ 1.8.0)
|
|
+ ;;
|
|
+ 1.8.1)
|
|
+ includetests="$includetests js1_7"
|
|
+ ;;
|
|
+ 1.9.0)
|
|
+ includetests="$includetests js1_7 js1_8"
|
|
+ ;;
|
|
+ 1.9.1)
|
|
+ includetests="$includetests js1_7 js1_8"
|
|
+ ;;
|
|
+ esac
|
|
+fi
|
|
+
|
|
+for i in $includetests; do
|
|
+ if [[ -f "$i" ]]; then
|
|
+ echo "# including $i" >> $includetestsfile
|
|
+ if echo $i | grep -q '\.js$'; then
|
|
+ echo $i >> $includetestsfile
|
|
+ else
|
|
+ cat $i >> $includetestsfile
|
|
+ fi
|
|
+ elif [[ -d "$i" ]]; then
|
|
+ find $i -name '*.js' -print | egrep -v '(shell|browser|template|jsref|userhook.*|\.#.*)\.js' | sed 's/^\.\///' | sort >> $includetestsfile
|
|
+ fi
|
|
+done
|
|
+
|
|
+excludetestsfile="excluded-$branch-$testtype-$buildtype.tests"
|
|
+rm -f $excludetestsfile
|
|
+touch $excludetestsfile
|
|
+
|
|
+if [[ -z "$excludetests" ]]; then
|
|
+ excludetests="spidermonkey-n-$branch.tests performance-$branch.tests"
|
|
fi
|
|
|
|
-for data in $datafiles; do
|
|
- source $data
|
|
+for e in $excludetests; do
|
|
+ if [[ -f "$e" ]]; then
|
|
+ echo "# excluding $e" >> $excludetestsfile
|
|
+ if echo $e | grep -q '\.js$'; then
|
|
+ echo $e >> $excludetestsfile
|
|
+ else
|
|
+ cat $e >> $excludetestsfile
|
|
+ fi
|
|
+ elif [[ -d "$e" ]]; then
|
|
+ find $e -name '*.js' -print | egrep -v '(shell|browser|template|jsref|userhook.*|\.#.*)\.js' | sed 's/^\.\///' | sort >> $excludetestsfile
|
|
+ fi
|
|
done
|
|
|
|
-case "$product" in
|
|
- firefox) testscript=$TEST_JSDIR/test-browser.sh;;
|
|
- js) testscript=$TEST_JSDIR/test-shell.sh;;
|
|
- *) echo "unknown product [$product]"
|
|
- exit 2
|
|
+# convert the numeric speed rating to a prose value
|
|
+if [[ $TEST_CPUSPEED -lt 4 ]]; then
|
|
+ TEST_CPUSPEED=slow
|
|
+elif [[ $TEST_CPUSPEED -lt 9 ]]; then
|
|
+ TEST_CPUSPEED=medium
|
|
+else
|
|
+ TEST_CPUSPEED=fast
|
|
+fi
|
|
+
|
|
+pattern="TEST_BRANCH=($branch|[.][*]), TEST_BUILDTYPE=($buildtype|[.][*]), TEST_TYPE=($testtype|[.][*]), TEST_OS=($OSID|[.][*]), TEST_KERNEL=($TEST_KERNEL|[.][*]), TEST_PROCESSORTYPE=($TEST_PROCESSORTYPE|[.][*]), TEST_MEMORY=($TEST_MEMORY|[.][*]), TEST_CPUSPEED=($TEST_CPUSPEED|[.][*]),"
|
|
+
|
|
+if [[ -z "$timeouts" ]]; then
|
|
+ echo "# exclude tests that time out" >> $excludetestsfile
|
|
+ echo "$pattern .*TEST_EXITSTATUS=TIMED OUT," >> $excludetestsfile
|
|
+ egrep "$pattern .*TEST_EXITSTATUS=TIMED OUT," failures.txt | \
|
|
+ sed 's/.*TEST_ID=\([^,]*\),.*/\1/' | sort -u >> $excludetestsfile
|
|
+fi
|
|
+
|
|
+if [[ -z "$crashes" ]]; then
|
|
+ echo "# exclude tests that crash" >> $excludetestsfile
|
|
+ echo "$pattern .*TEST_EXITSTATUS=(CRASHED|ABNORMAL)" >> $excludetestsfile
|
|
+ egrep "$pattern .*TEST_EXITSTATUS=(CRASHED|ABNORMAL)" failures.txt | \
|
|
+ sed 's/.*TEST_ID=\([^,]*\),.*/\1/' | sort -u >> $excludetestsfile
|
|
+
|
|
+fi
|
|
+
|
|
+cat $includetestsfile | sed 's|^|include: |'
|
|
+cat $excludetestsfile | sed 's|^|exclude: |'
|
|
+
|
|
+case $testtype in
|
|
+ shell)
|
|
+ echo "JavaScriptTest: Begin Run"
|
|
+ cat $includetestsfile | while read jsfile
|
|
+ do
|
|
+ if echo $jsfile | grep -q '^#'; then
|
|
+ continue
|
|
+ fi
|
|
+
|
|
+ if ! grep -q $jsfile $excludetestsfile; then
|
|
+
|
|
+ result=`echo $jsfile | sed 's/.*js\([0-9]\)_\([0-9]\).*/\1.\2/'`
|
|
+
|
|
+ case $result in
|
|
+ 1.5) version="150";;
|
|
+ 1.6) version="160";;
|
|
+ 1.7) version="170";;
|
|
+ 1.8) version="180";;
|
|
+ 1.9) version="190";;
|
|
+ 2.0) version="200";;
|
|
+ *) version="150";;
|
|
+ esac
|
|
+
|
|
+ subsuitetestdir=`dirname $jsfile`
|
|
+ suitetestdir=`dirname $subsuitetestdir`
|
|
+ echo "JavaScriptTest: Begin Test $jsfile"
|
|
+ if eval $TIMECOMMAND timed_run.py $TEST_JSEACH_TIMEOUT \"$jsfile\" \
|
|
+ $EXECUTABLE_DRIVER \
|
|
+ $executable -v $version \
|
|
+ -S 524288 \
|
|
+ $gczealshell \
|
|
+ -f ./shell.js \
|
|
+ -f $suitetestdir/shell.js \
|
|
+ -f $subsuitetestdir/shell.js \
|
|
+ -f ./$jsfile \
|
|
+ -f ./js-test-driver-end.js; then
|
|
+ true
|
|
+ else
|
|
+ rc=$?
|
|
+ fi
|
|
+ if [[ $rc == 99 ]]; then
|
|
+ error "User Interrupt"
|
|
+ fi
|
|
+ echo "JavaScriptTest: End Test $jsfile"
|
|
+ fi
|
|
+ done
|
|
+ echo "JavaScriptTest: End Run"
|
|
+ ;;
|
|
+
|
|
+ browser)
|
|
+ urllist="urllist-$branch-$testtype-$buildtype.tests"
|
|
+ urlhtml="urllist-$branch-$testtype-$buildtype.html"
|
|
+
|
|
+ rm -f $urllist $urlhtml
|
|
+
|
|
+ cat > $urlhtml <<EOF
|
|
+<html xmlns="http://www.w3.org/1999/xhtml">
|
|
+<head>
|
|
+<title>JavaScript Tests</title>
|
|
+</head>
|
|
+<body>
|
|
+<ul>
|
|
+EOF
|
|
+
|
|
+ cat $includetestsfile | while read jsfile
|
|
+ do
|
|
+ if echo $jsfile | grep -q '^#'; then
|
|
+ continue
|
|
+ fi
|
|
+
|
|
+ if ! grep -q $jsfile $excludetestsfile; then
|
|
+
|
|
+ result=`echo $jsfile | sed 's/.*js\([0-9]\)_\([0-9]\).*/\1.\2/'`
|
|
+
|
|
+ case $result in
|
|
+ 1.5) version=";version=1.5";;
|
|
+ 1.6) version=";version=1.6";;
|
|
+ 1.7) version=";version=1.7";;
|
|
+ 1.8) version=";version=1.8";;
|
|
+ 1.9) version=";version=1.9";;
|
|
+ 2.0) version=";version=2.0";;
|
|
+ *) version="";;
|
|
+ esac
|
|
+
|
|
+ echo "http://$TEST_HTTP/$TEST_WWW_JS/js-test-driver-standards.html?test=$jsfile;language=type;text/javascript$version$gczealbrowser" >> $urllist
|
|
+ echo "<li><a href='http://$TEST_HTTP/$TEST_WWW_JS/js-test-driver-standards.html?test=$jsfile;language=type;text/javascript$version$gczealbrowser'>$jsfile</a></li>" >> $urlhtml
|
|
+ fi
|
|
+ done
|
|
+
|
|
+ cat >> $urlhtml <<EOF
|
|
+</ul>
|
|
+</body>
|
|
+</html>
|
|
+EOF
|
|
+
|
|
+ chmod a+r $urlhtml
|
|
+
|
|
+ if [[ -z "$filesonly" ]]; then
|
|
+ echo "JavaScriptTest: Begin Run"
|
|
+ cat "$urllist" | while read url;
|
|
+ do
|
|
+ edit-talkback.sh -p "$product" -b "$branch" -x "$executablepath" -i "$url"
|
|
+ jsfile=`echo $url | sed "s|http://$TEST_HTTP/$TEST_WWW_JS/js-test-driver-standards.html?test=\([^;]*\);.*|\1|"`
|
|
+ echo "JavaScriptTest: Begin Test $jsfile"
|
|
+ if eval $TIMECOMMAND timed_run.py $TEST_JSEACH_TIMEOUT \"$jsfile\" \
|
|
+ $EXECUTABLE_DRIVER \
|
|
+ \"$executable\" -P \"$profilename\" \
|
|
+ -spider -start -quit \
|
|
+ -uri \"$url\" \
|
|
+ -depth 0 -timeout \"$TEST_JSEACH_PAGE_TIMEOUT\" \
|
|
+ -hook \"http://$TEST_HTTP/$TEST_WWW_JS/userhookeach.js\"; then
|
|
+ true
|
|
+ else
|
|
+ rc=$?
|
|
+ fi
|
|
+ if [[ $rc == 99 ]]; then
|
|
+ error "User Interrupt"
|
|
+ fi
|
|
+ echo "JavaScriptTest: End Test $jsfile"
|
|
+ done
|
|
+ echo "JavaScriptTest: End Run"
|
|
+ fi
|
|
+ ;;
|
|
+ *)
|
|
;;
|
|
esac
|
|
|
|
-$testscript -d "$datafiles" $gczeal
|
|
+popd
|
|
Index: universe.data
|
|
===================================================================
|
|
RCS file: universe.data
|
|
diff -N universe.data
|
|
--- /dev/null 1 Jan 1970 00:00:00 -0000
|
|
+++ universe.data 25 Jun 2008 17:31:17 -0000
|
|
@@ -0,0 +1,100 @@
|
|
+TEST_OS=darwin, TEST_KERNEL=8.11.0, TEST_PROCESSORTYPE=powerpc32, TEST_MEMORY=1, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=debug, TEST_TYPE=browser
|
|
+TEST_OS=darwin, TEST_KERNEL=8.11.0, TEST_PROCESSORTYPE=powerpc32, TEST_MEMORY=1, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=debug, TEST_TYPE=shell
|
|
+TEST_OS=darwin, TEST_KERNEL=8.11.0, TEST_PROCESSORTYPE=powerpc32, TEST_MEMORY=1, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=opt, TEST_TYPE=browser
|
|
+TEST_OS=darwin, TEST_KERNEL=8.11.0, TEST_PROCESSORTYPE=powerpc32, TEST_MEMORY=1, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=opt, TEST_TYPE=shell
|
|
+TEST_OS=darwin, TEST_KERNEL=8.11.0, TEST_PROCESSORTYPE=powerpc32, TEST_MEMORY=1, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=browser
|
|
+TEST_OS=darwin, TEST_KERNEL=8.11.0, TEST_PROCESSORTYPE=powerpc32, TEST_MEMORY=1, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=shell
|
|
+TEST_OS=darwin, TEST_KERNEL=8.11.0, TEST_PROCESSORTYPE=powerpc32, TEST_MEMORY=1, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=browser
|
|
+TEST_OS=darwin, TEST_KERNEL=8.11.0, TEST_PROCESSORTYPE=powerpc32, TEST_MEMORY=1, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=shell
|
|
+TEST_OS=darwin, TEST_KERNEL=8.11.1, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=1, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=browser
|
|
+TEST_OS=darwin, TEST_KERNEL=8.11.1, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=1, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=shell
|
|
+TEST_OS=darwin, TEST_KERNEL=8.11.1, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=1, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=browser
|
|
+TEST_OS=darwin, TEST_KERNEL=8.11.1, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=1, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=shell
|
|
+TEST_OS=darwin, TEST_KERNEL=9.3.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=1, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=debug, TEST_TYPE=browser
|
|
+TEST_OS=darwin, TEST_KERNEL=9.3.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=1, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=debug, TEST_TYPE=shell
|
|
+TEST_OS=darwin, TEST_KERNEL=9.3.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=1, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=opt, TEST_TYPE=browser
|
|
+TEST_OS=darwin, TEST_KERNEL=9.3.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=1, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=opt, TEST_TYPE=shell
|
|
+TEST_OS=darwin, TEST_KERNEL=9.3.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=1, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=browser
|
|
+TEST_OS=darwin, TEST_KERNEL=9.3.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=1, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=shell
|
|
+TEST_OS=darwin, TEST_KERNEL=9.3.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=1, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=browser
|
|
+TEST_OS=darwin, TEST_KERNEL=9.3.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=1, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=shell
|
|
+TEST_OS=darwin, TEST_KERNEL=9.3.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=debug, TEST_TYPE=browser
|
|
+TEST_OS=darwin, TEST_KERNEL=9.3.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=debug, TEST_TYPE=shell
|
|
+TEST_OS=darwin, TEST_KERNEL=9.3.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=opt, TEST_TYPE=browser
|
|
+TEST_OS=darwin, TEST_KERNEL=9.3.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=opt, TEST_TYPE=shell
|
|
+TEST_OS=darwin, TEST_KERNEL=9.3.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=browser
|
|
+TEST_OS=darwin, TEST_KERNEL=9.3.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=shell
|
|
+TEST_OS=darwin, TEST_KERNEL=9.3.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=browser
|
|
+TEST_OS=darwin, TEST_KERNEL=9.3.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=shell
|
|
+TEST_OS=darwin, TEST_KERNEL=9.3.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=debug, TEST_TYPE=browser
|
|
+TEST_OS=darwin, TEST_KERNEL=9.3.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=debug, TEST_TYPE=shell
|
|
+TEST_OS=darwin, TEST_KERNEL=9.3.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=opt, TEST_TYPE=browser
|
|
+TEST_OS=darwin, TEST_KERNEL=9.3.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=opt, TEST_TYPE=shell
|
|
+TEST_OS=darwin, TEST_KERNEL=9.3.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=browser
|
|
+TEST_OS=darwin, TEST_KERNEL=9.3.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=shell
|
|
+TEST_OS=darwin, TEST_KERNEL=9.3.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=browser
|
|
+TEST_OS=darwin, TEST_KERNEL=9.3.0, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=medium, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=debug, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=debug, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=opt, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=opt, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=debug, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=debug, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=opt, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=opt, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=4, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=1, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=debug, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=1, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=debug, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=1, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=opt, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=1, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=opt, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=1, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=1, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=1, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=1, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=debug, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=debug, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=opt, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=opt, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=debug, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=debug, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=opt, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=opt, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=4, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=debug, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=4, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=debug, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=4, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=opt, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=4, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=opt, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=4, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=4, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=4, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.18, TEST_PROCESSORTYPE=intel64, TEST_MEMORY=4, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0700, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.25, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=3, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=debug, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.25, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=3, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=debug, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.25, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=3, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=opt, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.25, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=3, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=opt, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.25, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=3, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.25, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=3, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=shell
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.25, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=3, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=browser
|
|
+TEST_OS=linux, TEST_KERNEL=2.6.25, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=3, TEST_CPUSPEED=slow, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=shell
|
|
+TEST_OS=nt, TEST_KERNEL=5.1, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=debug, TEST_TYPE=browser
|
|
+TEST_OS=nt, TEST_KERNEL=5.1, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=debug, TEST_TYPE=shell
|
|
+TEST_OS=nt, TEST_KERNEL=5.1, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=opt, TEST_TYPE=browser
|
|
+TEST_OS=nt, TEST_KERNEL=5.1, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0400, TEST_BRANCH=1.8.1, TEST_BUILDTYPE=opt, TEST_TYPE=shell
|
|
+TEST_OS=nt, TEST_KERNEL=5.1, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=browser
|
|
+TEST_OS=nt, TEST_KERNEL=5.1, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=debug, TEST_TYPE=shell
|
|
+TEST_OS=nt, TEST_KERNEL=5.1, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=browser
|
|
+TEST_OS=nt, TEST_KERNEL=5.1, TEST_PROCESSORTYPE=intel32, TEST_MEMORY=2, TEST_CPUSPEED=fast, TEST_TIMEZONE=-0400, TEST_BRANCH=1.9.0, TEST_BUILDTYPE=opt, TEST_TYPE=shell
|
|
Index: userhookeach.js
|
|
===================================================================
|
|
RCS file: /cvsroot/mozilla/js/tests/userhookeach.js,v
|
|
retrieving revision 1.4
|
|
diff -p -U 8 -r1.4 userhookeach.js
|
|
--- userhookeach.js 10 Apr 2008 20:54:08 -0000 1.4
|
|
+++ userhookeach.js 25 Jun 2008 17:31:18 -0000
|
|
@@ -49,17 +49,16 @@ var gCurrentTestValid;
|
|
var gPageStart;
|
|
var gPageStop;
|
|
|
|
function userOnStart()
|
|
{
|
|
try
|
|
{
|
|
dlog('userOnStart');
|
|
- cdump('JavaScriptTest: Begin Run');
|
|
registerDialogCloser();
|
|
}
|
|
catch(ex)
|
|
{
|
|
cdump('Spider: FATAL ERROR: userOnStart: ' + ex);
|
|
}
|
|
}
|
|
|
|
@@ -67,17 +66,16 @@ function userOnBeforePage()
|
|
{
|
|
try
|
|
{
|
|
dlog('userOnBeforePage');
|
|
gPageStart = new Date();
|
|
|
|
gCurrentTestId = /test=(.*);language/.exec(gSpider.mCurrentUrl.mUrl)[1];
|
|
gCurrentTestValid = true;
|
|
- cdump('JavaScriptTest: Begin Test ' + gCurrentTestId);
|
|
gCurrentTestStart = new Date();
|
|
}
|
|
catch(ex)
|
|
{
|
|
cdump('Spider: WARNING ERROR: userOnBeforePage: ' + ex);
|
|
gCurrentTestValid = false;
|
|
gPageCompleted = true;
|
|
}
|
|
@@ -85,46 +83,43 @@ function userOnBeforePage()
|
|
|
|
function userOnAfterPage()
|
|
{
|
|
try
|
|
{
|
|
dlog('userOnAfterPage');
|
|
gPageStop = new Date();
|
|
|
|
- cdump(gSpider.mCurrentUrl.mUrl + ': PAGE STATUS: NORMAL (' + ((gPageStop - gPageStart)/1000).toFixed(0) + ' seconds)');
|
|
checkTestCompleted();
|
|
}
|
|
catch(ex)
|
|
{
|
|
cdump('Spider: WARNING ERROR: userOnAfterPage: ' + ex);
|
|
gCurrentTestValid = false;
|
|
gPageCompleted = true;
|
|
}
|
|
}
|
|
|
|
function userOnStop()
|
|
{
|
|
try
|
|
{
|
|
// close any pending dialogs
|
|
- cdump('JavaScriptTest: End Run');
|
|
closeDialog();
|
|
unregisterDialogCloser();
|
|
}
|
|
catch(ex)
|
|
{
|
|
cdump('Spider: WARNING ERROR: userOnStop: ' + ex);
|
|
}
|
|
}
|
|
|
|
function userOnPageTimeout()
|
|
{
|
|
gPageStop = new Date();
|
|
- cdump(gSpider.mCurrentUrl.mUrl + ': PAGE STATUS: TIMED OUT (' + ((gPageStop - gPageStart)/1000).toFixed(0) + ' seconds)');
|
|
if (typeof gSpider.mDocument != 'undefined')
|
|
{
|
|
try
|
|
{
|
|
var win = gSpider.mDocument.defaultView;
|
|
if (win.wrappedJSObject)
|
|
{
|
|
win = win.wrappedJSObject;
|
|
@@ -132,17 +127,16 @@ function userOnPageTimeout()
|
|
gPageCompleted = win.gPageCompleted = true;
|
|
checkTestCompleted();
|
|
}
|
|
catch(ex)
|
|
{
|
|
cdump('Spider: WARNING ERROR: userOnPageTimeout: ' + ex);
|
|
}
|
|
}
|
|
- cdump('JavaScriptTest: End Test ' + gCurrentTestId);
|
|
}
|
|
|
|
function checkTestCompleted()
|
|
{
|
|
try
|
|
{
|
|
dlog('checkTestCompleted()');
|
|
|
|
@@ -176,17 +170,16 @@ function checkTestCompleted()
|
|
cdump('JavaScriptTest: ' + gCurrentTestId +
|
|
' gTestcases array is empty. Tests not run.');
|
|
new win.TestCase(win.gTestFile, win.summary, 'Unknown', 'gTestcases array is empty. Tests not run..');
|
|
}
|
|
else
|
|
{
|
|
}
|
|
cdump('JavaScriptTest: ' + gCurrentTestId + ' Elapsed time ' + ((gCurrentTestStop - gCurrentTestStart)/1000).toFixed(2) + ' seconds');
|
|
- cdump('JavaScriptTest: End Test ' + gCurrentTestId);
|
|
|
|
gPageCompleted = true;
|
|
}
|
|
else
|
|
{
|
|
dlog('page not completed, recheck');
|
|
setTimeout(checkTestCompleted, gCheckInterval);
|
|
}
|