# 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.
"""
SUITE = "network3g"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "network"
TEST_TYPE = "client"
DEPENDENCIES = "modem:e362"

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

# 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.
job.run_test('network_3GModemControl', autoconnect=False, slow_connect=True,
             tag='no-autoconnect-e362')
job.run_test('network_3GModemControl', autoconnect=True, slow_connect=True,
             tag='autoconnect-e362')
