# -*- coding: utf-8 -*-
#
# Copyright (c) 2010 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 False if you want and allow fast wipe (insecure).
_DO_FACTORY_SECURE_WIPE = True

# 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 match your local report upload site.
# You can use a FTP url like: ftp://user:pass@host:port/path/file
# VPD variables NAME=VALUE can be used as %(vpd_NAME).
# Ex: serial=123 => $(vpd_serial).log => 123.log
_REPORT_UPLOAD_METHOD = 'none'  # WARNING: none is ONLY ALLOWED FOR DEBUGGING.
# 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_Dummy',
        kbd_shortcut='e',
        dargs={'quit_key':ord(' '),
               'msg':'Hit SPACE to start testing...\n按 "空白鍵" 開始測試...'}),

    # 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'}),

    AutomatedSequence(
        label_en='run-in',
        label_zw='燒機測試',
        subtest_tag_prefix='runin',
        kbd_shortcut='r',
        subtest_list=[

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

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

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

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

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

    # 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'),

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

    OperatorTest(
        label_en='leds',
        label_zw='機身側燈',
        autotest_name='factory_Leds',
        kbd_shortcut='l',
        dargs={'led_ctl_path':
                 '/usr/local/autotest/site_tests/factory_Leds/src/ec_ctl'}),

    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='bluetooth',
    #    label_zw='藍芽',
    #    autotest_name='factory_Dummy',
    #    kbd_shortcut='o',
    #    dargs={'msg':'bluetooth test, one day...'}),

    # OperatorTest(
    #    label_en='3g',
    #    label_zw='3G上網',
    #    autotest_name='factory_Dummy',
    #    kbd_shortcut='g',
    #    dargs={'msg':'3g test, one day...'}),

    # OperatorTest(
    #    label_en='wifi',
    #    label_zw='無線上網',
    #    autotest_name='factory_Dummy',
    #    kbd_shortcut='w',
    #    dargs={'msg':'wifi test, one day...'}),

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

    # 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.
    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',
                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': True,
                    'check_and_enable_write_protect': True,
                    'upload_method': _REPORT_UPLOAD_METHOD,
                    'secure_wipe': _DO_FACTORY_SECURE_WIPE,
                })]),
            # NOTE: factory_Finalize.dargs support following variables for
            # temporary testing. You can add these settings to help internal
            # test, but THESE ARE GOOGLE REQUIRED TESTS SO YOU SHOULD NOT
            # DISABLE THEM IN PRODUCTION RELEASES.
            #  - check_required_tests: check if all required tests are passed
            #  - check_and_enable_write_protect: enable and verify flashrom
            #    write protection

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