Fri, 04 Jan 2013 09:58:33 -0400
8005663: Update copyright year to 2013
Reviewed-by: sundar
Contributed-by: james.laskey@oracle.com
1 /*
2 * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
24 /**
25 * runsunspider : runs the sunspider tests and checks for compliance
26 *
27 * @test
28 * @option -timezone=PST
29 * @runif external.sunspider
30 */
32 /*
33 * Copyright (c) 2010-2011, Oracle and/or its affiliates. All rights reserved.
34 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
35 *
36 * This code is free software; you can redistribute it and/or modify it
37 * under the terms of the GNU General Public License version 2 only, as
38 * published by the Free Software Foundation. Oracle designates this
39 * particular file as subject to the "Classpath" exception as provided
40 * by Oracle in the LICENSE file that accompanied this code.
41 *
42 * This code is distributed in the hope that it will be useful, but WITHOUT
43 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
44 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
45 * version 2 for more details (a copy is included in the LICENSE file that
46 * accompanied this code).
47 *
48 * You should have received a copy of the GNU General Public License version
49 * 2 along with this work; if not, write to the Free Software Foundation,
50 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
51 *
52 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
53 * or visit www.oracle.com if you need additional information or have any
54 * questions.
55 */
57 /**
58 * This is not a test, but a test "framework" for running sunspider tests.
59 *
60 */
62 function assertEq(a, b) {
63 if (a !== b) {
64 throw "ASSERTION FAILED: " + a + " should be " + b;
65 }
66 }
68 var runs = 0;
69 var iterations__ = 1;
70 var total_time = 0;
72 function runbench(name) {
73 var filename = name.split("/").pop();
74 if (verbose_run) {
75 print("Running " + filename);
76 }
78 var start = new Date;
79 for (var i = 0; i < iterations__; i++) {
80 load(name);
81 }
82 var stop = new Date - start;
83 total_time += stop;
85 if (verbose_run) {
86 print(filename + " done in " + stop + " ms");
87 }
88 runs++;
89 }
91 function runsuite(args) {
92 var changed = false;
94 try {
95 for (var n = 0; n < args.length; n++) {
96 if (args[n] == undefined) {
97 continue;
98 }
99 if (args[n].indexOf('--') == 0) {
100 continue; //ignore param
101 }
102 runbench(args[n]);
103 changed = true;
104 }
106 } catch (e) {
107 print("error: " + e);
108 if (e.toString().indexOf(args) == 1) {
109 throw e;
110 }
111 // no scripting or something, silently fail
112 }
113 return changed;
114 }
116 var args;
117 if (typeof $ARGS !== 'undefined') {
118 args = $ARGS;
119 } else if (typeof arguments !== 'undefined') {
120 args = arguments;
121 }
123 var tests = [
124 'check-3d-cube.js',
125 'check-access-nsieve.js',
126 'check-crypto-aes.js',
127 'check-math-spectral-norm.js',
128 'check-3d-morph.js',
129 'check-bitops-3bit-bits-in-byte.js',
130 'check-crypto-md5.js',
131 'check-mont.js',
132 'check-3d-raytrace.js',
133 'check-bitops-bits-in-byte.js',
134 'check-crypto-sha1.js',
135 'check-regexp-dna.js',
136 'check-access-binary-trees.js',
137 'check-bitops-bitwise-and.js',
138 'check-date-format-tofte.js',
139 'check-string-fasta.js',
140 'check-access-fannkuch.js',
141 'check-bitops-nsieve-bits.js',
142 'check-math-cordic.js',
143 'check-string-tagcloud.js',
144 'check-access-nbody.js',
145 'check-controlflow-recursive.js',
146 'check-math-partial-sums.js',
147 'check-string-unpack-code.js'
148 ];
150 // handle the case this script may be run by a JS engine that doesn't
151 // support __DIR__ global variable.
152 var dir = (typeof(__DIR__) == 'undefined')? "test/script/basic/" : __DIR__;
154 for (i in tests) {
155 tests[i] = dir + '../external/sunspider/' + tests[i];
156 }
158 var verbose_run = false;
160 // check for a fileset from ant and split it - special case call from ant build.xml
161 if (args.length == 1 && args[0].toString().indexOf(' ') != -1) {
162 args[0] = args[0].replace(/\/$/, '');
163 args = args[0].split(' ');
164 verbose_run = true; //for a file set, always run verbose for ant sunspider output
165 }
168 var tests_found = [];
170 for (i in args) {
171 var arg = args[i];
172 if (arg.indexOf('--') == 0) {
173 if (arg == '--verbose') {
174 verbose_run = true;
175 }
176 } else {
177 tests_found.push(arg);
178 }
179 }
181 if (tests_found.length == 0) {
182 tests_found = tests;
183 }
185 runsuite(tests_found);
187 if (verbose_run) {
188 print(runs + "/" + tests_found.length + " tests were successfully run in " + total_time + " ms ");
189 }
191 print("Sunspider finished!");