# Copyright (c) 2012 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 = "Chrome OS Team"
NAME = "Benchmarks"
TIME = "LONG"
TEST_CATEGORY = "Functional"
TEST_CLASS = "suite"
TEST_TYPE = "server"

DOC = """
This test suite runs automated benchmark tests that should all pass. 1 machine
should complete this suite in ~3:00, 3 machine in ~1:00.  3+ machines won't
speed up the completion time as the longest test is 1:00.
"""

"""List of client tests with parameters.

Note: In this case it is important to list the tests with the longest runtime
first. This helps the suite complete as quickly as possible by enabling as much
parallelization as possible.  If the long running tests were last in the list
they would be last to run.  By having them first other machines are able to
work on quicker tests while the longest running tests are running.
"""
TESTS = [
  ('unixbench', {}),            # Runtime 1:00
  ('hardware_StorageFio', {}),  # Runtime 1:00
  ('compilebench', {}),         # Runtime 0:35
  ('dbench', {}),               # Runtime 0:15
  ('disktest', {}),             # Runtime 0:05
  ('graphics_WindowManagerGraphicsCapture', {}),   # Runtime 0:02
  ('graphics_GLBench', {}),                        # Runtime 0:05
  ('graphics_SanAngeles', {'creds': '$backdoor'}), # Runtime 0:03
  ('graphics_WebGLConformance', {}),               # Runtime 0:05
  ('graphics_WebGLPerformance', {}),               # Runtime 0:03
  ('graphics_GLMark2', {}),                        # Runtime 0:05
  ('graphics_GpuReset', {}),                       # Runtime 0:03
  #-----------------------------------------------------------------------------
  # Tests which leave the system in a strange state below. Don't add anything to
  # this section unless you know what you're doing.
  #-----------------------------------------------------------------------------
  # graphics_Piglit can crash many of the UI processes, so schedule it last and
  # make sure the machine is in a fresh state before starting.
  ('graphics_Piglit', {}, [], [], ['reboot_before']),  # Runtime 0:21
]

job.distribute_across_machines(TESTS, machines, continuous_parsing=True)
