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

Unified Diff: swarm_client/googletest/isolate_test_cases.py

Issue 69143004: Delete swarm_client. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/
Patch Set: Created 7 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 | « swarm_client/googletest/fix_test_cases.py ('k') | swarm_client/googletest/list_test_cases.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: swarm_client/googletest/isolate_test_cases.py
===================================================================
--- swarm_client/googletest/isolate_test_cases.py (revision 235167)
+++ swarm_client/googletest/isolate_test_cases.py (working copy)
@@ -1,175 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2013 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-"""Traces each test cases of a google-test executable individually and generates
-or updates an .isolate file.
-
-If the trace hangs up, you can still take advantage of the traces up to the
-points it got to by Ctrl-C'ing out, then running isolate.py merge -r
-out/release/foo_test.isolated. the reason it works is because both isolate.py
-and isolate_test_cases.py uses the same filename for the trace by default.
-"""
-
-import logging
-import os
-import subprocess
-import sys
-
-ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
-if not ROOT_DIR in sys.path:
- sys.path.insert(0, ROOT_DIR)
-
-import isolate
-import run_test_cases
-import trace_inputs
-import trace_test_cases
-
-from utils import tools
-
-
-def isolate_test_cases(
- cmd, test_cases, jobs, isolated_file, isolate_file,
- root_dir, reldir, variables, trace_blacklist):
- assert os.path.isabs(root_dir) and os.path.isdir(root_dir), root_dir
-
- logname = isolated_file + '.log'
- basename = isolated_file.rsplit('.', 1)[0]
- cwd_dir = os.path.join(root_dir, reldir)
- # Do the actual tracing.
- results = trace_test_cases.trace_test_cases(
- cmd, cwd_dir, test_cases, jobs, logname)
- api = trace_inputs.get_api()
- blacklist = trace_inputs.gen_blacklist(trace_blacklist)
- logs = dict(
- (i.pop('trace'), i) for i in api.parse_log(logname, blacklist, None))
- exception = None
- try:
- inputs = []
- for items in results:
- item = items[-1]
- assert item['valid']
- # Load the results;
- log_dict = logs[item['tracename']]
- if log_dict.get('exception'):
- exception = exception or log_dict['exception']
- logging.error('Got exception: %s', exception)
- continue
- files = log_dict['results'].strip_root(root_dir).files
- tracked, touched = isolate.split_touched(files)
- value = isolate.generate_isolate(
- tracked,
- [],
- touched,
- root_dir,
- variables,
- reldir,
- blacklist)
- # item['test_case'] could be an invalid file name.
- out = basename + '.' + item['tracename'] + '.isolate'
- with open(out, 'w') as f:
- isolate.pretty_print(value, f)
- inputs.append(out)
-
- # Merges back. Note that it is possible to blow up the command line
- # argument length here but writing the files is still useful. Convert to
- # importing the module instead if necessary.
- merge_cmd = [
- sys.executable,
- os.path.join(ROOT_DIR, 'isolate_merge.py'),
- isolate_file,
- '-o', isolate_file,
- ]
- merge_cmd.extend(inputs)
- logging.info(merge_cmd)
- proc = subprocess.Popen(merge_cmd)
- proc.communicate()
- return proc.returncode
- finally:
- if exception:
- raise exception[0], exception[1], exception[2]
-
-
-def test_xvfb(command, rel_dir):
- """Calls back ourself if not running inside Xvfb and it's on the command line
- to run.
-
- Otherwise the X session will die while trying to start too many Xvfb
- instances.
- """
- if os.environ.get('_CHROMIUM_INSIDE_XVFB') == '1':
- return
- for index, item in enumerate(command):
- if item.endswith('xvfb.py'):
- # Note this has inside knowledge about src/testing/xvfb.py.
- print('Restarting itself under Xvfb')
- prefix = command[index:index+2]
- prefix[0] = os.path.normpath(os.path.join(rel_dir, prefix[0]))
- prefix[1] = os.path.normpath(os.path.join(rel_dir, prefix[1]))
- cmd = tools.fix_python_path(prefix + sys.argv)
- sys.exit(subprocess.call(cmd))
-
-
-def safely_load_isolated(parser, options):
- """Loads a .isolated.state to extract the executable information.
-
- Returns the CompleteState instance, the command and the list of test cases.
- """
- config = isolate.CompleteState.load_files(options.isolated)
- logging.debug(
- 'root_dir: %s relative_cwd: %s isolated: %s',
- config.root_dir, config.saved_state.relative_cwd, options.isolated)
- reldir = os.path.join(config.root_dir, config.saved_state.relative_cwd)
- command = config.saved_state.command
- test_cases = []
- if command:
- command = tools.fix_python_path(command)
- test_xvfb(command, reldir)
- test_cases = parser.process_gtest_options(command, reldir, options)
- return config, command, test_cases
-
-
-def main():
- """CLI frontend to validate arguments."""
- tools.disable_buffering()
- parser = run_test_cases.OptionParserTestCases(
- usage='%prog <options> --isolated <.isolated>')
- parser.format_description = lambda *_: parser.description
- isolate.add_variable_option(parser)
- isolate.add_trace_option(parser)
-
- # TODO(maruel): Add support for options.timeout.
- parser.remove_option('--timeout')
-
- options, args = parser.parse_args()
- if args:
- parser.error('Unsupported arg: %s' % args)
- isolate.parse_isolated_option(parser, options, os.getcwd(), True)
- isolate.parse_variable_option(options)
-
- try:
- config, command, test_cases = safely_load_isolated(parser, options)
- if not command:
- parser.error('A command must be defined')
- if not test_cases:
- parser.error('No test case to run with command: %s' % ' '.join(command))
-
- config.saved_state.variables.update(options.variables)
- return isolate_test_cases(
- command,
- test_cases,
- options.jobs,
- config.isolated_filepath,
- config.saved_state.isolate_filepath,
- config.root_dir,
- config.saved_state.relative_cwd,
- config.saved_state.variables,
- options.trace_blacklist)
- except isolate.ExecutionError, e:
- print >> sys.stderr, str(e)
- return 1
-
-
-if __name__ == '__main__':
- sys.exit(main())
« no previous file with comments | « swarm_client/googletest/fix_test_cases.py ('k') | swarm_client/googletest/list_test_cases.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698