Index: testing/scripts/run_gtest_perf_test.py |
diff --git a/testing/scripts/run_gpu_integration_test_as_googletest.py b/testing/scripts/run_gtest_perf_test.py |
similarity index 70% |
copy from testing/scripts/run_gpu_integration_test_as_googletest.py |
copy to testing/scripts/run_gtest_perf_test.py |
index fd48e06cf36e76e43993ac311afc1ebc78cd1992..ba4746cea1b20ba98cca1eb8ed65bc99b0eff75c 100755 |
--- a/testing/scripts/run_gpu_integration_test_as_googletest.py |
+++ b/testing/scripts/run_gtest_perf_test.py |
@@ -3,20 +3,20 @@ |
# 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 GPU integration test. |
+"""Runs an isolated non-Telemetry perf test . |
-This script attempts to emulate the contract of gtest-style tests |
-invoked via recipes. The main contract is that the caller passes the |
-argument: |
+The main contract is that the caller passes the arguments: |
--isolated-script-test-output=[FILENAME] |
- |
json is written to that file in the format produced by |
common.parse_common_test_results. |
+ --isolated-script-test-chartjson-output=[FILE] |
+stdout is written to this file containing chart results for the perf dashboard |
+ |
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. |
+followed by a subsequent non-python executable. It is modeled after |
+run_gpu_integration_test_as_gtest.py |
""" |
import argparse |
@@ -39,21 +39,22 @@ import xvfb |
CHROME_SANDBOX_ENV = 'CHROME_DEVEL_SANDBOX' |
CHROME_SANDBOX_PATH = '/opt/chromium/chrome_sandbox' |
+ |
+def IsWindows(): |
+ return sys.platform == 'cygwin' or sys.platform.startswith('win') |
+ |
+ |
def main(): |
parser = argparse.ArgumentParser() |
parser.add_argument( |
'--isolated-script-test-output', type=str, |
required=True) |
+ parser.add_argument( |
+ '--isolated-script-test-chartjson-output', type=str, |
+ required=True) |
parser.add_argument('--xvfb', help='Start xvfb.', action='store_true') |
+ |
args, rest_args = parser.parse_known_args() |
- # Remove the chartjson extra arg until this script cares about chartjson |
- # results from telemetry |
- index = 0 |
- for arg in rest_args: |
- if '--isolated-script-test-chartjson-output' in arg: |
- rest_args.pop(index) |
- break |
- index += 1 |
xvfb_proc = None |
openbox_proc = None |
@@ -67,28 +68,23 @@ 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: |
valid = True |
rc = 0 |
try: |
- rc = common.run_command([sys.executable] + rest_args + sharding_args + [ |
+ executable = rest_args[0] |
+ if IsWindows(): |
+ executable = '.\%s.exe' % executable |
+ else: |
+ executable = './%s' % executable |
+ |
+ rc = common.run_command_with_output([executable] + [ |
'--write-abbreviated-json-results-to', args.isolated_script_test_output, |
- ], env=env) |
+ ], env=env, stdoutfile=args.isolated_script_test_chartjson_output) |
+ |
+ # Now get the correct json format from the stdout to write to the |
+ # perf results file |
except Exception: |
traceback.print_exc() |
valid = False |
@@ -124,3 +120,4 @@ if __name__ == '__main__': |
} |
sys.exit(common.run_script(sys.argv[1:], funcs)) |
sys.exit(main()) |
+ |