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

Unified Diff: testing/scripts/run_gpu_integration_test_as_googletest.py

Issue 2062993003: Add wrapper script for GPU integration tests, supporting sharding. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased. Created 4 years, 6 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 | « content/test/gpu/run_gpu_integration_test.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: testing/scripts/run_gpu_integration_test_as_googletest.py
diff --git a/testing/scripts/run_telemetry_benchmark_as_googletest.py b/testing/scripts/run_gpu_integration_test_as_googletest.py
similarity index 72%
copy from testing/scripts/run_telemetry_benchmark_as_googletest.py
copy to testing/scripts/run_gpu_integration_test_as_googletest.py
index 387c5c8da95993f984f20522253b471eca93a58d..3174c6138528d70fae115e50a60663b7ea6f7e0d 100755
--- a/testing/scripts/run_telemetry_benchmark_as_googletest.py
+++ b/testing/scripts/run_gpu_integration_test_as_googletest.py
@@ -3,7 +3,7 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-"""Runs an isolate bundled Telemetry benchmark.
+"""Runs an isolate bundled Telemetry GPU integration test.
This script attempts to emulate the contract of gtest-style tests
invoked via recipes. The main contract is that the caller passes the
@@ -42,7 +42,7 @@ CHROME_SANDBOX_PATH = '/opt/chromium/chrome_sandbox'
def main():
parser = argparse.ArgumentParser()
parser.add_argument(
- '--isolated-script-test-output', type=argparse.FileType('w'),
+ '--isolated-script-test-output', type=str,
required=True)
parser.add_argument('--xvfb', help='Start xvfb.', action='store_true')
args, rest_args = parser.parse_known_args()
@@ -58,37 +58,41 @@ def main():
xvfb_proc, openbox_proc, xcompmgr_proc = xvfb.start_xvfb(env=env,
build_dir='.')
assert xvfb_proc and openbox_proc and xcompmgr_proc, 'Failed to start xvfb'
+ # Compatibility with gtest-based sharding.
+ total_shards = None
+ shard_index = None
+ 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
+ ]
try:
- tempfile_dir = tempfile.mkdtemp('telemetry')
valid = True
- failures = []
+ rc = 0
try:
- rc = common.run_command([sys.executable] + rest_args + [
- '--output-dir', tempfile_dir,
- '--output-format=json'
+ rc = common.run_command([sys.executable] + rest_args + sharding_args + [
+ '--write-abbreviated-json-results-to', args.isolated_script_test_output,
], env=env)
- tempfile_name = os.path.join(tempfile_dir, 'results.json')
- with open(tempfile_name) as f:
- results = json.load(f)
- for value in results['per_page_values']:
- if value['type'] == 'failure':
- failures.append(results['pages'][str(value['page_id'])]['name'])
- valid = bool(rc == 0 or failures)
+ valid = bool(rc == 0)
except Exception:
traceback.print_exc()
valid = False
- finally:
- shutil.rmtree(tempfile_dir)
- if not valid and not failures:
+ if not valid:
failures = ['(entire test suite)']
- if rc == 0:
- rc = 1 # Signal an abnormal exit.
+ with open(args.isolated_script_test_output, 'w') as fp:
+ json.dump({
+ 'valid': valid,
+ 'failures': failures,
+ }, fp)
- json.dump({
- 'valid': valid,
- 'failures': failures,
- }, args.isolated_script_test_output)
return rc
finally:
« no previous file with comments | « content/test/gpu/run_gpu_integration_test.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698