普通文本  |  57行  |  2.33 KB

# Copyright (c) 2013 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

# 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)

            # Clear all errors before we start.
            # Resetting the modem above may have caused some errors on the
            # 8960 (eg. lost connection, etc).
            env.emulator.ClearErrors()

            service = env.CheckedConnectToCellular()
            env.CheckHttpConnectivity()
            env.CheckedDisconnectFromCellular(service)