# Copyright 2016 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 = "krishnargv"
NAME = "enterprise_LongevityTrackerServer.chromesign_3hr"
PURPOSE = "Tracks Chrome OS performance over a 3hour period."
TIME = "LONG"
TEST_CATEGORY = "Performance"
TEST_CLASS = "performance"
TEST_TYPE = "server"
ATTRIBUTES = "suite:kiosk_longevity"
JOB_RETRIES = 3

DOC = """
This test enrolls ChromeOS device into kiosk mode and captures device resource
data including cpu and memory usage, and temperature data after the kiosk app
auto launches. This test runs for 3 hours, the perf metrics are captured every 2 mins.
"""


def run_test(machine):
    host = hosts.create_host(machine)
    # Kiosk app attributes include app name, extension id and extension page
    # See README.txt for perf_params format
    perf_params = {
        'perf_capture_iterations': 1,
        'perf_capture_duration': 10800,
        'sample_interval': 120,
        'metric_interval': 1800,
        'test_type': 'single_sample',
        'kiosk_app_attributes': ('chromesign:'
                            'odjaaghiehpobimgdjjfofmablbaleem:'
                            'viewer.html')
    }

    job.run_test('enterprise_LongevityTrackerServer',
            host=host,
            perf_params=perf_params,
            tag='chromesign_3hr')

parallel_simple(run_test, machines)