| :mod:`mozdevice` --- Interact with remote devices | |
| ================================================= | |
| Mozdevice provides several interfaces to interact with a remote device | |
| such as an Android- or FirefoxOS-based phone. It allows you to push | |
| files to these types of devices, launch processes, and more. There are | |
| currently two available interfaces: | |
| * :ref:`DeviceManager`: Works either via ADB or a custom TCP protocol | |
| (the latter requires an agent application running on the device). | |
| * :ref:`ADB`: Uses the Android Debugger Protocol explicitly | |
| In general, new code should use the ADB abstraction where possible as | |
| it is simpler and more reliable. | |
| .. automodule:: mozdevice | |
| .. _DeviceManager: | |
| DeviceManager interface | |
| ----------------------- | |
| .. autoclass:: DeviceManager | |
| Here's an example script which lists the files in '/mnt/sdcard' and sees if a | |
| process called 'org.mozilla.fennec' is running. In this example, we're | |
| instantiating the DeviceManagerADB implementation, but we could just | |
| as easily have used DeviceManagerSUT (assuming the device had an agent | |
| running speaking the SUT protocol). | |
| :: | |
| import mozdevice | |
| dm = mozdevice.DeviceManagerADB() | |
| print dm.listFiles("/mnt/sdcard") | |
| if dm.processExist("org.mozilla.fennec"): | |
| print "Fennec is running" | |
| Informational methods | |
| ````````````````````` | |
| .. automethod:: DeviceManager.getInfo(self, directive=None) | |
| .. automethod:: DeviceManager.getCurrentTime(self) | |
| .. automethod:: DeviceManager.getIP | |
| .. automethod:: DeviceManager.saveScreenshot | |
| .. automethod:: DeviceManager.recordLogcat | |
| .. automethod:: DeviceManager.getLogcat | |
| File management methods | |
| ``````````````````````` | |
| .. autoattribute:: DeviceManager.deviceRoot | |
| .. automethod:: DeviceManager.getDeviceRoot(self) | |
| .. automethod:: DeviceManager.pushFile(self, localFilename, remoteFilename, retryLimit=1) | |
| .. automethod:: DeviceManager.pushDir(self, localDirname, remoteDirname, retryLimit=1) | |
| .. automethod:: DeviceManager.pullFile(self, remoteFilename) | |
| .. automethod:: DeviceManager.getFile(self, remoteFilename, localFilename) | |
| .. automethod:: DeviceManager.getDirectory(self, remoteDirname, localDirname, checkDir=True) | |
| .. automethod:: DeviceManager.validateFile(self, remoteFilename, localFilename) | |
| .. automethod:: DeviceManager.mkDir(self, remoteDirname) | |
| .. automethod:: DeviceManager.mkDirs(self, filename) | |
| .. automethod:: DeviceManager.dirExists(self, dirpath) | |
| .. automethod:: DeviceManager.fileExists(self, filepath) | |
| .. automethod:: DeviceManager.listFiles(self, rootdir) | |
| .. automethod:: DeviceManager.removeFile(self, filename) | |
| .. automethod:: DeviceManager.removeDir(self, remoteDirname) | |
| .. automethod:: DeviceManager.chmodDir(self, remoteDirname, mask="777") | |
| .. automethod:: DeviceManager.getTempDir(self) | |
| Process management methods | |
| `````````````````````````` | |
| .. automethod:: DeviceManager.shell(self, cmd, outputfile, env=None, cwd=None, timeout=None, root=False) | |
| .. automethod:: DeviceManager.shellCheckOutput(self, cmd, env=None, cwd=None, timeout=None, root=False) | |
| .. automethod:: DeviceManager.getProcessList(self) | |
| .. automethod:: DeviceManager.processExist(self, processName) | |
| .. automethod:: DeviceManager.killProcess(self, processName) | |
| System control methods | |
| `````````````````````` | |
| .. automethod:: DeviceManager.reboot(self, ipAddr=None, port=30000) | |
| Application management methods | |
| `````````````````````````````` | |
| .. automethod:: DeviceManager.uninstallAppAndReboot(self, appName, installPath=None) | |
| .. automethod:: DeviceManager.installApp(self, appBundlePath, destPath=None) | |
| .. automethod:: DeviceManager.uninstallApp(self, appName, installPath=None) | |
| .. automethod:: DeviceManager.updateApp(self, appBundlePath, processName=None, destPath=None, ipAddr=None, port=30000) | |
| DeviceManagerADB implementation | |
| ``````````````````````````````` | |
| .. autoclass:: mozdevice.DeviceManagerADB | |
| DeviceManagerADB has several methods that are not present in all | |
| DeviceManager implementations. Please do not use them in code that | |
| is meant to be interoperable. | |
| .. automethod:: DeviceManagerADB.forward | |
| .. automethod:: DeviceManagerADB.remount | |
| .. automethod:: DeviceManagerADB.devices | |
| DeviceManagerSUT implementation | |
| ``````````````````````````````` | |
| .. autoclass:: mozdevice.DeviceManagerSUT | |
| DeviceManagerSUT has several methods that are only used in specific | |
| tests and are not present in all DeviceManager implementations. Please | |
| do not use them in code that is meant to be interoperable. | |
| .. automethod:: DeviceManagerSUT.unpackFile | |
| .. automethod:: DeviceManagerSUT.adjustResolution | |
| Android extensions | |
| `````````````````` | |
| For Android, we provide two variants of the `DeviceManager` interface | |
| with extensions useful for that platform. These classes are called | |
| DroidADB and DroidSUT. They inherit all methods from DeviceManagerADB | |
| and DeviceManagerSUT. Here is the interface for DroidADB: | |
| .. automethod:: mozdevice.DroidADB.launchApplication | |
| .. automethod:: mozdevice.DroidADB.launchFennec | |
| .. automethod:: mozdevice.DroidADB.getInstalledApps | |
| .. automethod:: mozdevice.DroidADB.getAppRoot | |
| These methods are also found in the DroidSUT class. | |
| .. _ADB: | |
| ADB Interface | |
| ------------- | |
| The following classes provide a basic interface to interact with the | |
| Android Debug Tool (adb) and Android-based devices. It is intended to | |
| provide the basis for a replacement for DeviceManager and | |
| DeviceManagerADB. | |
| ADBCommand | |
| `````````` | |
| .. autoclass:: mozdevice.ADBCommand | |
| .. automethod:: ADBCommand.command(self, cmds, timeout=None) | |
| .. automethod:: ADBCommand.command_output(self, cmds, timeout=None) | |
| ADBHost | |
| ``````` | |
| .. autoclass:: mozdevice.ADBHost | |
| .. automethod:: ADBHost.command(self, cmds, timeout=None) | |
| .. automethod:: ADBHost.command_output(self, cmds, timeout=None) | |
| .. automethod:: ADBHost.start_server(self, timeout=None) | |
| .. automethod:: ADBHost.kill_server(self, timeout=None) | |
| .. automethod:: ADBHost.devices(self, timeout=None) | |
| ADBDevice | |
| ````````` | |
| .. autoclass:: mozdevice.ADBDevice | |
| Host Command methods | |
| ++++++++++++++++++++ | |
| .. automethod:: ADBDevice.command(self, cmds, timeout=None) | |
| .. automethod:: ADBDevice.command_output(self, cmds, timeout=None) | |
| Device Shell methods | |
| ++++++++++++++++++++ | |
| .. automethod:: ADBDevice.shell(self, cmd, env=None, cwd=None, timeout=None, root=False) | |
| .. automethod:: ADBDevice.shell_bool(self, cmd, env=None, cwd=None, timeout=None, root=False) | |
| .. automethod:: ADBDevice.shell_output(self, cmd, env=None, cwd=None, timeout=None, root=False) | |
| Informational methods | |
| +++++++++++++++++++++ | |
| .. automethod:: ADBDevice.clear_logcat | |
| .. automethod:: ADBDevice.get_battery_percentage | |
| .. automethod:: ADBDevice.get_info | |
| .. automethod:: ADBDevice.get_logcat | |
| .. automethod:: ADBDevice.get_prop | |
| .. automethod:: ADBDevice.get_state | |
| System control methods | |
| ++++++++++++++++++++++ | |
| .. automethod:: ADBDevice.is_device_ready | |
| .. automethod:: ADBDevice.reboot | |
| File management methods | |
| +++++++++++++++++++++++ | |
| .. automethod:: ADBDevice.chmod | |
| .. automethod:: ADBDevice.cp | |
| .. automethod:: ADBDevice.exists | |
| .. automethod:: ADBDevice.is_dir | |
| .. automethod:: ADBDevice.is_file | |
| .. automethod:: ADBDevice.list_files | |
| .. automethod:: ADBDevice.mkdir | |
| .. automethod:: ADBDevice.mv | |
| .. automethod:: ADBDevice.push | |
| .. automethod:: ADBDevice.rm | |
| .. automethod:: ADBDevice.rmdir | |
| .. autoattribute:: ADBDevice.test_root | |
| Process management methods | |
| ++++++++++++++++++++++++++ | |
| .. automethod:: ADBDevice.get_process_list | |
| .. automethod:: ADBDevice.kill | |
| .. automethod:: ADBDevice.pkill | |
| .. automethod:: ADBDevice.process_exist | |
| ADBAndroid | |
| `````````` | |
| .. autoclass:: ADBAndroid | |
| Informational methods | |
| +++++++++++++++++++++ | |
| .. automethod:: ADBAndroid.get_battery_percentage | |
| System control methods | |
| ++++++++++++++++++++++ | |
| .. automethod:: ADBAndroid.is_device_ready | |
| .. automethod:: ADBAndroid.power_on | |
| Application management methods | |
| ++++++++++++++++++++++++++++++ | |
| .. automethod:: ADBAndroid.install_app | |
| .. automethod:: ADBAndroid.is_app_installed | |
| .. automethod:: ADBAndroid.launch_application | |
| .. automethod:: ADBAndroid.launch_fennec | |
| .. automethod:: ADBAndroid.stop_application | |
| .. automethod:: ADBAndroid.uninstall_app | |
| .. automethod:: ADBAndroid.update_app | |
| ADBB2G | |
| `````` | |
| .. autoclass:: ADBB2G | |
| Informational methods | |
| +++++++++++++++++++++ | |
| .. automethod:: ADBB2G.get_battery_percentage | |
| .. automethod:: ADBB2G.get_info | |
| .. automethod:: ADBB2G.get_memory_total | |
| ADBProcess | |
| `````````` | |
| .. autoclass:: mozdevice.ADBProcess | |
| ADBError | |
| ```````` | |
| .. autoexception:: mozdevice.ADBError | |
| ADBRootError | |
| ```````````` | |
| .. autoexception:: mozdevice.ADBRootError | |
| ADBTimeoutError | |
| ``````````````` | |
| .. autoexception:: mozdevice.ADBTimeoutError | |