# Copyright 2019 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 = 'rzakarian'
NAME = 'policy_DeviceServer.DeviceWilcoDtcAllowed_true'
TIME = 'SHORT'
TEST_CATEGORY = 'General'
TEST_CLASS = 'enterprise'
TEST_TYPE = 'server'
ATTRIBUTES = "suite:wilco_bve"

DOC = """
Sets up and runs the client test for the DeviceWilcoDtcAllowed
policy. If the policy is set to true Wilco daemons should start running
on the device.

"""

client_test = 'policy_DeviceWilcoDtcAllowed'
case = True

def run(machine):
    host = hosts.create_host(machine)
    job.run_test('policy_DeviceServer', host=host,
                  client_test=client_test, case=case)

parallel_simple(run, machines)
