Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(173)

Side by Side Diff: test/benchmarks/testcfg.py

Issue 1411143002: [test] Pull benchmarks as a dependency. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « DEPS ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2013 the V8 project authors. All rights reserved. 1 # Copyright 2013 the V8 project authors. All rights reserved.
2 # Redistribution and use in source and binary forms, with or without 2 # Redistribution and use in source and binary forms, with or without
3 # modification, are permitted provided that the following conditions are 3 # modification, are permitted provided that the following conditions are
4 # met: 4 # met:
5 # 5 #
6 # * Redistributions of source code must retain the above copyright 6 # * Redistributions of source code must retain the above copyright
7 # notice, this list of conditions and the following disclaimer. 7 # notice, this list of conditions and the following disclaimer.
8 # * Redistributions in binary form must reproduce the above 8 # * Redistributions in binary form must reproduce the above
9 # copyright notice, this list of conditions and the following 9 # copyright notice, this list of conditions and the following
10 # disclaimer in the documentation and/or other materials provided 10 # disclaimer in the documentation and/or other materials provided
(...skipping 10 matching lines...) Expand all
21 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 21 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 27
28 28
29 import os 29 import os
30 import shutil 30 import shutil
31 import subprocess
32 import tarfile
33 31
34 from testrunner.local import statusfile 32 from testrunner.local import statusfile
35 from testrunner.local import testsuite 33 from testrunner.local import testsuite
36 from testrunner.objects import testcase 34 from testrunner.objects import testcase
37 35
38 36
39 class BenchmarksVariantGenerator(testsuite.VariantGenerator): 37 class BenchmarksVariantGenerator(testsuite.VariantGenerator):
40 # Both --nocrankshaft and --stressopt are very slow. Add TF but without 38 # Both --nocrankshaft and --stressopt are very slow. Add TF but without
41 # always opt to match the way the benchmarks are run for performance 39 # always opt to match the way the benchmarks are run for performance
42 # testing. 40 # testing.
43 def FilterVariantsByTest(self, testcase): 41 def FilterVariantsByTest(self, testcase):
44 if testcase.outcomes and statusfile.OnlyStandardVariant( 42 if testcase.outcomes and statusfile.OnlyStandardVariant(
45 testcase.outcomes): 43 testcase.outcomes):
46 return self.standard_variant 44 return self.standard_variant
47 return self.fast_variants 45 return self.fast_variants
48 46
49 def GetFlagSets(self, testcase, variant): 47 def GetFlagSets(self, testcase, variant):
50 return testsuite.FAST_VARIANT_FLAGS[variant] 48 return testsuite.FAST_VARIANT_FLAGS[variant]
51 49
52 50
53 class BenchmarksTestSuite(testsuite.TestSuite): 51 class BenchmarksTestSuite(testsuite.TestSuite):
54 52
55 def __init__(self, name, root): 53 def __init__(self, name, root):
56 super(BenchmarksTestSuite, self).__init__(name, root) 54 super(BenchmarksTestSuite, self).__init__(name, root)
57 self.testroot = root 55 self.testroot = os.path.join(root, "data")
58 56
59 def ListTests(self, context): 57 def ListTests(self, context):
60 tests = [] 58 tests = []
61 for test in [ 59 for test in [
62 "kraken/ai-astar", 60 "kraken/ai-astar",
63 "kraken/audio-beat-detection", 61 "kraken/audio-beat-detection",
64 "kraken/audio-dft", 62 "kraken/audio-dft",
65 "kraken/audio-fft", 63 "kraken/audio-fft",
66 "kraken/audio-oscillator", 64 "kraken/audio-oscillator",
67 "kraken/imaging-darkroom", 65 "kraken/imaging-darkroom",
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 result += ["-e", "BenchmarkSuite.RunSuites({});"] 137 result += ["-e", "BenchmarkSuite.RunSuites({});"]
140 elif testcase.path.startswith("sunspider"): 138 elif testcase.path.startswith("sunspider"):
141 result.append(os.path.join(self.testroot, "%s.js" % testcase.path)) 139 result.append(os.path.join(self.testroot, "%s.js" % testcase.path))
142 return testcase.flags + result 140 return testcase.flags + result
143 141
144 def GetSourceForTest(self, testcase): 142 def GetSourceForTest(self, testcase):
145 filename = os.path.join(self.testroot, testcase.path + ".js") 143 filename = os.path.join(self.testroot, testcase.path + ".js")
146 with open(filename) as f: 144 with open(filename) as f:
147 return f.read() 145 return f.read()
148 146
149 def _DownloadIfNecessary(self, url, revision, target_dir): 147 def DownloadData(self):
150 # Maybe we're still up to date? 148 print "Benchmarks download is deprecated. It's part of DEPS."
151 revision_file = "CHECKED_OUT_%s" % target_dir
152 checked_out_revision = None
153 if os.path.exists(revision_file):
154 with open(revision_file) as f:
155 checked_out_revision = f.read()
156 if checked_out_revision == revision:
157 return
158 149
159 # If we have a local archive file with the test data, extract it. 150 def rm_dir(directory):
160 if os.path.exists(target_dir): 151 directory_name = os.path.join(self.root, directory)
161 shutil.rmtree(target_dir) 152 if os.path.exists(directory_name):
162 archive_file = "downloaded_%s_%s.tar.gz" % (target_dir, revision) 153 shutil.rmtree(directory_name)
163 if os.path.exists(archive_file):
164 with tarfile.open(archive_file, "r:gz") as tar:
165 tar.extractall()
166 with open(revision_file, "w") as f:
167 f.write(revision)
168 return
169 154
170 # No cached copy. Check out via SVN, and pack as .tar.gz for later use. 155 # Clean up old directories and archive files.
171 command = "svn co %s -r %s %s" % (url, revision, target_dir) 156 rm_dir('kraken')
172 code = subprocess.call(command, shell=True) 157 rm_dir('octane')
173 if code != 0: 158 rm_dir('sunspider')
174 raise Exception("Error checking out %s benchmark" % target_dir) 159 archive_files = [f for f in os.listdir(self.root)
175 with tarfile.open(archive_file, "w:gz") as tar: 160 if f.startswith("downloaded_") or
176 tar.add("%s" % target_dir) 161 f.startswith("CHECKED_OUT_")]
177 with open(revision_file, "w") as f: 162 if len(archive_files) > 0:
178 f.write(revision) 163 print "Clobber outdated test archives ..."
179 164 for f in archive_files:
180 def DownloadData(self): 165 os.remove(os.path.join(self.root, f))
181 old_cwd = os.getcwd()
182 os.chdir(os.path.abspath(self.root))
183
184 self._DownloadIfNecessary(
185 ("http://svn.webkit.org/repository/webkit/trunk/PerformanceTests/"
186 "SunSpider/tests/sunspider-1.0.2/"),
187 "159499", "sunspider")
188
189 self._DownloadIfNecessary(
190 ("http://kraken-mirror.googlecode.com/svn/trunk/kraken/tests/"
191 "kraken-1.1/"),
192 "8", "kraken")
193
194 self._DownloadIfNecessary(
195 "http://octane-benchmark.googlecode.com/svn/trunk/",
196 "26", "octane")
197
198 os.chdir(old_cwd)
199 166
200 def _VariantGeneratorFactory(self): 167 def _VariantGeneratorFactory(self):
201 return BenchmarksVariantGenerator 168 return BenchmarksVariantGenerator
202 169
203 170
204 def GetSuite(name, root): 171 def GetSuite(name, root):
205 return BenchmarksTestSuite(name, root) 172 return BenchmarksTestSuite(name, root)
OLDNEW
« no previous file with comments | « DEPS ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698