| # Copyright (c) 2011 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 backchannel, network |
| |
| from autotest_lib.client.cros.cellular import cellular, cell_tools, environment |
| |
| import contextlib, logging, re, socket, string, time, urllib2 |
| |
| from autotest_lib.client.cros import flimflam_test_path |
| import flimflam, routing, mm |
| |
| # Cellular smoke test and documentation for writing cell tests |
| |
| class cellular_Smoke(test.test): |
| version = 1 |
| |
| # The autotest infrastructure calls run_once. The control file |
| # fetches the JSON lab config and passes it in as a python object |
| |
| def run_once(self, config, technology): |
| # The DefaultCellularTestContext builds: |
| # * a backchannel ethernet context. This makes a virtual |
| # device that connects the DUT to the test infrastructure. |
| # It has restrictive routes and is outside of flimflam's |
| # control. This makes the tests resilient to flimflam |
| # restarts and helps to ensure that the test is actually |
| # sending traffic on the cellular link |
| # * an OtherDeviceShutdownContext, which shuts down other |
| # network devices on the host. Again, this is to ensure |
| # that test traffic goes over the modem |
| # * A cellular test environment context, which lets us |
| # interact with the cell network. |
| |
| with environment.DefaultCellularTestContext(config) as c: |
| env = c.env |
| flim = flimflam.FlimFlam() |
| env.StartDefault(technology) |
| network.ResetAllModems(flim) |
| cell_tools.PrepareModemForTechnology('', technology) |
| |
| # TODO(rochberg) Need to figure out what isn't settling here. |
| # Going to wait 'til after ResetAllModems changes land. |
| time.sleep(10) |
| |
| service = env.CheckedConnectToCellular() |
| env.CheckHttpConnectivity() |
| env.CheckedDisconnectFromCellular(service) |