# 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 = 'The Chromium OS Authors'
DOC = """
This test puts the network interfaces through hundred(s) of
connect/disconnect cycles and verifies that flimflam properly detects
that the service is either in online or portal state.

Use run_remote_tests.sh with --args=service_name=cell to test the
portal code on cellular devices.
"""
NAME = 'network_PortalStress'
PURPOSE = 'Stress test the portal detection code.'
CRITERIA = """
    Fails if portal code detects portal state when
    clients3.google.com is accessible or if portal code detects online
    when clients3.google.com is not accessible.
"""
TIME = 'LARGE'
TEST_CATEGORY = 'Stress'
TEST_CLASS = 'network'
TEST_TYPE = 'client'

import logging
logging.info('args = %s' % args)

if args:
    args = args[0].split(':')

if args:
    dict_args = dict([x.split('=') for x in args])
else:
    dict_args = {}

# Run online cycle for hundred(s) of iterations because this is fast
job.run_test('network_Portal',
             force_portal=False, tag='online', test_iterations=100, **dict_args)

# Run the portal cycle for fewer iterations because each test must time
# out and that makes it exceedingly slow (15 seconds/iteration)
job.run_test('network_Portal',
             force_portal=True, tag='portal', test_iterations=20, **dict_args)
