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

Unified Diff: testing/scripts/run_isolated_script_test.py

Issue 2595793002: Run the webkit layout tests under swarming on linux_chromium_rel_ng. (Closed)
Patch Set: remove the webkit_layout_tests target and bump up the number of shards Created 4 years 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
Index: testing/scripts/run_isolated_script_test.py
diff --git a/testing/scripts/run_isolated_script_test.py b/testing/scripts/run_isolated_script_test.py
new file mode 100755
index 0000000000000000000000000000000000000000..db6782033a46a71f135971df4d4a1da6c90add01
--- /dev/null
+++ b/testing/scripts/run_isolated_script_test.py
@@ -0,0 +1,97 @@
+#!/usr/bin/env python
+# Copyright 2015 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.
+
+"""Runs a script that can run as an isolate (or not).
+
+The main requirement is that
+
+ --isolated-script-test-output=[FILENAME]
+
+is passed on the command line to run_isolated_script_tests. This gets
+remapped to the command line argument --write-full-results-to.
+
+json is written to that file in the format produced by
+common.parse_common_test_results.
+
+For compatibility with //base/test/launcher-based tests, the script
+will also remap the env vars GTEST_TOTAL_SHARDS and GTEST_SHARD_INDEX
+to the command line arguments --total-shards and --shard-index.
+
+This script is intended to be the base command invoked by the isolate,
+followed by a subsequent Python script. It could be generalized to
+invoke an arbitrary executable.
+"""
+
+import argparse
+import json
+import os
+import pprint
+import sys
+
+
+import common
+
+# Add src/testing/ into sys.path for importing xvfb.
+sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
+import xvfb
+
+
+def main():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--isolated-script-test-output', type=str,
+ required=True)
+ parser.add_argument('--shards', type=int, help='number of shards')
+ parser.add_argument('--xvfb', help='start xvfb', action='store_true')
+
+ # This argument is ignored for now.
+ parser.add_argument('--isolated-script-test-chartjson-output', type=str)
+
+ args, rest_args = parser.parse_known_args()
+
+ sharding_args, env = _remap_gtest_env_vars(os.environ)
+
+ cmd = [sys.executable] + rest_args + sharding_args
+ cmd += ['--write-full-results-to', args.isolated_script_test_output]
+ if args.xvfb:
+ return xvfb.run_executable(cmd, env)
+ else:
+ return common.run_command(cmd, env=env)
+
+
+def _remap_gtest_env_vars(orig_env):
mithro 2017/01/31 23:51:42 run_webkit_tests.py already supports these GTEST a
Dirk Pranke 2017/02/01 01:32:51 I think both maruel@ and I consider the support fo
+ total_shards = None
+ shard_index = None
+ env = orig_env.copy()
+ if 'GTEST_TOTAL_SHARDS' in env:
+ total_shards = int(env['GTEST_TOTAL_SHARDS'])
+ del env['GTEST_TOTAL_SHARDS']
+ if 'GTEST_SHARD_INDEX' in env:
+ shard_index = int(env['GTEST_SHARD_INDEX'])
+ del env['GTEST_SHARD_INDEX']
+ sharding_args = []
+ if total_shards is not None and shard_index is not None:
+ sharding_args = [
+ '--total-shards=%d' % total_shards,
+ '--shard-index=%d' % shard_index
+ ]
+ return sharding_args, env
+
+
+
+# This is not really a "script test" so does not need to manually add
+# any additional compile targets.
+def main_compile_targets(args):
+ json.dump([], args.output)
+
+
+if __name__ == '__main__':
+ # Conform minimally to the protocol defined by ScriptTest.
+ if 'compile_targets' in sys.argv:
+ funcs = {
+ 'run': None,
+ 'compile_targets': main_compile_targets,
+ }
+ sys.exit(common.run_script(sys.argv[1:], funcs))
+ sys.exit(main())

Powered by Google App Engine
This is Rietveld 408576698