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

Side by Side Diff: build/android/pylib/device/device_utils.py

Issue 285143002: [Android] Convert to DeviceUtils versions of IsOnline, HasRoot, and EnableRoot. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 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
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """ 5 """
6 Provides a variety of device interactions based on adb. 6 Provides a variety of device interactions based on adb.
7 7
8 Eventually, this will be based on adb_wrapper. 8 Eventually, this will be based on adb_wrapper.
9 """ 9 """
10 # pylint: disable=W0613 10 # pylint: disable=W0613
11 11
12 import multiprocessing 12 import multiprocessing
13 import os 13 import os
14 import sys 14 import sys
15 15
16 import pylib.android_commands 16 import pylib.android_commands
17 from pylib.device import adb_wrapper 17 from pylib.device import adb_wrapper
18 from pylib.device import decorators 18 from pylib.device import decorators
19 from pylib.device import device_errors
19 20
20 CHROME_SRC_DIR = os.path.abspath( 21 CHROME_SRC_DIR = os.path.abspath(
21 os.path.join(os.path.dirname(__file__), '..', '..', '..', '..')) 22 os.path.join(os.path.dirname(__file__), '..', '..', '..', '..'))
22 sys.path.append(os.path.join( 23 sys.path.append(os.path.join(
23 CHROME_SRC_DIR, 'third_party', 'android_testrunner')) 24 CHROME_SRC_DIR, 'third_party', 'android_testrunner'))
24 import errors 25 import errors
25 26
26 _DEFAULT_TIMEOUT = 30 27 _DEFAULT_TIMEOUT = 30
27 _DEFAULT_RETRIES = 3 28 _DEFAULT_RETRIES = 3
28 29
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 """ Restarts the adb server. 72 """ Restarts the adb server.
72 73
73 Raises: 74 Raises:
74 CommandFailedError if we fail to kill or restart the server. 75 CommandFailedError if we fail to kill or restart the server.
75 """ 76 """
76 pylib.android_commands.AndroidCommands().RestartAdbServer() 77 pylib.android_commands.AndroidCommands().RestartAdbServer()
77 78
78 79
79 class DeviceUtils(object): 80 class DeviceUtils(object):
80 81
81 def __init__(self, device): 82 def __init__(self, device, default_timeout=_DEFAULT_TIMEOUT,
83 default_retries=_DEFAULT_RETRIES):
84 """ DeviceUtils constructor.
85
86 Args:
87 device: Either a device serial, an existing AdbWrapper instance, an
88 an existing AndroidCommands instance, or nothing.
89 default_timeout: An integer containing the default number of seconds to
90 wait for an operation to complete if no explicit value
91 is provided.
92 default_retries: An integer containing the default number or times an
93 operation should be retried on failure if no explicit
94 value is provided.
95 """
82 self.old_interface = None 96 self.old_interface = None
83 if isinstance(device, basestring): 97 if isinstance(device, basestring):
84 self.old_interface = pylib.android_commands.AndroidCommands(device) 98 self.old_interface = pylib.android_commands.AndroidCommands(device)
85 elif isinstance(device, adb_wrapper.AdbWrapper): 99 elif isinstance(device, adb_wrapper.AdbWrapper):
86 self.old_interface = pylib.android_commands.AndroidCommands(str(device)) 100 self.old_interface = pylib.android_commands.AndroidCommands(str(device))
87 elif isinstance(device, pylib.android_commands.AndroidCommands): 101 elif isinstance(device, pylib.android_commands.AndroidCommands):
88 self.old_interface = device 102 self.old_interface = device
89 elif not device: 103 elif not device:
90 self.old_interface = pylib.android_commands.AndroidCommands() 104 self.old_interface = pylib.android_commands.AndroidCommands()
105 else:
106 raise ValueError('Unsupported type passed for argument "device"')
107 self._default_timeout = default_timeout
108 self._default_retries = default_retries
91 109
110 @decorators.WithTimeoutAndRetriesFromInstance(
111 '_default_timeout', '_default_retries')
112 def IsOnline(self, timeout=None, retries=None):
113 """ Checks whether the device is online.
114
115 Args:
116 timeout: An integer containing the number of seconds to wait for the
frankf 2014/05/15 01:27:59 DRY applies to docstrings as well ;)
jbudorick 2014/05/15 05:03:54 "An integer containing the seconds to wait ...?" I
frankf 2014/05/15 17:40:08 To clarify, you've repeated the same Args section
117 operation to complete.
118 retries: An integer containing the number of times the operation should
119 be retried if it fails.
120 Returns:
121 True if the device is online, False otherwise.
122 """
123 return self.old_interface.IsOnline()
124
125 @decorators.WithTimeoutAndRetriesFromInstance(
126 '_default_timeout', '_default_retries')
127 def HasRoot(self, timeout=None, retries=None):
128 """ Checks whether or not adbd has root priveleges.
frankf 2014/05/15 01:27:59 typo
129
130 Args:
131 timeout: An integer containing the number of seconds to wait for the
132 operation to complete.
133 retries: An integer containing the number of times the operation should
134 be retried if it fails.
135 Returns:
136 True if adbd has root priveleges, False otherwise.
137 """
138 return self.old_interface.IsRootEnabled()
139
140 @decorators.WithTimeoutAndRetriesFromInstance(
141 '_default_timeout', '_default_retries')
142 def EnableRoot(self, timeout=None, retries=None):
143 """ Restarts adbd with root priveleges.
144
145 Args:
146 timeout: An integer containing the number of seconds to wait for the
147 operation to complete.
148 retries: An integer containing the number of times the operation should
149 be retried if it fails.
150 Raises:
151 CommandFailedError if root could not be enabled.
152 """
153 if not self.old_interface.EnableAdbRoot():
frankf 2014/05/15 01:27:59 Why can't you inline EnableAdbRoot here?
jbudorick 2014/05/15 05:03:54 What exactly do you mean by "inline" in a python c
frankf 2014/05/15 17:40:08 Yes, otherwise you would to do another pass to mov
154 raise device_errors.CommandFailedError(
155 'adb root', 'Could not enable root.')
156
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698