# 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:longevity_two"
DEPENDENCIES = "chromesign"
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)