| #!/usr/bin/env python |
| # Copyright 2018 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. |
| |
| """This script runs an automated Cronet native performance benchmark. |
| |
| This script: |
| 1. Starts HTTP and QUIC servers on the host machine. |
| 2. Runs benchmark executable. |
| |
| Prerequisites: |
| 1. quic_server and cronet_native_perf_test have been built for the host machine, |
| e.g. via: |
| gn gen out/Release --args="is_debug=false" |
| ninja -C out/Release quic_server cronet_native_perf_test |
| 2. sudo apt-get install lighttpd |
| |
| Invocation: |
| ./run.py |
| |
| Output: |
| Benchmark timings are output to /tmp/cronet_perf_test_results.txt |
| |
| """ |
| |
| import json |
| import os |
| import shutil |
| import sys |
| import tempfile |
| |
| REPOSITORY_ROOT = os.path.abspath(os.path.join( |
| os.path.dirname(__file__), '..', '..', '..', '..')) |
| |
| sys.path.append(os.path.join(REPOSITORY_ROOT, 'build', 'android')) |
| import lighttpd_server |
| sys.path.append(os.path.join(REPOSITORY_ROOT, 'components', 'cronet', 'tools')) |
| import perf_test_utils |
| |
| def main(): |
| device = perf_test_utils.NativeDevice() |
| # Start HTTP server. |
| http_server_doc_root = perf_test_utils.GenerateHttpTestResources() |
| config_file = tempfile.NamedTemporaryFile() |
| http_server = lighttpd_server.LighttpdServer(http_server_doc_root, |
| port=perf_test_utils.HTTP_PORT, base_config_path=config_file.name) |
| perf_test_utils.GenerateLighttpdConfig(config_file, http_server_doc_root, |
| http_server) |
| assert http_server.StartupHttpServer() |
| config_file.close() |
| # Start QUIC server. |
| quic_server_doc_root = perf_test_utils.GenerateQuicTestResources(device) |
| quic_server = perf_test_utils.QuicServer(quic_server_doc_root) |
| quic_server.StartupQuicServer(device) |
| # Run test |
| os.environ['LD_LIBRARY_PATH'] = perf_test_utils.BUILD_DIR |
| device.RunShellCommand( |
| [os.path.join(perf_test_utils.BUILD_DIR, 'cronet_native_perf_test'), |
| json.dumps(perf_test_utils.GetConfig(device))], |
| check_return=True) |
| # Shutdown. |
| quic_server.ShutdownQuicServer() |
| shutil.rmtree(quic_server_doc_root) |
| http_server.ShutdownHttpServer() |
| shutil.rmtree(http_server_doc_root) |
| |
| |
| if __name__ == '__main__': |
| main() |
| |