1
0
mirror of https://github.com/ARM-software/workload-automation.git synced 2025-09-02 19:32:34 +01:00

AndroidDevice: kick-off no longer requires root

kick off will now use root if the device is rooted or if manually
specified otherwise its run without root.
This commit is contained in:
Sebastian Goscik
2016-05-26 09:59:44 +01:00
parent 24a2afb5b9
commit 0d50fe9b77

View File

@@ -446,22 +446,20 @@ class AndroidDevice(BaseLinuxDevice): # pylint: disable=W0223
else: else:
return adb_shell(self.adb_name, command, timeout, check_exit_code, as_root) return adb_shell(self.adb_name, command, timeout, check_exit_code, as_root)
def kick_off(self, command, as_root=True): def kick_off(self, command, as_root=None):
""" """
Like execute but closes adb session and returns immediately, leaving the command running on the Like execute but closes adb session and returns immediately, leaving the command running on the
device (this is different from execute(background=True) which keeps adb connection open and returns device (this is different from execute(background=True) which keeps adb connection open and returns
a subprocess object). a subprocess object).
.. note:: This relies on busybox's nohup applet and so won't work on unrooted devices.
Added in version 2.1.4 Added in version 2.1.4
""" """
if not self.is_rooted or not as_root: if as_root is None:
raise DeviceError('kick_off uses busybox\'s nohup applet and so can only be run a rooted device.') as_root = self.is_rooted
try: try:
command = 'cd {} && busybox nohup {}'.format(self.working_directory, command) command = 'cd {} && {} nohup {}'.format(self.working_directory, self.busybox, command)
output = self.execute(command, timeout=1, as_root=True) output = self.execute(command, timeout=1, as_root=as_root)
except TimeoutError: except TimeoutError:
pass pass
else: else: