1 # Copyright (c) 2013 The Chromium OS Authors. All rights reserved. 2 # Use of this source code is governed by a BSD-style license that can be 3 # found in the LICENSE file. 4 5 from autotest_lib.client.bin import test, utils 6 from autotest_lib.client.common_lib import error 7 from autotest_lib.client.cros import backchannel, network 8 9 from autotest_lib.client.cros.cellular import cellular, cell_tools, environment 10 11 import contextlib, logging, re, socket, string, time, urllib2 12 13 from autotest_lib.client.cros import flimflam_test_path 14 import flimflam, routing 15 16 # Cellular smoke test and documentation for writing cell tests 17 18 class cellular_Smoke(test.test): 19 version = 1 20 21 # The autotest infrastructure calls run_once. The control file 22 # fetches the JSON lab config and passes it in as a python object 23 24 def run_once(self, config, technology): 25 # The DefaultCellularTestContext builds: 26 # * a backchannel ethernet context. This makes a virtual 27 # device that connects the DUT to the test infrastructure. 28 # It has restrictive routes and is outside of flimflam's 29 # control. This makes the tests resilient to flimflam 30 # restarts and helps to ensure that the test is actually 31 # sending traffic on the cellular link 32 # * an OtherDeviceShutdownContext, which shuts down other 33 # network devices on the host. Again, this is to ensure 34 # that test traffic goes over the modem 35 # * A cellular test environment context, which lets us 36 # interact with the cell network. 37 38 with environment.DefaultCellularTestContext(config) as c: 39 env = c.env 40 flim = flimflam.FlimFlam() 41 env.StartDefault(technology) 42 network.ResetAllModems(flim) 43 cell_tools.PrepareModemForTechnology('', technology) 44 45 # TODO(rochberg) Need to figure out what isn't settling here. 46 # Going to wait 'til after ResetAllModems changes land. 47 time.sleep(10) 48 49 # Clear all errors before we start. 50 # Resetting the modem above may have caused some errors on the 51 # 8960 (eg. lost connection, etc). 52 env.emulator.ClearErrors() 53 54 service = env.CheckedConnectToCellular() 55 env.CheckHttpConnectivity() 56 env.CheckedDisconnectFromCellular(service) 57