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

AUTHOR = "ChromeOS Team"
NAME = "cellular_3GModemControl"
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 = "cell_emulator"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "network"
TEST_TYPE = "client"

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 labconfig

config = labconfig.Configuration(args)

variations = [(False, 'no-autoconnect'), (True, 'autoconnect')]

for technology in config.get_technologies():
    for autoconnect, tag in variations:
        job.run_test('network_3GModemControl',
                     config=config,
                     technology=technology,
                     tag='%s-%s' % (technology, tag),
                     autoconnect=autoconnect)
