# Copyright 2014 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.

# Do not edit this file! It was created by generate_controlfiles.py.

AUTHOR = 'chromeos-gfx'
NAME = 'telemetry_GpuTests.context_lost'
ATTRIBUTES = "suite:graphics, suite:graphics_browser, suite:graphics_per-day"
SUITE = 'graphics_per-day, graphics, graphics_browser'
TIME = 'LONG'
TEST_CATEGORY = 'Functional'
TEST_CLASS = 'gl'
TEST_TYPE = 'server'

DOC = '''
This server control file executes the GPU telemetry test: context_lost.

Pass local=True to run with local telemetry and no AFE server.
'''

from autotest_lib.client.common_lib import utils

def run_test(machine):
    host = hosts.create_host(machine)
    job.run_test('telemetry_GpuTests',
                 host=host,
                 test='context_lost',
                 args=utils.args_to_dict(args))


parallel_simple(run_test, machines)