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

from autotest_lib.client.common_lib import utils

AUTHOR = 'dave.rodgman@arm.com'
NAME = 'kernel_IdlePerf'
PURPOSE = 'Test performance impact of idle'
CRITERIA = 'This test will fail if performance drops when CPU idle is enabled'
# Disable this test until it can be fixed: http://b/154426893
# ATTRIBUTES = 'suite:crosbolt_perf_weekly'
TIME = 'MEDIUM'
TEST_CATEGORY = 'Performance'
TEST_CLASS = 'kernel'
TEST_TYPE = 'server'

DOC = '''
This server side test suite tests for performance regressions where enabling
CPU idle hurts latency-sensitive workloads (e.g., smooth scrolling).

This is done by running smoothness.top_25_smooth and comparing results for
idle enabled vs. disabled: ideally, there should be only a very small impact.

This test currently only supports Arm aarch64.

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

def run_benchmark(machine):
    host = hosts.create_host(machine)
    job.run_test('kernel_IdlePerf', host=host,
                 args=utils.args_to_dict(args))

parallel_simple(run_benchmark, machines)
