56 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
| # 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.
 | |
| 
 | |
| import dbus
 | |
| import logging
 | |
| import time
 | |
| 
 | |
| from autotest_lib.client.bin import test
 | |
| from autotest_lib.client.common_lib import error
 | |
| from autotest_lib.client.cros.networking import shill_context
 | |
| from autotest_lib.client.cros.networking import shill_proxy
 | |
| 
 | |
| 
 | |
| class cellular_StressEnable(test.test):
 | |
|     """
 | |
|     Stress-tests enabling and disabling a technology at short intervals.
 | |
| 
 | |
|     """
 | |
|     version = 1
 | |
| 
 | |
|     okerrors = [
 | |
|         shill_proxy.ShillProxy.ERROR_IN_PROGRESS
 | |
|     ]
 | |
| 
 | |
|     def _enable_device(self, enable):
 | |
|         try:
 | |
|             timeout = shill_proxy.ShillProxy.DEVICE_ENABLE_DISABLE_TIMEOUT
 | |
|             if enable:
 | |
|                 self.device.Enable(timeout=timeout)
 | |
|             else:
 | |
|                 self.device.Disable(timeout=timeout)
 | |
|         except dbus.exceptions.DBusException, err:
 | |
|             if err.get_dbus_name() in cellular_StressEnable.okerrors:
 | |
|                 return
 | |
|             raise error.TestFail(err)
 | |
| 
 | |
| 
 | |
|     def _test(self, settle):
 | |
|         self._enable_device(False)
 | |
|         time.sleep(settle)
 | |
|         self._enable_device(True)
 | |
|         time.sleep(settle)
 | |
| 
 | |
| 
 | |
|     def run_once(self, test_env, cycles=3, min=15, max=25):
 | |
|         with test_env, shill_context.ServiceAutoConnectContext(
 | |
|                 test_env.shill.wait_for_cellular_service_object, False):
 | |
|             self.device = test_env.shill.find_cellular_device_object()
 | |
|             for t in xrange(max, min, -1):
 | |
|                 for n in xrange(cycles):
 | |
|                     # deciseconds are an awesome unit.
 | |
|                     logging.info('Cycle %d: %f seconds delay.', n, t / 10.0)
 | |
|                     self._test(t / 10.0)
 | |
|             logging.info('Done.')
 |