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

Unified Diff: chrome/browser/android/offline_pages/evaluation/run_offline_page_evaluation_test.py

Issue 2465303003: [Offline Pages] Script for running evaluation tests. (Closed)
Patch Set: fix build. Created 4 years, 1 month 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 | « chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/OfflinePageSavePageLaterEvaluationTest.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/android/offline_pages/evaluation/run_offline_page_evaluation_test.py
diff --git a/chrome/browser/android/offline_pages/evaluation/run_offline_page_evaluation_test.py b/chrome/browser/android/offline_pages/evaluation/run_offline_page_evaluation_test.py
new file mode 100755
index 0000000000000000000000000000000000000000..340ecf9040048c88dfa002d7e964c30bae22251d
--- /dev/null
+++ b/chrome/browser/android/offline_pages/evaluation/run_offline_page_evaluation_test.py
@@ -0,0 +1,156 @@
+#!/usr/bin/env python
+#
+# Copyright (c) 2016 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 is used to run OfflinePageSavePageLaterEvaluationTests.
+# The test will try to call SavePageLater on the list provided as the input,
+# and generate results of the background offlining. Then it will pull the
+# results to the output directory.
+#
+# Example Steps:
+# 1. Build chrome_public_test_apk
+# 2. Prepare a list of urls.
+# 3. Run the script
+# run_offline_page_evaluation_test.py --output-directory
+# ~/offline_eval_short_output/ --url-timeout 150 --user-requested=true
+# --use-test-scheduler=true $CHROME_SRC/out/Default ~/offline_eval_urls.txt
+# 4. Check the results in the output directory.
+
+import argparse
+import os
+import shutil
+import subprocess
+import sys
+
+DEFAULT_URL_TIMEOUT = 60 * 8
+DEFAULT_USER_REQUEST = True
+DEFAULT_USE_TEST_SCHEDULER = False
+DEFAULT_VERBOSE = False
+CONFIG_FILENAME = 'test_config'
+CONFIG_TEMPLATE = """\
+TimeoutPerUrlInSeconds = {timeout_per_url_in_seconds}
+IsUserRequested = {is_user_requested}
+UseTestScheduler = {use_test_scheduler}
+"""
+
+
+def main(args):
+ # Setting up the argument parser.
+ parser = argparse.ArgumentParser()
+ parser.add_argument(
+ '--output-directory',
+ dest='output_dir',
+ help='Directory for output. Default is ~/offline_eval_output/')
+ parser.add_argument(
+ '--url-timeout',
+ type=int,
+ dest='url_timeout',
+ help='Time out per url, in seconds. Default is 480 seconds.')
+ parser.add_argument(
+ '--user-requested',
+ dest='user_request',
+ action='store_true',
+ help='Testing as user-requested urls. Default option.')
+ parser.add_argument(
+ '--not-user-requested',
+ dest='user_request',
+ action='store_false',
+ help='Testing as not user-requested urls.')
+ parser.add_argument(
+ '--use-test-scheduler',
+ dest='use_test_scheduler',
+ action='store_true',
+ help='Use test scheduler to avoid real scheduling')
+ parser.add_argument(
+ '--not-use-test-scheduler',
+ dest='use_test_scheduler',
+ action='store_false',
+ help='Use GCMNetworkManager for scheduling. Default option.')
+ parser.add_argument(
+ '-v',
+ '--verbose',
+ dest='verbose',
+ action='store_true',
+ help='Make test runner verbose.')
+ parser.add_argument('build_output_dir', help='Path to build directory.')
+ parser.add_argument(
+ 'test_urls_file', help='Path to input file with urls to be tested.')
+ parser.set_defaults(
+ output_dir=os.path.expanduser('~/offline_eval_output'),
+ url_timeout=DEFAULT_URL_TIMEOUT,
+ user_request=DEFAULT_USER_REQUEST,
+ user_test_scheduler=DEFAULT_USE_TEST_SCHEDULER,
+ verbose=DEFAULT_VERBOSE)
+
+ # Get the arguments and several paths.
+ options, extra_args = parser.parse_known_args(args)
+
+ if extra_args:
+ print 'Unknown args: ' + ', '.join(
+ extra_args) + '. Please check and run again.'
+ return
+
+ build_dir_path = os.path.abspath(
+ os.path.join(os.getcwd(), options.build_output_dir))
+ test_runner_path = os.path.join(build_dir_path,
+ 'bin/run_chrome_public_test_apk')
+ config_output_path = os.path.join(options.output_dir, CONFIG_FILENAME)
+ external_dir = subprocess.check_output(
+ ['adb', 'shell', 'echo', '$EXTERNAL_STORAGE']).strip()
+
+ # Create the output directory for results, and have a copy of test config
+ # there.
+ if not os.path.exists(options.output_dir):
+ print 'Creating output directory for results... ' + options.output_dir
+ os.makedirs(options.output_dir)
+ with open(config_output_path, 'w') as config:
+ config.write(
+ CONFIG_TEMPLATE.format(
+ timeout_per_url_in_seconds=options.url_timeout,
+ is_user_requested=options.user_request,
+ use_test_scheduler=options.use_test_scheduler))
+
+ print 'Uploading config file and input file onto the device.'
+ subprocess.call([
+ 'adb', 'push', config_output_path, external_dir + '/paquete/test_config'
+ ])
+ subprocess.call([
+ 'adb', 'push', options.test_urls_file,
+ '/sdcard/paquete/offline_eval_urls.txt'
+ ])
+ print 'Start running test...'
+
+ # Run test
+ test_runner_cmd = [
+ test_runner_path, '-f',
+ 'OfflinePageSavePageLaterEvaluationTest.testFailureRateWithTimeout'
+ ]
+ if options.verbose:
+ test_runner_cmd += ['-v']
+ subprocess.call(test_runner_cmd)
+
+ print 'Fetching results from device...'
+ archive_dir = os.path.join(options.output_dir, 'archives/')
+ if os.path.exists(archive_dir):
+ shutil.rmtree(archive_dir)
+ subprocess.call(['adb', 'root'])
+ subprocess.call([
+ 'adb', 'pull', '/data/data/org.chromium.chrome/app_chrome/'
+ 'Default/Offline Pages/archives', archive_dir
+ ])
+ subprocess.call([
+ 'adb', 'pull', external_dir + '/paquete/offline_eval_results.txt',
+ options.output_dir
+ ])
+ subprocess.call([
+ 'adb', 'pull', external_dir + '/paquete/offline_eval_logs.txt',
+ options.output_dir
+ ])
+ print 'Test finished!'
+
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv[1:]))
« no previous file with comments | « chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/OfflinePageSavePageLaterEvaluationTest.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698