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

Side by Side Diff: build/android/update_verification.py

Issue 1143073006: [Android] Add workaround to update verification script for Mac. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed jbudorick's nits. Added exception if no device is found. Created 5 years, 7 months 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # 2 #
3 # Copyright 2013 The Chromium Authors. All rights reserved. 3 # Copyright 2013 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 """Runs semi-automated update testing on a non-rooted device. 7 """Runs semi-automated update testing on a non-rooted device.
8 8
9 This script will help verify that app data is preserved during an update. 9 This script will help verify that app data is preserved during an update.
10 To use this script first run it with the create_app_data option. 10 To use this script first run it with the create_app_data option.
(...skipping 13 matching lines...) Expand all
24 and ask the user to verify that all of the app data was preserved. 24 and ask the user to verify that all of the app data was preserved.
25 """ 25 """
26 26
27 import argparse 27 import argparse
28 import logging 28 import logging
29 import os 29 import os
30 import sys 30 import sys
31 import time 31 import time
32 32
33 from pylib import constants 33 from pylib import constants
34 from pylib.device import device_errors
34 from pylib.device import device_utils 35 from pylib.device import device_utils
35 from pylib.utils import apk_helper 36 from pylib.utils import apk_helper
36 from pylib.utils import run_tests_helper 37 from pylib.utils import run_tests_helper
37 38
38 def CreateAppData(device, old_apk, app_data): 39 def CreateAppData(device, old_apk, app_data, package_name):
39 device.Install(old_apk) 40 device.Install(old_apk)
40 raw_input('Set the application state. Once ready, press enter and ' 41 raw_input('Set the application state. Once ready, press enter and '
41 'select "Backup my data" on the device.') 42 'select "Backup my data" on the device.')
42 package_name = apk_helper.GetPackageName(old_apk)
43 device.adb.Backup(app_data, packages=[package_name]) 43 device.adb.Backup(app_data, packages=[package_name])
44 logging.critical('Application data saved to %s' % app_data) 44 logging.critical('Application data saved to %s' % app_data)
45 45
46 def TestUpdate(device, old_apk, new_apk, app_data): 46 def TestUpdate(device, old_apk, new_apk, app_data, package_name):
47 device.Install(old_apk) 47 device.Install(old_apk)
48 device.adb.Restore(app_data) 48 device.adb.Restore(app_data)
49 # Restore command is not synchronous 49 # Restore command is not synchronous
50 raw_input('Select "Restore my data" on the device. Then press enter to ' 50 raw_input('Select "Restore my data" on the device. Then press enter to '
51 'continue.') 51 'continue.')
52
53 package_name = apk_helper.GetPackageName(new_apk)
54 device_path = device.GetApplicationPath(package_name) 52 device_path = device.GetApplicationPath(package_name)
55 if not device_path: 53 if not device_path:
56 raise Exception('Expected package %s to already be installed. ' 54 raise Exception('Expected package %s to already be installed. '
57 'Package name might have changed!' % package_name) 55 'Package name might have changed!' % package_name)
58 56
59 logging.info('Verifying that %s can be overinstalled.', new_apk) 57 logging.info('Verifying that %s can be overinstalled.', new_apk)
60 device.adb.Install(new_apk, reinstall=True) 58 device.adb.Install(new_apk, reinstall=True)
61 logging.critical('Successfully updated to the new apk. Please verify that ' 59 logging.critical('Successfully updated to the new apk. Please verify that '
62 'the application data is preserved.') 60 'the application data is preserved.')
63 61
64 def main(): 62 def main():
65 parser = argparse.ArgumentParser( 63 parser = argparse.ArgumentParser(
66 description="Script to do semi-automated upgrade testing.") 64 description="Script to do semi-automated upgrade testing.")
67 parser.add_argument('-v', '--verbose', action='count', 65 parser.add_argument('-v', '--verbose', action='count',
68 help='Print verbose log information.') 66 help='Print verbose log information.')
69 command_parsers = parser.add_subparsers(dest='command') 67 command_parsers = parser.add_subparsers(dest='command')
70 68
71 subparser = command_parsers.add_parser('create_app_data') 69 subparser = command_parsers.add_parser('create_app_data')
72 subparser.add_argument('--old-apk', required=True, 70 subparser.add_argument('--old-apk', required=True,
73 help='Path to apk to update from.') 71 help='Path to apk to update from.')
74 subparser.add_argument('--app-data', required=True, 72 subparser.add_argument('--app-data', required=True,
75 help='Path to where the app data backup should be ' 73 help='Path to where the app data backup should be '
76 'saved to.') 74 'saved to.')
75 subparser.add_argument('--package-name',
76 help='Chrome apk package name.')
77 77
78 subparser = command_parsers.add_parser('test_update') 78 subparser = command_parsers.add_parser('test_update')
79 subparser.add_argument('--old-apk', required=True, 79 subparser.add_argument('--old-apk', required=True,
80 help='Path to apk to update from.') 80 help='Path to apk to update from.')
81 subparser.add_argument('--new-apk', required=True, 81 subparser.add_argument('--new-apk', required=True,
82 help='Path to apk to update to.') 82 help='Path to apk to update to.')
83 subparser.add_argument('--app-data', required=True, 83 subparser.add_argument('--app-data', required=True,
84 help='Path to where the app data backup is saved.') 84 help='Path to where the app data backup is saved.')
85 subparser.add_argument('--package-name',
86 help='Chrome apk package name.')
85 87
86 args = parser.parse_args() 88 args = parser.parse_args()
87 run_tests_helper.SetLogLevel(args.verbose) 89 run_tests_helper.SetLogLevel(args.verbose)
88 90
89 devices = device_utils.DeviceUtils.HealthyDevices() 91 devices = device_utils.DeviceUtils.HealthyDevices()
92 if not devices:
93 raise device_errors.NoDevicesError()
90 device = devices[0] 94 device = devices[0]
91 logging.info('Using device %s for testing.' % str(device)) 95 logging.info('Using device %s for testing.' % str(device))
92 96
97 package_name = (args.package_name if args.package_name
98 else apk_helper.GetPackageName(args.old_apk))
93 if args.command == 'create_app_data': 99 if args.command == 'create_app_data':
94 CreateAppData(device, args.old_apk, args.app_data) 100 CreateAppData(device, args.old_apk, args.app_data, package_name)
95 elif args.command == 'test_update': 101 elif args.command == 'test_update':
96 TestUpdate(device, args.old_apk, args.new_apk, args.app_data) 102 TestUpdate(
103 device, args.old_apk, args.new_apk, args.app_data, package_name)
97 else: 104 else:
98 raise Exception('Unknown test command: %s' % args.command) 105 raise Exception('Unknown test command: %s' % args.command)
99 106
100 if __name__ == '__main__': 107 if __name__ == '__main__':
101 sys.exit(main()) 108 sys.exit(main())
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698