| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2015 The Chromium Authors. All rights reserved. | 2 # Copyright 2015 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 """Runs isolate bundled Telemetry unittests. | 6 """Runs isolate bundled Telemetry unittests. |
| 7 | 7 |
| 8 This script attempts to emulate the contract of gtest-style tests | 8 This script attempts to emulate the contract of gtest-style tests |
| 9 invoked via recipes. The main contract is that the caller passes the | 9 invoked via recipes. The main contract is that the caller passes the |
| 10 argument: | 10 argument: |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 import common | 28 import common |
| 29 | 29 |
| 30 # Add src/testing/ into sys.path for importing xvfb. | 30 # Add src/testing/ into sys.path for importing xvfb. |
| 31 sys.path.append(os.path.join(os.path.dirname(__file__), '..')) | 31 sys.path.append(os.path.join(os.path.dirname(__file__), '..')) |
| 32 import xvfb | 32 import xvfb |
| 33 | 33 |
| 34 | 34 |
| 35 def main(): | 35 def main(): |
| 36 parser = argparse.ArgumentParser() | 36 parser = argparse.ArgumentParser() |
| 37 parser.add_argument( | 37 parser.add_argument( |
| 38 '--isolated-script-test-output', type=argparse.FileType('w'), | 38 '--isolated-script-test-output', type=str, |
| 39 required=True) | 39 required=True) |
| 40 parser.add_argument('--xvfb', help='Start xvfb.', action='store_true') | 40 parser.add_argument('--xvfb', help='Start xvfb.', action='store_true') |
| 41 args, rest_args = parser.parse_known_args() | 41 args, rest_args = parser.parse_known_args() |
| 42 # Remove the chartjson extra arg until this script cares about chartjson | 42 # Remove the chartjson extra arg until this script cares about chartjson |
| 43 # results from telemetry | 43 # results from telemetry |
| 44 index = 0 | 44 index = 0 |
| 45 for arg in rest_args: | 45 for arg in rest_args: |
| 46 if '--isolated-script-test-chartjson-output' in arg: | 46 if '--isolated-script-test-chartjson-output' in arg: |
| 47 rest_args.pop(index) | 47 rest_args.pop(index) |
| 48 break | 48 break |
| (...skipping 16 matching lines...) Expand all Loading... |
| 65 if 'GTEST_SHARD_INDEX' in env: | 65 if 'GTEST_SHARD_INDEX' in env: |
| 66 shard_index = int(env['GTEST_SHARD_INDEX']) | 66 shard_index = int(env['GTEST_SHARD_INDEX']) |
| 67 del env['GTEST_SHARD_INDEX'] | 67 del env['GTEST_SHARD_INDEX'] |
| 68 sharding_args = [] | 68 sharding_args = [] |
| 69 if total_shards is not None and shard_index is not None: | 69 if total_shards is not None and shard_index is not None: |
| 70 sharding_args = [ | 70 sharding_args = [ |
| 71 '--total-shards=%d' % total_shards, | 71 '--total-shards=%d' % total_shards, |
| 72 '--shard-index=%d' % shard_index | 72 '--shard-index=%d' % shard_index |
| 73 ] | 73 ] |
| 74 try: | 74 try: |
| 75 with common.temporary_file() as tempfile_path: | 75 return common.run_command([sys.executable] + rest_args + sharding_args + [ |
| 76 rc = common.run_command([sys.executable] + rest_args + sharding_args + [ | 76 '--write-full-results-to', args.isolated_script_test_output], env=env) |
| 77 '--write-full-results-to', tempfile_path, | |
| 78 ], env=env) | |
| 79 with open(tempfile_path) as f: | |
| 80 results = json.load(f) | |
| 81 parsed_results = common.parse_common_test_results(results, | |
| 82 test_separator='.') | |
| 83 failures = parsed_results['unexpected_failures'] | |
| 84 | |
| 85 json.dump({ | |
| 86 'valid': bool(rc <= common.MAX_FAILURES_EXIT_STATUS and | |
| 87 ((rc == 0) or failures)), | |
| 88 'failures': failures.keys(), | |
| 89 }, args.isolated_script_test_output) | |
| 90 | |
| 91 return rc | |
| 92 finally: | 77 finally: |
| 93 xvfb.kill(xvfb_proc) | 78 xvfb.kill(xvfb_proc) |
| 94 xvfb.kill(openbox_proc) | 79 xvfb.kill(openbox_proc) |
| 95 xvfb.kill(xcompmgr_proc) | 80 xvfb.kill(xcompmgr_proc) |
| 96 | 81 |
| 97 | 82 |
| 98 | 83 |
| 99 # This is not really a "script test" so does not need to manually add | 84 # This is not really a "script test" so does not need to manually add |
| 100 # any additional compile targets. | 85 # any additional compile targets. |
| 101 def main_compile_targets(args): | 86 def main_compile_targets(args): |
| 102 json.dump([], args.output) | 87 json.dump([], args.output) |
| 103 | 88 |
| 104 | 89 |
| 105 if __name__ == '__main__': | 90 if __name__ == '__main__': |
| 106 # Conform minimally to the protocol defined by ScriptTest. | 91 # Conform minimally to the protocol defined by ScriptTest. |
| 107 if 'compile_targets' in sys.argv: | 92 if 'compile_targets' in sys.argv: |
| 108 funcs = { | 93 funcs = { |
| 109 'run': None, | 94 'run': None, |
| 110 'compile_targets': main_compile_targets, | 95 'compile_targets': main_compile_targets, |
| 111 } | 96 } |
| 112 sys.exit(common.run_script(sys.argv[1:], funcs)) | 97 sys.exit(common.run_script(sys.argv[1:], funcs)) |
| 113 sys.exit(main()) | 98 sys.exit(main()) |
| OLD | NEW |