OLD | NEW |
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 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 """Provides an interface to communicate with the device via the adb command. | 5 """Provides an interface to communicate with the device via the adb command. |
6 | 6 |
7 Assumes adb binary is currently on system path. | 7 Assumes adb binary is currently on system path. |
8 """ | 8 """ |
9 | 9 |
10 import collections | 10 import collections |
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
312 | 312 |
313 logging.info('>>> $' + install_command) | 313 logging.info('>>> $' + install_command) |
314 return self._adb.SendCommand(install_command, timeout_time=2*60) | 314 return self._adb.SendCommand(install_command, timeout_time=2*60) |
315 | 315 |
316 def MakeSystemFolderWritable(self): | 316 def MakeSystemFolderWritable(self): |
317 """Remounts the /system folder rw. """ | 317 """Remounts the /system folder rw. """ |
318 out = self._adb.SendCommand('remount') | 318 out = self._adb.SendCommand('remount') |
319 if out.strip() != 'remount succeeded': | 319 if out.strip() != 'remount succeeded': |
320 raise errors.MsgException('Remount failed: %s' % out) | 320 raise errors.MsgException('Remount failed: %s' % out) |
321 | 321 |
| 322 def WaitForSdCardReady(self, timeout_time): |
| 323 """Wait for the SD card ready before pushing data into it.""" |
| 324 logging.info('Waiting for SD card ready...') |
| 325 sdcard_ready = False |
| 326 attempts = 0 |
| 327 wait_period = 5 |
| 328 while not sdcard_ready and attempts * wait_period < timeout_time: |
| 329 output = self.RunShellCommand('ls /sdcard/') |
| 330 if len(output) > 0: |
| 331 sdcard_ready = True |
| 332 else: |
| 333 time.sleep(wait_period) |
| 334 attempts += 1 |
| 335 if not sdcard_ready: |
| 336 raise errors.WaitForResponseTimedOutError( |
| 337 'SD card not ready after %s seconds' % timeout_time) |
| 338 |
322 # It is tempting to turn this function into a generator, however this is not | 339 # It is tempting to turn this function into a generator, however this is not |
323 # possible without using a private (local) adb_shell instance (to ensure no | 340 # possible without using a private (local) adb_shell instance (to ensure no |
324 # other command interleaves usage of it), which would defeat the main aim of | 341 # other command interleaves usage of it), which would defeat the main aim of |
325 # being able to reuse the adb shell instance across commands. | 342 # being able to reuse the adb shell instance across commands. |
326 def RunShellCommand(self, command, timeout_time=20, log_result=True): | 343 def RunShellCommand(self, command, timeout_time=20, log_result=True): |
327 """Send a command to the adb shell and return the result. | 344 """Send a command to the adb shell and return the result. |
328 | 345 |
329 Args: | 346 Args: |
330 command: String containing the shell command to send. Must not include | 347 command: String containing the shell command to send. Must not include |
331 the single quotes as we use them to escape the whole command. | 348 the single quotes as we use them to escape the whole command. |
(...skipping 500 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
832 pid_list = self.ExtractPid(package) | 849 pid_list = self.ExtractPid(package) |
833 smaps = collections.defaultdict(dict) | 850 smaps = collections.defaultdict(dict) |
834 | 851 |
835 for pid in pid_list: | 852 for pid in pid_list: |
836 usage_dict_per_pid, smaps_per_pid = self.GetMemoryUsageForPid(pid) | 853 usage_dict_per_pid, smaps_per_pid = self.GetMemoryUsageForPid(pid) |
837 smaps[pid] = smaps_per_pid | 854 smaps[pid] = smaps_per_pid |
838 for (key, value) in usage_dict_per_pid.items(): | 855 for (key, value) in usage_dict_per_pid.items(): |
839 usage_dict[key] += value | 856 usage_dict[key] += value |
840 | 857 |
841 return usage_dict, smaps | 858 return usage_dict, smaps |
OLD | NEW |