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

AUTHOR = "ChromeOS Team"
NAME = "network_3GModemControl.e362"
PURPOSE = "Verify commands sent to a modem manager are reflected in flimflam."
CRITERIA = """
This test will fail if modem manager state differs from flimflam state.
"""
ATTRIBUTES = "suite:network3g"
SUITE = "network3g"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "network"
TEST_TYPE = "client"
DEPENDENCIES = "modem:e362, modem_repair"

# The E362 modems may fail while connecting and disconnecting.  These
# failures go away if the test is retried.  See crbug.com/224026,
# crbug.com/224110, and crbug.com/224329.
# TODO(thieule): Change this from generic retry to specific failure retry.
# crbug.com/224369.
RETRIES = 2

DOC = """
  Tests that commands sent to ModemManager or cromo are reflected in flimflam.

  Issues many connect, disconnect, enable, and disable commands to ensure
  that the modem state is always properly reflected in flimflam -- even
  if the commands are sent to the modem manager instead of flimflam.
"""

from autotest_lib.client.cros.cellular import test_environment

# For E362 modems, we need to prevent the modem from disconnecting too quickly
# or else the out-of-credits logic will kick in and attempt to reconnect (see
# shill/cellular_service.cc).  This is accomplished by setting |slow_connect|
# to True.
test_env = test_environment.CellularOTATestEnvironment()
job.run_test('network_3GModemControl', test_env=test_env, autoconnect=False,
             slow_connect=True, tag='no-autoconnect-e362')
job.run_test('network_3GModemControl', test_env=test_env, autoconnect=True,
             slow_connect=True, tag='autoconnect-e362')