# 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 test_that 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 = 'LONG'
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)
