blob: 2750673b0890fb955a60fca57db7ccf427c1c56c [file] [log] [blame]
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from autotest_lib.client.bin import test, utils
from autotest_lib.client.common_lib import error
from autotest_lib.client.cros import sys_power
import logging, time
class network_WWANActivate(test.test):
version = 1
def run_once(self, interface='wwan0', deadline=1.1, repeat=1):
"""Check that the WWAN device comes up after a resume
@param interface: The device associated with the WWAN hardware
@param deadline: Seconds to wait for the device
@param repeat: number of times to carry out the test
"""
for i in range(0, repeat):
logging.info('Test run %d', i)
sys_power.do_suspend(3)
wait = wait_for_modem(deadline, interface, deadline/10)
logging.info('%.2f seconds to modem activation', wait)
def wait_for_modem(deadline, interface, delay):
"""Wait for the interface to appear.
Raise a test error if more than |deadline| seconds pass without
|interface| becoming available.
@param deadline: seconds to wait after which the test will fail
@param interface: the interface name
@param delay: seconds to wait between checks for |interface|
"""
if deadline < delay:
raise error.TestError('Intra-check delay cannot exceed WWAN deadline.')
cycles = int(deadline / delay)
modem = False
ifconfig = 'ifconfig %s 2>/dev/null' % interface
for i in range(0, cycles):
try:
utils.system(ifconfig)
except error.CmdError:
time.sleep(delay)
continue
modem = True
break
if not modem:
raise error.TestFail('Modem not up within %f seconds.' % deadline)
return i * delay