def reboot(dm): cwd = os.getcwd() deviceName = os.path.basename(cwd) errorFile = os.path.join(cwd, '..', 'error.flg') proxyIP = getOurIP() proxyPort = calculatePort() if 'panda' not in deviceName: # Attempt to set devicename via env variable 'SUT_NAME' sname = os.getenv('SUT_NAME') if sname.strip(): deviceName = sname.strip() else: log.info("Unable to find a proper devicename, will attempt to " "reboot device") if dm is not None: try: dm.getInfo('process') log.info( dm._runCmds([{ 'cmd': 'exec su -c "logcat -d -v time *:W"' }], timeout=10)) except: log.info("Failure trying to run logcat on device") else: log.info("We were unable to connect to device %s, skipping logcat" % deviceName) try: log.info('forcing device %s reboot' % deviceName) status = powermanagement.soft_reboot_and_verify(dm=dm, device=deviceName, ipAddr=proxyIP, port=proxyPort, silent=True) log.info(status) except: log.info("Failure while rebooting device") setFlag(errorFile, "Remote Device Error: Device failed to recover after reboot", True) return 1 sys.stdout.flush() return 0
def reboot(dm): cwd = os.getcwd() deviceName = os.path.basename(cwd) errorFile = os.path.join(cwd, '..', 'error.flg') proxyIP = getOurIP() proxyPort = calculatePort() if 'panda' not in deviceName: # Attempt to set devicename via env variable 'SUT_NAME' sname = os.getenv('SUT_NAME') if sname.strip(): deviceName = sname.strip() else: log.info("Unable to find a proper devicename, will attempt to " "reboot device") if dm is not None: try: dm.getInfo('process') log.info(dm._runCmds( [{'cmd': 'exec su -c "logcat -d -v time *:W"'}], timeout=10)) except: log.info("Failure trying to run logcat on device") else: log.info("We were unable to connect to device %s, skipping logcat" % deviceName) try: log.info('forcing device %s reboot' % deviceName) status = powermanagement.soft_reboot_and_verify( dm=dm, device=deviceName, ipAddr=proxyIP, port=proxyPort, silent=True ) log.info(status) except: log.info("Failure while rebooting device") setFlag(errorFile, "Remote Device Error: Device failed to recover after reboot", True) return 1 sys.stdout.flush() return 0
db.close() if pidFile is not None: try: eventQueue.put(('terminate',)) os.remove(pidFile) except (KeyboardInterrupt, SystemExit): raise except Exception: pass sys.exit(0) def shutdownDialback(): db.close() if __name__ == '__main__': ourIP = getOurIP() if ourIP is None: log.error('our IP address is not defined, exiting') sys.exit(1) options = loadOptions(defaultOptions) initLogs(options) options.bbpath = os.path.abspath(options.bbpath) if options.tegra is None: if 'tegra-' in ourPath.lower(): options.tegra = os.path.basename(os.path.split(ourPath)[-1]) if options.tegra is None: log.error('Tegra has not been specified, exiting')
def one_time_setup(ip_addr, major_source): """ One time setup of state ip_addr - of the tegra we want to install app at major_source - we've hacked this script to install may-also-be-needed tools, but the source we're asked to install has the meta data we need Side Effects: We two globals, needed for error reporting: errorFile, proxyFile """ # set up the flag files, used throughout cwd = os.getcwd() global proxyFile, errorFile proxyFile = os.path.join(cwd, "..", "proxy.flg") errorFile = os.path.join(cwd, "..", "error.flg") proxyIP = getOurIP() proxyPort = calculatePort() workdir = os.path.dirname(major_source) inifile = os.path.join(workdir, "fennec", "application.ini") remoteappini = os.path.join(workdir, "talos", "remoteapp.ini") print "copying %s to %s" % (inifile, remoteappini) runCommand(["cp", inifile, remoteappini]) print "connecting to: %s" % ip_addr dm = devicemanager.DeviceManagerSUT(ip_addr) # Moar data! dm.debug = 3 devRoot = checkDeviceRoot(dm) if devRoot is None or devRoot == "/tests": setFlag(errorFile, "Remote Device Error: devRoot from devicemanager [%s] is not correct - exiting" % devRoot) sys.exit(1) try: setFlag(proxyFile) print proxyIP, proxyPort getDeviceTimestamp(dm) setDeviceTimestamp(dm) getDeviceTimestamp(dm) dm.getInfo("process") dm.getInfo("memory") dm.getInfo("uptime") width, height = getResolution(dm) # adjust resolution down to allow fennec to install without memory issues if width >= 1050 or height >= 1050: dm.adjustResolution(1024, 768, "crt") print "calling reboot" dm.reboot(proxyIP, proxyPort) waitForDevice(dm) width, height = getResolution(dm) if width != 1024 and height != 768: clearFlag(proxyFile) setFlag( errorFile, "Remote Device Error: Resolution change failed. Should be %d/%d but is %d/%d" % (1024, 768, width, height), ) sys.exit(1) finally: clearFlag(proxyFile) return dm, devRoot
def one_time_setup(ip_addr, major_source): ''' One time setup of state ip_addr - of the device we want to install app at major_source - we've hacked this script to install may-also-be-needed tools, but the source we're asked to install has the meta data we need Side Effects: global, needed for error reporting: errorFile ''' # set up the flag files, used throughout cwd = os.getcwd() global errorFile errorFile = os.path.join(cwd, '..', 'error.flg') deviceName = os.path.basename(cwd) proxyIP = getOurIP() proxyPort = calculatePort() workdir = os.path.dirname(major_source) inifile = os.path.join(workdir, 'fennec', 'application.ini') remoteappini = os.path.join(workdir, 'talos', 'remoteapp.ini') log.info('copying %s to %s' % (inifile, remoteappini)) runCommand(['cp', inifile, remoteappini]) log.info("connecting to: %s" % ip_addr) dm = devicemanager.DeviceManagerSUT(ip_addr) # Moar data! dm.debug = 3 devRoot = checkDeviceRoot(dm) if devRoot is None or devRoot == '/tests': setFlag( errorFile, "Remote Device Error: devRoot from devicemanager [%s] is not correct - exiting" % devRoot) return None, None try: log.info("%s, %s" % (proxyIP, proxyPort)) getDeviceTimestamp(dm) setDeviceTimestamp(dm) getDeviceTimestamp(dm) dm.getInfo('process') dm.getInfo('memory') dm.getInfo('uptime') width, height = getResolution(dm) # adjust resolution down to allow fennec to install without memory # issues if (width == 1600 or height == 1200): dm.adjustResolution(1024, 768, 'crt') log.info('forcing device reboot') if not powermanagement.soft_reboot_and_verify( device=deviceName, dm=dm, ipAddr=proxyIP, port=proxyPort): return None, None width, height = getResolution(dm) if width != 1024 and height != 768: setFlag( errorFile, "Remote Device Error: Resolution change failed. Should be %d/%d but is %d/%d" % (1024, 768, width, height)) return None, None except devicemanager.AgentError, err: log.error( "remoteDeviceError: while doing one time setup for installation: %s" % err) return None, None
import os, sys import devicemanagerSUT as devicemanager import socket import random import time from sut_lib import getOurIP, calculatePort, clearFlag, setFlag, waitForDevice if (len(sys.argv) <> 2): print "usage: reboot.py <ip address>" sys.exit(1) cwd = os.getcwd() proxyFile = os.path.join(cwd, '..', 'proxy.flg') errorFile = os.path.join(cwd, '..', 'error.flg') proxyIP = getOurIP() proxyPort = calculatePort() print "connecting to: %s" % sys.argv[1] dm = devicemanager.DeviceManagerSUT(sys.argv[1]) dm.debug = 5 setFlag(proxyFile) try: dm.getInfo('process') print dm.sendCMD(['exec su -c "logcat -d -v time *:W"']) print 'calling dm.reboot()' status = dm.reboot(ipAddr=proxyIP, port=proxyPort) print status
def one_time_setup(ip_addr, major_source): ''' One time setup of state ip_addr - of the device we want to install app at major_source - we've hacked this script to install may-also-be-needed tools, but the source we're asked to install has the meta data we need Side Effects: global, needed for error reporting: errorFile ''' # set up the flag files, used throughout cwd = os.getcwd() global errorFile errorFile = os.path.join(cwd, '..', 'error.flg') deviceName = os.path.basename(cwd) proxyIP = getOurIP() proxyPort = calculatePort() workdir = os.path.dirname(major_source) inifile = os.path.join(workdir, 'fennec', 'application.ini') remoteappini = os.path.join(workdir, 'talos', 'remoteapp.ini') log.info('copying %s to %s' % (inifile, remoteappini)) runCommand(['cp', inifile, remoteappini]) log.info("connecting to: %s" % ip_addr) dm = devicemanager.DeviceManagerSUT(ip_addr) # Moar data! dm.debug = 3 devRoot = checkDeviceRoot(dm) if devRoot is None or devRoot == '/tests': setFlag(errorFile, "Remote Device Error: devRoot from devicemanager [%s] is not correct - exiting" % devRoot) return None, None try: log.info("%s, %s" % (proxyIP, proxyPort)) getDeviceTimestamp(dm) setDeviceTimestamp(dm) getDeviceTimestamp(dm) dm.getInfo('process') dm.getInfo('memory') dm.getInfo('uptime') width, height = getResolution(dm) # adjust resolution down to allow fennec to install without memory # issues if (width == 1600 or height == 1200): dm.adjustResolution(1024, 768, 'crt') log.info('forcing device reboot') if not powermanagement.soft_reboot_and_verify(device=deviceName, dm=dm, ipAddr=proxyIP, port=proxyPort): return None, None width, height = getResolution(dm) if width != 1024 and height != 768: setFlag(errorFile, "Remote Device Error: Resolution change failed. Should be %d/%d but is %d/%d" % (1024, 768, width, height)) return None, None except devicemanager.AgentError, err: log.error("remoteDeviceError: while doing one time setup for installation: %s" % err) return None, None
def one_time_setup(ip_addr, major_source): ''' One time setup of state ip_addr - of the tegra we want to install app at major_source - we've hacked this script to install may-also-be-needed tools, but the source we're asked to install has the meta data we need Side Effects: We two globals, needed for error reporting: errorFile, proxyFile ''' # set up the flag files, used throughout cwd = os.getcwd() global proxyFile, errorFile proxyFile = os.path.join(cwd, '..', 'proxy.flg') errorFile = os.path.join(cwd, '..', 'error.flg') proxyIP = getOurIP() proxyPort = calculatePort() workdir = os.path.dirname(major_source) inifile = os.path.join(workdir, 'fennec', 'application.ini') remoteappini = os.path.join(workdir, 'talos', 'remoteapp.ini') print 'copying %s to %s' % (inifile, remoteappini) runCommand(['cp', inifile, remoteappini]) print "connecting to: %s" % ip_addr dm = devicemanager.DeviceManagerSUT(ip_addr) # Moar data! dm.debug = 3 devRoot = checkDeviceRoot(dm) if devRoot is None or devRoot == '/tests': setFlag( errorFile, "Remote Device Error: devRoot from devicemanager [%s] is not correct - exiting" % devRoot) sys.exit(1) try: setFlag(proxyFile) print proxyIP, proxyPort getDeviceTimestamp(dm) setDeviceTimestamp(dm) getDeviceTimestamp(dm) dm.getInfo('process') dm.getInfo('memory') dm.getInfo('uptime') width, height = getResolution(dm) #adjust resolution down to allow fennec to install without memory issues if (width >= 1050 or height >= 1050): dm.adjustResolution(1024, 768, 'crt') print 'calling reboot' dm.reboot(proxyIP, proxyPort) waitForDevice(dm) width, height = getResolution(dm) if width != 1024 and height != 768: clearFlag(proxyFile) setFlag( errorFile, "Remote Device Error: Resolution change failed. Should be %d/%d but is %d/%d" % (1024, 768, width, height)) sys.exit(1) finally: clearFlag(proxyFile) return dm, devRoot
try: eventQueue.put(('terminate', )) os.remove(pidFile) except (KeyboardInterrupt, SystemExit): raise except Exception: pass sys.exit(0) def shutdownDialback(): db.close() if __name__ == '__main__': ourIP = getOurIP() if ourIP is None: log.error('our IP address is not defined, exiting') sys.exit(1) options = loadOptions(defaultOptions) initLogs(options) options.bbpath = os.path.abspath(options.bbpath) if options.tegra is None: if 'tegra-' in ourPath.lower(): options.tegra = os.path.basename(os.path.split(ourPath)[-1]) if options.tegra is None: log.error('Tegra has not been specified, exiting')