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 an isolate bundled Telemetry benchmark. | 6 """Runs an isolate bundled Telemetry benchmark. |
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 30 matching lines...) Expand all Loading... |
41 | 41 |
42 def main(): | 42 def main(): |
43 parser = argparse.ArgumentParser() | 43 parser = argparse.ArgumentParser() |
44 parser.add_argument( | 44 parser.add_argument( |
45 '--isolated-script-test-output', type=argparse.FileType('w'), | 45 '--isolated-script-test-output', type=argparse.FileType('w'), |
46 required=True) | 46 required=True) |
47 parser.add_argument('--xvfb', help='Start xvfb.', action='store_true') | 47 parser.add_argument('--xvfb', help='Start xvfb.', action='store_true') |
48 args, rest_args = parser.parse_known_args() | 48 args, rest_args = parser.parse_known_args() |
49 xvfb_proc = None | 49 xvfb_proc = None |
50 openbox_proc = None | 50 openbox_proc = None |
| 51 xcompmgr_proc = None |
51 env = os.environ.copy() | 52 env = os.environ.copy() |
52 # Assume we want to set up the sandbox environment variables all the | 53 # Assume we want to set up the sandbox environment variables all the |
53 # time; doing so is harmless on non-Linux platforms and is needed | 54 # time; doing so is harmless on non-Linux platforms and is needed |
54 # all the time on Linux. | 55 # all the time on Linux. |
55 env[CHROME_SANDBOX_ENV] = CHROME_SANDBOX_PATH | 56 env[CHROME_SANDBOX_ENV] = CHROME_SANDBOX_PATH |
56 if args.xvfb and xvfb.should_start_xvfb(env): | 57 if args.xvfb and xvfb.should_start_xvfb(env): |
57 xvfb_proc, openbox_proc = xvfb.start_xvfb(env=env, build_dir='.') | 58 xvfb_proc, openbox_proc, xcompmgr_proc = xvfb.start_xvfb(env=env, |
58 assert xvfb_proc and openbox_proc, 'Failed to start xvfb' | 59 build_dir='.') |
| 60 assert xvfb_proc and openbox_proc and xcompmgr_proc, 'Failed to start xvfb' |
59 try: | 61 try: |
60 tempfile_dir = tempfile.mkdtemp('telemetry') | 62 tempfile_dir = tempfile.mkdtemp('telemetry') |
61 valid = True | 63 valid = True |
62 failures = [] | 64 failures = [] |
63 try: | 65 try: |
64 rc = common.run_command([sys.executable] + rest_args + [ | 66 rc = common.run_command([sys.executable] + rest_args + [ |
65 '--output-dir', tempfile_dir, | 67 '--output-dir', tempfile_dir, |
66 '--output-format=json' | 68 '--output-format=json' |
67 ], env=env) | 69 ], env=env) |
68 tempfile_name = os.path.join(tempfile_dir, 'results.json') | 70 tempfile_name = os.path.join(tempfile_dir, 'results.json') |
(...skipping 16 matching lines...) Expand all Loading... |
85 | 87 |
86 json.dump({ | 88 json.dump({ |
87 'valid': valid, | 89 'valid': valid, |
88 'failures': failures, | 90 'failures': failures, |
89 }, args.isolated_script_test_output) | 91 }, args.isolated_script_test_output) |
90 return rc | 92 return rc |
91 | 93 |
92 finally: | 94 finally: |
93 xvfb.kill(xvfb_proc) | 95 xvfb.kill(xvfb_proc) |
94 xvfb.kill(openbox_proc) | 96 xvfb.kill(openbox_proc) |
| 97 xvfb.kill(xcompmgr_proc) |
95 | 98 |
96 | 99 |
97 # This is not really a "script test" so does not need to manually add | 100 # This is not really a "script test" so does not need to manually add |
98 # any additional compile targets. | 101 # any additional compile targets. |
99 def main_compile_targets(args): | 102 def main_compile_targets(args): |
100 json.dump([], args.output) | 103 json.dump([], args.output) |
101 | 104 |
102 | 105 |
103 if __name__ == '__main__': | 106 if __name__ == '__main__': |
104 # Conform minimally to the protocol defined by ScriptTest. | 107 # Conform minimally to the protocol defined by ScriptTest. |
105 if 'compile_targets' in sys.argv: | 108 if 'compile_targets' in sys.argv: |
106 funcs = { | 109 funcs = { |
107 'run': None, | 110 'run': None, |
108 'compile_targets': main_compile_targets, | 111 'compile_targets': main_compile_targets, |
109 } | 112 } |
110 sys.exit(common.run_script(sys.argv[1:], funcs)) | 113 sys.exit(common.run_script(sys.argv[1:], funcs)) |
111 sys.exit(main()) | 114 sys.exit(main()) |
OLD | NEW |