# 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.VirtualMachinesAllowed_notset'
TIME = 'SHORT'
TEST_CATEGORY = 'General'
TEST_CLASS = 'enterprise'
TEST_TYPE = 'server'
# Disable until test can be fixed: http://b/160218741
# ATTRIBUTES = 'suite:ent-nightly, suite:policy'

DOC = """
Sets up and runs the client test for the VirtualMachinesAllowed
policy. If the policy is set to True virtual machines should be allowed.

"""

client_test = 'policy_VirtualMachinesAllowed'
case = None

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)
