blob: 18efe2e0849b567ce999251791a2b8b23db6f862 [file] [log] [blame]
#!/usr/bin/env python
import os
import sys
import site
site.addsitedir(os.path.join(os.path.dirname(os.path.realpath(__file__)), "../lib/python"))
from mozdevice import devicemanagerSUT as devicemanager
from sut_lib import getOurIP, calculatePort, setFlag, log, \
powermanagement
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
if __name__ == '__main__':
if (len(sys.argv) != 2):
print "usage: reboot.py <ip address>"
sys.exit(1)
deviceIP = sys.argv[1]
dm = None
try:
log.info("connecting to: %s" % deviceIP)
dm = devicemanager.DeviceManagerSUT(deviceIP)
dm.debug = 0
dm.default_timeout = 30 # Set our timeout lower for deviceManager here
except:
pass
sys.exit(reboot(dm))