# Copyright 2015 The Chromium 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 = 'harpreet'
NAME = 'network_WiFi_UpdateRouter.pcap'
TIME = 'SHORT'
TEST_TYPE = 'Server'
DEPENDENCIES = 'wificell'
# TODO(crbug.com/1098024, crbug.com/1005443): re-enable this when either the
# updater is fixed to handle old OS, or when we've updated OS images.
#ATTRIBUTES = 'suite:wifi_update_router'

DOC = """
This test updates the packet capture in a WiFi cell to the latest stable
version.
"""


def run(machine):
    job.run_test('network_WiFi_UpdateRouter',
                 host=hosts.create_host(machine),
                 raw_cmdline_args=args,
                 is_pcap=True,
                 tag='pcap')


parallel_simple(run, machines)
