# -*- coding: utf-8 -*-
#
# Copyright (c) 2011 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.

# DOCUMENTATION:
#
# Define below an ordered list if tests for execution on factory
# assembly lines.  This list can be customized for specific factory
# needs, within the limits set by the below comments -- specifically,
# ODMs should not remove any Google required tests.
#
# This file is loaded via a call to execfile() in the primary factory
# autotest control file.


# -- CUSTOMIZATION VARIABLES ---------------------------------------
# You can tune these settings to fit your factory process.

# Change this to the number of reboots you want during run-in.
_REBOOT_SEQ_ITERATIONS = 2

# Change this to the duration of SAT during run-in (suggested 10+ mins).
_SAT_DURATION_SECS = 60

# Change this to True if you want and secure wipe (very slower).
_ENABLE_FACTORY_SECURE_WIPE = False

# True to force automatically detecting HWID without manually selection;
# False for operator to select from a list of HWIDs (and get more precise error
# messages when not matched, useful for debugging and RMA).
_ENABLE_AUTODETECT_HWID = True

# Change this to True if you want to make sure every tests has been already
# passed before running finalization.
# RECOMMENDED FOR SHIPPING DEVICES.
_ENABLE_CHECK_ALL_TEST_PASSED = False

# Change this to enable firmware write protection on finalize.
# THIS IS REQUIRED TO BE TRUE FOR SHIPPING DEVICES.
_ENABLE_FW_WP = False # WARNING: False is ONLY ALLOWED FOR DEBUGGING.

# Change this to match your local report upload site.
_REPORT_UPLOAD_METHOD = 'none'  # WARNING: none is ONLY ALLOWED FOR DEBUGGING.
#
# * For LAN environments, setup a FTP server and build FTP URL.
#   Example: ftp://user:pass@host:port/directory/
#
#_REPORT_UPLOAD_METHOD = 'ftp://LOCAL_FTP_HOST/'
#
# * If you have access to public internet, use Google CPFE URL.
#   Example: ("cpfe:https://www.google.com/chromeos/partner/fe/report_upload?"
#             "device_name=mario&report_type=rma")
#
#_REPORT_UPLOAD_METHOD = (
#  "cpfe:https://www.google.com/chromeos/partner/fe/report_upload?"
#  "device_name=PLATFORM_NAME&report_type=REPORT_TYPE")
#
# REPORT UPLOADING IS REQUIRED TO BE SET AT BUILD TIME.
# REPORTS MUST BE PROVIDED TO GOOGLE, MACHINES WITHOUT LOGS CANNOT BE SUPPORTED.

# -- END OF CUSTOMIZATION VARIABLES --------------------------------


# TEST ORDERING: Tests in the test_list will be run in the order
# below, unless the operator interrupts the flow via keyboard
# shortcut.  To cause immediate execution of the run-in tests, for
# example, reorder runin to occur as the first test in the test_list.

TEST_LIST = [

    OperatorTest(
        label_en='start',
        label_zw='開始',
        autotest_name='factory_Start',
        kbd_shortcut='e',
        dargs={'press_to_continue': True,
               'require_external_power': True}),

    # The factory_ScriptWrapper allows interactive execution of
    # external scripts or programs with the output displayed in the
    # testing widget area of the screen. This is useful, for example,
    # to sync-up with the assembly line IT system.
    # OperatorTest(
    #    label_en='sync',
    #    label_zw='同步',
    #    autotest_name='factory_ScriptWrapper',
    #    kbd_shortcut='s',
    #    dargs={'cmdline': job.autodir +
    #           '/site_tests/factory_ScriptWrapper/dummy.sh'}),

    # Suggested tests (optional): ---------------------------------------------

    AutomatedSequence(
        label_en='memory',
        label_zw='記憶體',
        subtest_tag_prefix='memoryrunin',
        kbd_shortcut='r',
        subtest_list=[

            AutomatedSubTest(
                label_en='system stress',
                label_zw='壓力測試',
                autotest_name='hardware_SAT',
                dargs={'seconds': _SAT_DURATION_SECS},
                drop_caches=True),
        ]),

    AutomatedSequence(
        label_en='graphics',
        label_zw='圖型',
        subtest_tag_prefix='graphicsrunin',
        kbd_shortcut='3',
        subtest_list=[

            AutomatedSubTest(
                label_en='graphics',
                label_zw='圖型',
                autotest_name='graphics_GLBench'),
        ]),

    AutomatedSequence(
        label_en='restart',
        label_zw='燒機測試',
        subtest_tag_prefix='restartrunin',
        kbd_shortcut='p',
        subtest_list=[

            AutomatedSubTest(
                label_en='sleep / wake',
                label_zw='睡眠 / 喚醒',
                autotest_name='power_Resume'),

            AutomatedRebootSubTest(
                label_en='reboot (%s times)' % _REBOOT_SEQ_ITERATIONS,
                label_zw='重新開機 (%s 次)' % _REBOOT_SEQ_ITERATIONS,
                iterations=_REBOOT_SEQ_ITERATIONS),
        ]),

    AutomatedSequence(
        label_en='gps',
        label_zw='GPS 硬體',
        subtest_tag_prefix='gpspresence',
        kbd_shortcut='g',
        subtest_list=[

            AutomatedSubTest(
                label_en='GPS hardware',
                label_zw='GPS 硬體',
                autotest_name='hardware_GPS'),
        ]),

    OperatorTest(
        label_en='touchpad',
        label_zw='觸控板',
        autotest_name='factory_Touchpad',
        kbd_shortcut='t'),

    OperatorTest(
        label_en='display',
        label_zw='顯示',
        autotest_name='factory_Display',
        kbd_shortcut='m'),

    OperatorTest(
        label_en='x-display',
        label_zw='外接顯示',
        autotest_name='factory_ExtDisplay',
        kbd_shortcut='n',
        dargs={'has_audio':True,
               'audio_sample_path':'site_tests/suite_Factory/fhorn.wav'}),

    OperatorTest(
        label_en='camera',
        label_zw='相機',
        autotest_name='factory_Camera',
        kbd_shortcut='c'),

    OperatorTest(
        label_en='audio',
        label_zw='音源裝置',
        autotest_name='factory_Audio',
        kbd_shortcut='a',
        dargs={'audio_sample_path':'site_tests/suite_Factory/fhorn.wav'}),

    OperatorTest(
        label_en='usb',
        autotest_name='factory_ExternalStorage',
        kbd_shortcut='u',
        dargs={'media':'USB'}),

    OperatorTest(
        label_en='sd',
        autotest_name='factory_ExternalStorage',
        kbd_shortcut='d',
        dargs={'media':'SD'}),

    OperatorTest(
        label_en='light sensor',
        label_zw='光感應器',
        autotest_name='factory_LightSensor',
        dargs={'lux_max':1000, 'lux_min':1},
        kbd_shortcut='i'),

    # Required tests (mandatory): ----------------------------------------------

    # THIS IS A GOOGLE REQUIRED TEST.
    # YOU MUST TEST THIS COMPONENT, EITHER WITH THIS TEST, OR ANOTHER EQUIVALENT
    # TEST THAT YOU HAVE HAD REVIEWED BY GOOGLE.
    OperatorTest(
        label_en='devrec',
        label_zw='還原模式',
        autotest_name='factory_DeveloperRecovery',
        kbd_shortcut='b',
        dargs={'layout':'devrec'}),

    # THIS IS A GOOGLE REQUIRED TEST.
    # YOU MUST TEST THIS COMPONENT, EITHER WITH THIS TEST, OR ANOTHER EQUIVALENT
    # TEST THAT YOU HAVE HAD REVIEWED BY GOOGLE.
    OperatorTest(
        label_en='region',
        label_zw='地區語系',
        autotest_name='factory_SelectRegion',
        kbd_shortcut='j'),

    OperatorTest(
        label_en='keyboard',
        label_zw='鍵盤',
        autotest_name='factory_Keyboard',
        kbd_shortcut='k'),

    # THIS IS A GOOGLE REQUIRED TEST.
    # YOU MUST TEST THIS COMPONENT, EITHER WITH THIS TEST, OR ANOTHER EQUIVALENT
    # TEST THAT YOU HAVE HAD REVIEWED BY GOOGLE.
    OperatorTest(
        label_en='serial no',
        label_zw='序號設定',
        autotest_name='factory_SetSN',
        kbd_shortcut='6'),

    # THIS IS A GOOGLE REQUIRED TEST.
    # YOU MUST TEST THIS COMPONENT, EITHER WITH THIS TEST, OR ANOTHER EQUIVALENT
    # TEST THAT YOU HAVE HAD REVIEWED BY GOOGLE.
    AutomatedSequence(
        label_en='HWID',
        label_zw='硬體代號',
        subtest_tag_prefix='hwid',
        kbd_shortcut='h',
        subtest_list=[

            AutomatedSubTest(
                label_en='hw-qual-id matching',
                label_zw='型號匹配',
                autotest_name='factory_ProbeHWID',
                dargs={'autodetect': _ENABLE_AUTODETECT_HWID},
                unique_name='hw-qual-id-match'),

            AutomatedSubTest(
                label_en='write GBB',
                label_zw='寫入GBB',
                autotest_name='factory_WriteGBB'),

            AutomatedRebootSubTest(
                label_en='reboot',
                label_zw='重新開機',
                iterations=1),

            # Validation will be made in final stage.
            # If you've got problems, use gooftool to check.
        ]),

    # THIS IS A GOOGLE REQUIRED TEST.
    # PLEASE DO NOT REMOVE THIS TEST IN PRODUCTION RELEASES.
    AutomatedSequence(
        label_en='final',
        label_zw='最終步驟',
        subtest_tag_prefix='finalize',
        kbd_shortcut='f',
        subtest_list=[
            # The pre-flight is to help operators checking if everything is OK.
            # You can remove the step if you want a fully automated process.
            AutomatedSubTest(
                label_en='pre flight',
                label_zw='就緒檢查',
                autotest_name='factory_PreFinalCheck'),
            # The finalize is required for every products.
            # You can't remove this step.
            AutomatedSubTest(
                label_en='finalize',
                label_zw='最終程序',
                autotest_name='factory_Finalize',
                dargs={
                    'check_required_tests': _ENABLE_CHECK_ALL_TEST_PASSED,
                    'check_and_enable_write_protect': _ENABLE_FW_WP,
                    'upload_method': _REPORT_UPLOAD_METHOD,
                    'secure_wipe': _ENABLE_FACTORY_SECURE_WIPE,
                })]),

    InformationScreen(
        label_en='review',
        label_zw='報告',
        autotest_name='factory_Review',
        unique_name='ReviewInformation',  # REVIEW_INFORMATION_TEST_UNIQUE_NAME
        kbd_shortcut='z'),
]
