def __init__(self, sources=None, dm_type='adb', host=None, device_serial=None, **kwargs): B2GVersion.__init__(self, sources, **kwargs) if dm_type == 'adb': dm = mozdevice.DeviceManagerADB(deviceSerial=device_serial) elif dm_type == 'sut': if not host: raise Exception('A host for SUT must be supplied.') dm = mozdevice.DeviceManagerSUT(host=host) else: raise Exception('Unknown device manager type: %s' % dm_type) if not sources: path = 'system/sources.xml' if dm.fileExists(path): sources = StringIO(dm.pullFile(path)) else: self.info('Unable to find %s' % path) tempdir = tempfile.mkdtemp() for ini in ('application', 'platform'): with open(os.path.join(tempdir, '%s.ini' % ini), 'w') as f: f.write(dm.pullFile('/system/b2g/%s.ini' % ini)) f.flush() self.get_gecko_info(tempdir) mozfile.remove(tempdir) for path in ['/system/b2g', '/data/local']: path += '/webapps/settings.gaiamobile.org/application.zip' if dm.fileExists(path): with tempfile.NamedTemporaryFile() as f: dm.getFile(path, f.name) self.get_gaia_info(f) break else: self.warn('Error pulling gaia file') build_props = dm.pullFile('/system/build.prop') desired_props = { 'ro.build.version.incremental': 'device_firmware_version_incremental', 'ro.build.version.release': 'device_firmware_version_release', 'ro.build.date.utc': 'device_firmware_date', 'ro.product.device': 'device_id' } for line in build_props.split('\n'): if not line.strip().startswith('#') and '=' in line: key, value = [s.strip() for s in line.split('=', 1)] if key in desired_props.keys(): self._info[desired_props[key]] = value if self._info['device_id'].lower() == 'flame': self._info['device_firmware_version_base'] = dm._runCmd( ['shell', 'getprop', 't2m.sw.version']).output[0]
def get_device_manager(self, *args, **kwargs): if not self._device_manager: dm_type = os.environ.get('DM_TRANS', 'adb') if dm_type == 'adb': self._device_manager = mozdevice.DeviceManagerADB(**kwargs) elif dm_type == 'sut': host = os.environ.get('TEST_DEVICE') if not host: raise Exception('Must specify host with SUT!') self._device_manager = mozdevice.DeviceManagerSUT(host=host) else: raise Exception('Unknown device manager type: %s' % dm_type) return self._device_manager
def get_dm(marionette=None,**kwargs): dm_type = os.environ.get('DM_TRANS', 'adb') if marionette and hasattr(marionette.runner, 'device'): return marionette.runner.app_ctx.dm elif marionette and marionette.device_serial and dm_type == 'adb': return mozdevice.DeviceManagerADB(deviceSerial=marionette.device_serial, **kwargs) else: if dm_type == 'adb': return mozdevice.DeviceManagerADB(**kwargs) elif dm_type == 'sut': host = os.environ.get('TEST_DEVICE') if not host: raise Exception('Must specify host with SUT!') return mozdevice.DeviceManagerSUT(host=host) else: raise Exception('Unknown device manager type: %s' % dm_type)
def device_manager(self): if not self.is_android_build: raise Exception('Device manager is only available for devices.') if hasattr(self, '_device_manager') and self._device_manager: return self._device_manager else: dm_type = os.environ.get('DM_TRANS', 'adb') if dm_type == 'adb': self._device_manager = mozdevice.DeviceManagerADB() elif dm_type == 'sut': host = os.environ.get('TEST_DEVICE') if not host: raise Exception('Must specify host with SUT!') self._device_manager = mozdevice.DeviceManagerSUT(host=host) else: raise Exception('Unknown device manager type: %s' % dm_type) return self._device_manager
def get_dm(marionette=None, **kwargs): dm_type = os.environ.get('DM_TRANS', 'adb') if marionette and marionette.emulator: adb_path = marionette.emulator.b2g.adb_path return mozdevice.DeviceManagerADB(adbPath=adb_path, deviceSerial='emulator-%d' % marionette.emulator.port, **kwargs) elif marionette and marionette.device_serial and dm_type == 'adb': return mozdevice.DeviceManagerADB( deviceSerial=marionette.device_serial, **kwargs) else: if dm_type == 'adb': return mozdevice.DeviceManagerADB(**kwargs) elif dm_type == 'sut': host = os.environ.get('TEST_DEVICE') if not host: raise Exception('Must specify host with SUT!') return mozdevice.DeviceManagerSUT(host=host) else: raise Exception('Unknown device manager type: %s' % dm_type)
def __init__(self, sources=None, dm_type='adb', host=None, device_serial=None, adb_host=None, adb_port=None, **kwargs): B2GVersion.__init__(self, sources, **kwargs) try: import mozdevice except ImportError: self._logger.critical("mozdevice is required to get the version" " of a remote device") raise if dm_type == 'adb': dm = mozdevice.DeviceManagerADB(deviceSerial=device_serial, serverHost=adb_host, serverPort=adb_port) elif dm_type == 'sut': if not host: raise errors.RemoteAppNotFoundError( 'A host for SUT must be supplied.') dm = mozdevice.DeviceManagerSUT(host=host) else: raise errors.RemoteAppNotFoundError( 'Unknown device manager type: %s' % dm_type) if not sources: path = 'system/sources.xml' if dm.fileExists(path): sources = StringIO(dm.pullFile(path)) else: self._logger.info('Unable to find %s' % path) tempdir = tempfile.mkdtemp() for ini in ('application', 'platform'): with open(os.path.join(tempdir, '%s.ini' % ini), 'w') as f: f.write(dm.pullFile('/system/b2g/%s.ini' % ini)) f.flush() self.get_goanna_info(tempdir) mozfile.remove(tempdir) for path in ['/system/b2g', '/data/local']: path += '/webapps/settings.gaiamobile.org/application.zip' if dm.fileExists(path): with tempfile.NamedTemporaryFile() as f: dm.getFile(path, f.name) self.get_gaia_info(f) break else: self._logger.warning('Error pulling gaia file') build_props = dm.pullFile('/system/build.prop') desired_props = { 'ro.build.version.incremental': 'device_firmware_version_incremental', 'ro.build.version.release': 'device_firmware_version_release', 'ro.build.date.utc': 'device_firmware_date', 'ro.product.device': 'device_id' } for line in build_props.split('\n'): if not line.strip().startswith('#') and '=' in line: key, value = [s.strip() for s in line.split('=', 1)] if key in desired_props.keys(): self._info[desired_props[key]] = value if self._info.get('device_id', '').lower() == 'flame': for prop in ['ro.boot.bootloader', 't2m.sw.version']: value = dm.shellCheckOutput(['getprop', prop]) if value: self._info['device_firmware_version_base'] = value break