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

Unified Diff: client/bin/site_chrome_test.py

Issue 4557002: [autotest] Change ChromeTestBase to work with pre-installed chrome test binaries. (Closed) Base URL: http://git.chromium.org/git/autotest.git@master
Patch Set: work with new pre-install mechanism Created 10 years, 1 month 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: client/bin/site_chrome_test.py
diff --git a/client/bin/site_chrome_test.py b/client/bin/site_chrome_test.py
index 4c84d698b95e9ced37ea97c02d4a4d6082c79a5e..1608fb57fb64f51ad614fb4bce2174a0186164a9 100644
--- a/client/bin/site_chrome_test.py
+++ b/client/bin/site_chrome_test.py
@@ -2,7 +2,7 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-import logging, os, shutil, tempfile, utils
+import logging, os, re, shutil, subprocess, tempfile, utils
from autotest_lib.client.bin import test
from autotest_lib.client.common_lib import error, site_ui
@@ -16,32 +16,73 @@ class ChromeTestBase(test.test):
os.mkdir(self.srcdir)
- def run_chrome_test(self, test_to_run, extra_params = ''):
+ def initialize(self):
+ self.home_dir = tempfile.mkdtemp()
dep = 'chrome_test'
dep_dir = os.path.join(self.autodir, 'deps', dep)
+ self.job.add_repository(['/usr/local/autotest-pkgs'])
ericli 2010/11/12 22:16:26 get this value from globle_config.ini. from autot
Chris Masone 2010/11/15 23:46:23 Done.
self.job.install_pkg(dep, 'dep', dep_dir)
+ self.cr_source_dir = '%s/test_src' % dep_dir
+ self.test_binary_dir = '%s/out/Release' % self.cr_source_dir
+ try:
+ setup_cmd = '/bin/sh %s/%s' % (self.test_binary_dir,
+ 'setup_test_links.sh')
+ utils.system(setup_cmd) # this might raise an exception
+ except error.CmdError, e:
+ raise error.TestError(e)
- chrome_dir = '/opt/google/chrome'
- cr_source_dir = '%s/test_src' % dep_dir
- test_binary_dir = '%s/test_src/out/Release' % dep_dir
- self.home_dir = tempfile.mkdtemp()
+ def filter_bad_tests(self, tests):
+ matcher = re.compile(".+\.(FLAKY|FAILS|DISABLED).+")
+ return filter(lambda(x): not matcher.match(x), tests)
+
+
+ def list_chrome_tests(self, test_binary):
+ all_tests = []
try:
- setup_cmd = '%s/%s' % (test_binary_dir,
- 'setup_test_links.sh')
- utils.system(setup_cmd)
+ cmd = '%s/%s --gtest_list_tests' % (self.test_binary_dir,
+ test_binary)
+ cmd = 'HOME=%s CR_SOURCE_ROOT=%s %s' % (self.home_dir,
+ self.cr_source_dir,
+ site_ui.xcommand(cmd))
+ logging.debug("Running %s" % cmd)
+ test_proc = subprocess.Popen(cmd,
+ shell=True,
+ stdout=subprocess.PIPE)
+ last_suite = None
+ skipper = re.compile('YOU HAVE')
+ for line in test_proc.stdout:
+ stripped = line.lstrip()
+ if stripped == '' or skipper.match(stripped):
+ continue
+ elif (stripped == line):
+ last_suite = stripped.rstrip()
+ else:
+ all_tests.append(last_suite+stripped.rstrip())
+ except OSError, e:
+ logging.debug(e)
+ raise error.TestFail('Failed to list tests in %s!' % test_binary)
+ return all_tests
- cmd = '%s/%s %s' % (test_binary_dir, test_to_run, extra_params)
+
+ def run_chrome_test(self, test_to_run, extra_params = ''):
ericli 2010/11/12 22:16:26 no space for cmd arg default value. extra_params='
Chris Masone 2010/11/15 23:46:23 Done.
+ try:
+ cmd = '%s/%s %s' % (self.test_binary_dir, test_to_run, extra_params)
cmd = 'HOME=%s CR_SOURCE_ROOT=%s %s' % (self.home_dir,
- cr_source_dir,
+ self.cr_source_dir,
site_ui.xcommand(cmd))
- logging.info("Running %s" % cmd)
utils.system(cmd)
except error.CmdError, e:
logging.debug(e)
raise error.TestFail('%s failed!' % test_to_run)
+ def generate_test_list(self, binary, group, total_groups):
+ all_tests = self.list_chrome_tests(self.binary_to_run)
+ group_size = len(all_tests)/total_groups + 1 # to be safe
+ return all_tests[group*group_size:group*group_size+group_size]
+
+
def cleanup(self):
if self.home_dir:
shutil.rmtree(self.home_dir, ignore_errors=True)
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698