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

Unified Diff: tools/testing/perf_testing/run_perf_tests.py

Issue 178223008: Replace run_selenium.py with Dart script that uses the browser controller for performance tests. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/testing/dart/perf_test_controller.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/testing/perf_testing/run_perf_tests.py
diff --git a/tools/testing/perf_testing/run_perf_tests.py b/tools/testing/perf_testing/run_perf_tests.py
index 67f724a5482e886fb3f5e8130d0a132b4e39bb05..8b790cb2ae8ec18106d330c2ad6d0d11062476d9 100755
--- a/tools/testing/perf_testing/run_perf_tests.py
+++ b/tools/testing/perf_testing/run_perf_tests.py
@@ -27,8 +27,7 @@ DART_REPO_LOC = abspath(os.path.join(dirname(abspath(__file__)), '..', '..',
'dart_checkout_for_perf_testing',
'dart'))
# How far back in time we want to test.
-EARLIEST_REVISION = 6285
-FIRST_CHROMEDRIVER = 7823
+EARLIEST_REVISION = 33076
sys.path.append(TOOLS_PATH)
sys.path.append(os.path.join(TOP_LEVEL_DIR, 'internal', 'tests'))
import post_results
@@ -627,115 +626,6 @@ class BrowserTester(Tester):
return browsers
-class CommonBrowserTest(RuntimePerformanceTest):
- """Runs this basic performance tests (Benchpress, some V8 benchmarks) in the
- browser."""
-
- def __init__(self, test_runner):
- """Args:
- test_runner: Reference to the object that notifies us when to run."""
- super(CommonBrowserTest, self).__init__(
- self.Name(), BrowserTester.GetBrowsers(False),
- 'browser', ['js', 'dart2js'],
- self.GetStandaloneBenchmarks(), test_runner,
- self.CommonBrowserTester(self),
- self.CommonBrowserFileProcessor(self))
-
- @staticmethod
- def Name():
- return 'browser-perf'
-
- @staticmethod
- def GetStandaloneBenchmarks():
- return ['Mandelbrot', 'DeltaBlue', 'Richards', 'NBody', 'BinaryTrees',
- 'Fannkuch', 'Meteor', 'BubbleSort', 'Fibonacci', 'Loop', 'Permute',
- 'Queens', 'QuickSort', 'Recurse', 'Sieve', 'Sum', 'Tak', 'Takl', 'Towers',
- 'TreeSort']
-
- class CommonBrowserTester(BrowserTester):
- def RunTests(self):
- """Run a performance test in the browser."""
- os.chdir(DART_REPO_LOC)
- self.test.test_runner.RunCmd([
- 'python', os.path.join('internal', 'browserBenchmarks',
- 'make_web_benchmarks.py')])
-
- for browser in self.test.platform_list:
- for version in self.test.versions:
- if not self.test.IsValidCombination(browser, version):
- continue
- self.test.trace_file = os.path.join(TOP_LEVEL_DIR,
- 'tools', 'testing', 'perf_testing', self.test.result_folder_name,
- 'perf-%s-%s-%s' % (self.test.cur_time, browser, version))
- self.AddSvnRevisionToTrace(self.test.trace_file, browser)
- file_path = os.path.join(
- os.getcwd(), 'internal', 'browserBenchmarks', 'V8vDart',
- 'V8vDart_page_%s.html' % version)
- self.test.test_runner.RunCmd(
- ['python', os.path.join('tools', 'testing', 'run_selenium.py'),
- '--out', '"file:///%s"' % file_path, '--browser', browser,
- '--timeout', '600', '--mode', 'perf'], self.test.trace_file,
- append=True)
-
- class CommonBrowserFileProcessor(Processor):
-
- def ProcessFile(self, afile, should_post_file):
- """Comb through the html to find the performance results.
- Returns: True if we successfully posted our data to storage and/or we can
- delete the trace file."""
- os.chdir(os.path.join(TOP_LEVEL_DIR, 'tools',
- 'testing', 'perf_testing'))
- parts = afile.split('-')
- browser = parts[2]
- version = parts[3]
- f = self.OpenTraceFile(afile, should_post_file)
- lines = f.readlines()
- line = ''
- i = 0
- revision_num = 0
- while '<div id="results">' not in line and i < len(lines):
- if 'Revision' in line:
- revision_num = int(line.split()[1].strip('"'))
- line = lines[i]
- i += 1
-
- if i >= len(lines) or revision_num == 0:
- # Then this run did not complete. Ignore this tracefile.
- return True
-
- line = lines[i]
- i += 1
- results = []
- if line.find('<br>') > -1:
- results = line.split('<br>')
- else:
- results = line.split('<br />')
- if results == []:
- return True
- upload_success = True
- for result in results:
- name_and_score = result.split(':')
- if len(name_and_score) < 2:
- break
- name = name_and_score[0].strip()
- score = name_and_score[1].strip()
- if version == 'js' or version == 'v8':
- version = 'js'
- bench_dict = self.test.values_dict[browser][version]
- bench_dict[name] += [float(score)]
- self.test.revision_dict[browser][version][name] += [revision_num]
- if not self.test.test_runner.no_upload and should_post_file:
- upload_success = upload_success and self.ReportResults(
- name, score, browser, version, revision_num,
- self.GetScoreType(name))
- else:
- upload_success = False
-
- f.close()
- self.CalculateGeometricMean(browser, version, revision_num)
- return upload_success
-
-
class DromaeoTester(Tester):
DROMAEO_BENCHMARKS = {
'attr': ('attributes', [
@@ -823,79 +713,6 @@ class DromaeoTest(RuntimePerformanceTest):
return 'dromaeo'
class DromaeoPerfTester(DromaeoTester):
- def MoveChromeDriverIfNeeded(self, browser):
- """Move the appropriate version of ChromeDriver onto the path.
- TODO(efortuna): This is a total hack because the latest version of Chrome
- (Dartium builds) requires a different version of ChromeDriver, that is
- incompatible with the release or beta Chrome and vice versa. Remove these
- shenanigans once we're back to both versions of Chrome using the same
- version of ChromeDriver. IMPORTANT NOTE: This assumes your chromedriver is
- in the default location (inside depot_tools).
-
- Returns: True if we were successfully able to download a new version of
- chromedriver and/or move the correct chromedriver into position.
- """
- current_dir = os.getcwd()
- self.test.test_runner.GetArchive('chromedriver')
- path = os.environ['PATH'].split(os.pathsep)
- orig_chromedriver_path = os.path.join(DART_REPO_LOC, 'tools', 'testing',
- 'orig-chromedriver')
- dartium_chromedriver_path = os.path.join(DART_REPO_LOC, 'tools',
- 'testing',
- 'dartium-chromedriver')
- extension = ''
- if platform.system() == 'Windows':
- extension = '.exe'
-
- def MoveChromedriver(depot_tools, copy_to_depot_tools_dir=True,
- from_path=None):
- if from_path:
- from_dir = from_path + extension
- else:
- from_dir = os.path.join(orig_chromedriver_path,
- 'chromedriver' + extension)
- to_dir = os.path.join(depot_tools, 'chromedriver' + extension)
- if not copy_to_depot_tools_dir:
- tmp = to_dir
- to_dir = from_dir
- from_dir = tmp
- print >> sys.stderr, from_dir
- print >> sys.stderr, to_dir
- if not os.path.exists(os.path.dirname(to_dir)):
- os.makedirs(os.path.dirname(to_dir))
- if not os.path.exists(os.path.dirname(from_dir)):
- os.makedirs(os.path.dirname(from_dir))
- shutil.copyfile(from_dir, to_dir)
-
- for loc in path:
- if 'depot_tools' in loc:
- if browser == 'chrome':
- if os.path.exists(orig_chromedriver_path):
- MoveChromedriver(loc)
- elif browser == 'dartium':
- if (int(self.test.test_runner.current_revision_num) <
- FIRST_CHROMEDRIVER):
- # If we don't have a stashed different chromedriver just use
- # the regular chromedriver.
- if not os.path.exists(os.path.dirname(orig_chromedriver_path)):
- os.makedirs(os.path.dirname(orig_chromedriver_path))
- self.test.test_runner.RunCmd([os.path.join(
- TOP_LEVEL_DIR, 'tools', 'testing', 'webdriver_test_setup.py'),
- '-f', '-p', '-s'])
- elif not os.path.exists(dartium_chromedriver_path):
- success, _, _ = self.test.test_runner.GetArchive('chromedriver')
- if not success:
- return False
- # Move original chromedriver for storage.
- if not os.path.exists(orig_chromedriver_path):
- MoveChromedriver(loc, copy_to_depot_tools_dir=False)
- if self.test.test_runner.current_revision_num >= FIRST_CHROMEDRIVER:
- # Copy Dartium chromedriver into depot_tools
- MoveChromedriver(loc, from_path=os.path.join(
- dartium_chromedriver_path, 'chromedriver'))
- os.chdir(current_dir)
- return True
-
def RunTests(self):
"""Run dromaeo in the browser."""
success, _, _ = self.test.test_runner.GetArchive('dartium')
@@ -907,21 +724,14 @@ class DromaeoTest(RuntimePerformanceTest):
dromaeo_path = os.path.join('samples', 'third_party', 'dromaeo')
current_path = os.getcwd()
os.chdir(dromaeo_path)
- if os.path.exists('generate_dart2js_tests.py'):
- stdout, _ = self.test.test_runner.RunCmd(
- ['python', 'generate_dart2js_tests.py'])
- else:
- stdout, _ = self.test.test_runner.RunCmd(
- ['python', 'generate_frog_tests.py'])
+ stdout, _ = self.test.test_runner.RunCmd(
+ ['python', 'generate_perf_and_dart2js_tests.py'])
os.chdir(current_path)
if 'Error: Compilation failed' in stdout:
return
versions = DromaeoTester.GetDromaeoVersions()
for browser in BrowserTester.GetBrowsers():
- success = self.MoveChromeDriverIfNeeded(browser)
- if not success:
- return
for version_name in versions:
if not self.test.IsValidCombination(browser, version_name):
continue
@@ -931,21 +741,33 @@ class DromaeoTest(RuntimePerformanceTest):
'tools', 'testing', 'perf_testing', self.test.result_folder_name,
'dromaeo-%s-%s-%s' % (self.test.cur_time, browser, version_name))
self.AddSvnRevisionToTrace(self.test.trace_file, browser)
- file_path = os.path.join(os.getcwd(), dromaeo_path,
- 'index%s.html?%s' % (
- '' if version_name == 'dart_html' else '-js', version))
+ url_path = '/'.join(['/root_dart', dromaeo_path, 'index%s.html?%s'% (
+ '-dart' if version_name == 'dart_html' else '-js',
+ version)])
+
+ # TODO(efortuna): Make this a separate function. We should do this
+ # once per cycle.
+ os.chdir(os.path.join(DART_REPO_LOC, 'tools', 'testing', 'dart',
+ 'browser_perf_testing'))
+ self.test.test_runner.RunCmd([os.path.join(DART_REPO_LOC,
+ utils.GetBuildRoot(utils.GuessOS(), 'release', 'ia32'),
+ 'dart-sdk', 'bin', 'pub'), 'install'])
+ os.chdir(current_path)
+
self.test.test_runner.RunCmd(
- ['python', os.path.join('tools', 'testing', 'run_selenium.py'),
- '--out', '"file:///%s"' % file_path, '--browser', browser,
- '--timeout', '900', '--mode', 'dromaeo'], self.test.trace_file,
+ [os.path.join(utils.GetBuildRoot(
+ utils.GuessOS(), 'release', 'ia32'), 'dart-sdk', 'bin', 'dart'),
+ '--package-root=%s' % os.path.join(DART_REPO_LOC, 'tools',
+ 'testing', 'dart', 'browser_perf_testing', 'packages'),
+ os.path.join('tools', 'testing', 'dart', 'browser_perf_testing',
+ 'lib', 'browser_perf_testing.dart'),
+ '--browser', browser, '--termination_test_file',
+ '/root_dart/samples/third_party/dromaeo/dromaeo_end_condition.'
+ 'js', '--test_path', url_path], self.test.trace_file,
append=True)
- # Put default Chromedriver back in.
- self.MoveChromeDriverIfNeeded('chrome')
@staticmethod
def GetDromaeoUrlQuery(browser, version):
- if browser == 'dartium':
- version = version.replace('frog', 'dart')
version = version.replace('_','AND')
tags = DromaeoTester.GetValidDromaeoTags()
return 'OR'.join([ '%sAND%s' % (version, tag) for tag in tags])
@@ -1002,7 +824,7 @@ class DromaeoTest(RuntimePerformanceTest):
class TestBuilder(object):
"""Construct the desired test object."""
available_suites = dict((suite.Name(), suite) for suite in [
- CommonBrowserTest, DromaeoTest])
+ DromaeoTest])
@staticmethod
def MakeTest(test_name, test_runner):
« no previous file with comments | « tools/testing/dart/perf_test_controller.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698