162306a36Sopenharmony_ci#
262306a36Sopenharmony_ci# Config file for ktest.pl
362306a36Sopenharmony_ci#
462306a36Sopenharmony_ci# Place your customized version of this, in the working directory that
562306a36Sopenharmony_ci# ktest.pl is run from. By default, ktest.pl will look for a file
662306a36Sopenharmony_ci# called "ktest.conf", but you can name it anything you like and specify
762306a36Sopenharmony_ci# the name of your config file as the first argument of ktest.pl.
862306a36Sopenharmony_ci#
962306a36Sopenharmony_ci# Note, all paths must be absolute
1062306a36Sopenharmony_ci#
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci# Options set in the beginning of the file are considered to be
1362306a36Sopenharmony_ci# default options. These options can be overridden by test specific
1462306a36Sopenharmony_ci# options, with the following exceptions:
1562306a36Sopenharmony_ci#
1662306a36Sopenharmony_ci#  LOG_FILE
1762306a36Sopenharmony_ci#  CLEAR_LOG
1862306a36Sopenharmony_ci#  POWEROFF_ON_SUCCESS
1962306a36Sopenharmony_ci#  REBOOT_ON_SUCCESS
2062306a36Sopenharmony_ci#
2162306a36Sopenharmony_ci# Test specific options are set after the label:
2262306a36Sopenharmony_ci#
2362306a36Sopenharmony_ci# TEST_START
2462306a36Sopenharmony_ci#
2562306a36Sopenharmony_ci# The options after a TEST_START label are specific to that test.
2662306a36Sopenharmony_ci# Each TEST_START label will set up a new test. If you want to
2762306a36Sopenharmony_ci# perform a test more than once, you can add the ITERATE label
2862306a36Sopenharmony_ci# to it followed by the number of times you want that test
2962306a36Sopenharmony_ci# to iterate. If the ITERATE is left off, the test will only
3062306a36Sopenharmony_ci# be performed once.
3162306a36Sopenharmony_ci#
3262306a36Sopenharmony_ci# TEST_START ITERATE 10
3362306a36Sopenharmony_ci#
3462306a36Sopenharmony_ci# You can skip a test by adding SKIP (before or after the ITERATE
3562306a36Sopenharmony_ci# and number)
3662306a36Sopenharmony_ci#
3762306a36Sopenharmony_ci# TEST_START SKIP
3862306a36Sopenharmony_ci#
3962306a36Sopenharmony_ci# TEST_START SKIP ITERATE 10
4062306a36Sopenharmony_ci#
4162306a36Sopenharmony_ci# TEST_START ITERATE 10 SKIP
4262306a36Sopenharmony_ci#
4362306a36Sopenharmony_ci# The SKIP label causes the options and the test itself to be ignored.
4462306a36Sopenharmony_ci# This is useful to set up several different tests in one config file, and
4562306a36Sopenharmony_ci# only enabling the ones you want to use for a current test run.
4662306a36Sopenharmony_ci#
4762306a36Sopenharmony_ci# You can add default options anywhere in the file as well
4862306a36Sopenharmony_ci# with the DEFAULTS tag. This allows you to have default options
4962306a36Sopenharmony_ci# after the test options to keep the test options at the top
5062306a36Sopenharmony_ci# of the file. You can even place the DEFAULTS tag between
5162306a36Sopenharmony_ci# test cases (but not in the middle of a single test case)
5262306a36Sopenharmony_ci#
5362306a36Sopenharmony_ci# TEST_START
5462306a36Sopenharmony_ci# MIN_CONFIG = /home/test/config-test1
5562306a36Sopenharmony_ci#
5662306a36Sopenharmony_ci# DEFAULTS
5762306a36Sopenharmony_ci# MIN_CONFIG = /home/test/config-default
5862306a36Sopenharmony_ci#
5962306a36Sopenharmony_ci# TEST_START ITERATE 10
6062306a36Sopenharmony_ci#
6162306a36Sopenharmony_ci# The above will run the first test with MIN_CONFIG set to
6262306a36Sopenharmony_ci# /home/test/config-test-1. Then 10 tests will be executed
6362306a36Sopenharmony_ci# with MIN_CONFIG with /home/test/config-default.
6462306a36Sopenharmony_ci#
6562306a36Sopenharmony_ci# You can also disable defaults with the SKIP option
6662306a36Sopenharmony_ci#
6762306a36Sopenharmony_ci# DEFAULTS SKIP
6862306a36Sopenharmony_ci# MIN_CONFIG = /home/test/config-use-sometimes
6962306a36Sopenharmony_ci#
7062306a36Sopenharmony_ci# DEFAULTS
7162306a36Sopenharmony_ci# MIN_CONFIG = /home/test/config-most-times
7262306a36Sopenharmony_ci#
7362306a36Sopenharmony_ci# The above will ignore the first MIN_CONFIG. If you want to
7462306a36Sopenharmony_ci# use the first MIN_CONFIG, remove the SKIP from the first
7562306a36Sopenharmony_ci# DEFAULTS tag and add it to the second. Be careful, options
7662306a36Sopenharmony_ci# may only be declared once per test or default. If you have
7762306a36Sopenharmony_ci# the same option name under the same test or as default
7862306a36Sopenharmony_ci# ktest will fail to execute, and no tests will run.
7962306a36Sopenharmony_ci#
8062306a36Sopenharmony_ci# DEFAULTS OVERRIDE
8162306a36Sopenharmony_ci#
8262306a36Sopenharmony_ci# Options defined in the DEFAULTS section can not be duplicated
8362306a36Sopenharmony_ci# even if they are defined in two different DEFAULT sections.
8462306a36Sopenharmony_ci# This is done to catch mistakes where an option is added but
8562306a36Sopenharmony_ci# the previous option was forgotten about and not commented.
8662306a36Sopenharmony_ci#
8762306a36Sopenharmony_ci# The OVERRIDE keyword can be added to a section to allow this
8862306a36Sopenharmony_ci# section to override other DEFAULT sections values that have
8962306a36Sopenharmony_ci# been defined previously. It will only override options that
9062306a36Sopenharmony_ci# have been defined before its use. Options defined later
9162306a36Sopenharmony_ci# in a non override section will still error. The same option
9262306a36Sopenharmony_ci# can not be defined in the same section even if that section
9362306a36Sopenharmony_ci# is marked OVERRIDE.
9462306a36Sopenharmony_ci#
9562306a36Sopenharmony_ci#
9662306a36Sopenharmony_ci#
9762306a36Sopenharmony_ci# Both TEST_START and DEFAULTS sections can also have the IF keyword
9862306a36Sopenharmony_ci# The value after the IF must evaluate into a 0 or non 0 positive
9962306a36Sopenharmony_ci# integer, and can use the config variables (explained below).
10062306a36Sopenharmony_ci#
10162306a36Sopenharmony_ci# DEFAULTS IF ${IS_X86_32}
10262306a36Sopenharmony_ci#
10362306a36Sopenharmony_ci# The above will process the DEFAULTS section if the config
10462306a36Sopenharmony_ci# variable IS_X86_32 evaluates to a non zero positive integer
10562306a36Sopenharmony_ci# otherwise if it evaluates to zero, it will act the same
10662306a36Sopenharmony_ci# as if the SKIP keyword was used.
10762306a36Sopenharmony_ci#
10862306a36Sopenharmony_ci# The ELSE keyword can be used directly after a section with
10962306a36Sopenharmony_ci# a IF statement.
11062306a36Sopenharmony_ci#
11162306a36Sopenharmony_ci# TEST_START IF ${RUN_NET_TESTS}
11262306a36Sopenharmony_ci# BUILD_TYPE = useconfig:${CONFIG_DIR}/config-network
11362306a36Sopenharmony_ci#
11462306a36Sopenharmony_ci# ELSE
11562306a36Sopenharmony_ci#
11662306a36Sopenharmony_ci# BUILD_TYPE = useconfig:${CONFIG_DIR}/config-normal
11762306a36Sopenharmony_ci#
11862306a36Sopenharmony_ci#
11962306a36Sopenharmony_ci# The ELSE keyword can also contain an IF statement to allow multiple
12062306a36Sopenharmony_ci# if then else sections. But all the sections must be either
12162306a36Sopenharmony_ci# DEFAULT or TEST_START, they can not be a mixture.
12262306a36Sopenharmony_ci#
12362306a36Sopenharmony_ci# TEST_START IF ${RUN_NET_TESTS}
12462306a36Sopenharmony_ci# BUILD_TYPE = useconfig:${CONFIG_DIR}/config-network
12562306a36Sopenharmony_ci#
12662306a36Sopenharmony_ci# ELSE IF ${RUN_DISK_TESTS}
12762306a36Sopenharmony_ci# BUILD_TYPE = useconfig:${CONFIG_DIR}/config-tests
12862306a36Sopenharmony_ci#
12962306a36Sopenharmony_ci# ELSE IF ${RUN_CPU_TESTS}
13062306a36Sopenharmony_ci# BUILD_TYPE = useconfig:${CONFIG_DIR}/config-cpu
13162306a36Sopenharmony_ci#
13262306a36Sopenharmony_ci# ELSE
13362306a36Sopenharmony_ci# BUILD_TYPE = useconfig:${CONFIG_DIR}/config-network
13462306a36Sopenharmony_ci#
13562306a36Sopenharmony_ci# The if statement may also have comparisons that will and for
13662306a36Sopenharmony_ci# == and !=, strings may be used for both sides.
13762306a36Sopenharmony_ci#
13862306a36Sopenharmony_ci# BOX_TYPE := x86_32
13962306a36Sopenharmony_ci#
14062306a36Sopenharmony_ci# DEFAULTS IF ${BOX_TYPE} == x86_32
14162306a36Sopenharmony_ci# BUILD_TYPE = useconfig:${CONFIG_DIR}/config-32
14262306a36Sopenharmony_ci# ELSE
14362306a36Sopenharmony_ci# BUILD_TYPE = useconfig:${CONFIG_DIR}/config-64
14462306a36Sopenharmony_ci#
14562306a36Sopenharmony_ci# The DEFINED keyword can be used by the IF statements too.
14662306a36Sopenharmony_ci# It returns true if the given config variable or option has been defined
14762306a36Sopenharmony_ci# or false otherwise.
14862306a36Sopenharmony_ci#
14962306a36Sopenharmony_ci# 
15062306a36Sopenharmony_ci# DEFAULTS IF DEFINED USE_CC
15162306a36Sopenharmony_ci# CC := ${USE_CC}
15262306a36Sopenharmony_ci# ELSE
15362306a36Sopenharmony_ci# CC := gcc
15462306a36Sopenharmony_ci#
15562306a36Sopenharmony_ci#
15662306a36Sopenharmony_ci# As well as NOT DEFINED.
15762306a36Sopenharmony_ci#
15862306a36Sopenharmony_ci# DEFAULTS IF NOT DEFINED MAKE_CMD
15962306a36Sopenharmony_ci# MAKE_CMD := make ARCH=x86
16062306a36Sopenharmony_ci#
16162306a36Sopenharmony_ci#
16262306a36Sopenharmony_ci# And/or ops (&&,||) may also be used to make complex conditionals.
16362306a36Sopenharmony_ci#
16462306a36Sopenharmony_ci# TEST_START IF (DEFINED ALL_TESTS || ${MYTEST} == boottest) && ${MACHINE} == gandalf
16562306a36Sopenharmony_ci#
16662306a36Sopenharmony_ci# Notice the use of parentheses. Without any parentheses the above would be
16762306a36Sopenharmony_ci# processed the same as:
16862306a36Sopenharmony_ci#
16962306a36Sopenharmony_ci# TEST_START IF DEFINED ALL_TESTS || (${MYTEST} == boottest && ${MACHINE} == gandalf)
17062306a36Sopenharmony_ci#
17162306a36Sopenharmony_ci#
17262306a36Sopenharmony_ci#
17362306a36Sopenharmony_ci# INCLUDE file
17462306a36Sopenharmony_ci#
17562306a36Sopenharmony_ci# The INCLUDE keyword may be used in DEFAULT sections. This will
17662306a36Sopenharmony_ci# read another config file and process that file as well. The included
17762306a36Sopenharmony_ci# file can include other files, add new test cases or default
17862306a36Sopenharmony_ci# statements. Config variables will be passed to these files and changes
17962306a36Sopenharmony_ci# to config variables will be seen by top level config files. Including
18062306a36Sopenharmony_ci# a file is processed just like the contents of the file was cut and pasted
18162306a36Sopenharmony_ci# into the top level file, except, that include files that end with
18262306a36Sopenharmony_ci# TEST_START sections will have that section ended at the end of
18362306a36Sopenharmony_ci# the include file. That is, an included file is included followed
18462306a36Sopenharmony_ci# by another DEFAULT keyword.
18562306a36Sopenharmony_ci#
18662306a36Sopenharmony_ci# Unlike other files referenced in this config, the file path does not need
18762306a36Sopenharmony_ci# to be absolute. If the file does not start with '/', then the directory
18862306a36Sopenharmony_ci# that the current config file was located in is used. If no config by the
18962306a36Sopenharmony_ci# given name is found there, then the current directory is searched.
19062306a36Sopenharmony_ci#
19162306a36Sopenharmony_ci# INCLUDE myfile
19262306a36Sopenharmony_ci# DEFAULT
19362306a36Sopenharmony_ci#
19462306a36Sopenharmony_ci# is the same as:
19562306a36Sopenharmony_ci#
19662306a36Sopenharmony_ci# INCLUDE myfile
19762306a36Sopenharmony_ci#
19862306a36Sopenharmony_ci# Note, if the include file does not contain a full path, the file is
19962306a36Sopenharmony_ci# searched first by the location of the original include file, and then
20062306a36Sopenharmony_ci# by the location that ktest.pl was executed in.
20162306a36Sopenharmony_ci#
20262306a36Sopenharmony_ci
20362306a36Sopenharmony_ci#### Config variables ####
20462306a36Sopenharmony_ci#
20562306a36Sopenharmony_ci# This config file can also contain "config variables".
20662306a36Sopenharmony_ci# These are assigned with ":=" instead of the ktest option
20762306a36Sopenharmony_ci# assignment "=".
20862306a36Sopenharmony_ci#
20962306a36Sopenharmony_ci# The difference between ktest options and config variables
21062306a36Sopenharmony_ci# is that config variables can be used multiple times,
21162306a36Sopenharmony_ci# where each instance will override the previous instance.
21262306a36Sopenharmony_ci# And that they only live at time of processing this config.
21362306a36Sopenharmony_ci#
21462306a36Sopenharmony_ci# The advantage to config variables are that they can be used
21562306a36Sopenharmony_ci# by any option or any other config variables to define thing
21662306a36Sopenharmony_ci# that you may use over and over again in the options.
21762306a36Sopenharmony_ci#
21862306a36Sopenharmony_ci# For example:
21962306a36Sopenharmony_ci#
22062306a36Sopenharmony_ci# USER      := root
22162306a36Sopenharmony_ci# TARGET    := mybox
22262306a36Sopenharmony_ci# TEST_CASE := ssh ${USER}@${TARGET} /path/to/my/test
22362306a36Sopenharmony_ci#
22462306a36Sopenharmony_ci# TEST_START
22562306a36Sopenharmony_ci# MIN_CONFIG = config1
22662306a36Sopenharmony_ci# TEST = ${TEST_CASE}
22762306a36Sopenharmony_ci#
22862306a36Sopenharmony_ci# TEST_START
22962306a36Sopenharmony_ci# MIN_CONFIG = config2
23062306a36Sopenharmony_ci# TEST = ${TEST_CASE}
23162306a36Sopenharmony_ci#
23262306a36Sopenharmony_ci# TEST_CASE := ssh ${USER}@${TARGET} /path/to/my/test2
23362306a36Sopenharmony_ci#
23462306a36Sopenharmony_ci# TEST_START
23562306a36Sopenharmony_ci# MIN_CONFIG = config1
23662306a36Sopenharmony_ci# TEST = ${TEST_CASE}
23762306a36Sopenharmony_ci#
23862306a36Sopenharmony_ci# TEST_START
23962306a36Sopenharmony_ci# MIN_CONFIG = config2
24062306a36Sopenharmony_ci# TEST = ${TEST_CASE}
24162306a36Sopenharmony_ci#
24262306a36Sopenharmony_ci# TEST_DIR := /home/me/test
24362306a36Sopenharmony_ci#
24462306a36Sopenharmony_ci# BUILD_DIR = ${TEST_DIR}/linux.git
24562306a36Sopenharmony_ci# OUTPUT_DIR = ${TEST_DIR}/test
24662306a36Sopenharmony_ci#
24762306a36Sopenharmony_ci# Note, the config variables are evaluated immediately, thus
24862306a36Sopenharmony_ci# updating TARGET after TEST_CASE has been assigned does nothing
24962306a36Sopenharmony_ci# to TEST_CASE.
25062306a36Sopenharmony_ci#
25162306a36Sopenharmony_ci# As shown in the example, to evaluate a config variable, you
25262306a36Sopenharmony_ci# use the ${X} convention. Simple $X will not work.
25362306a36Sopenharmony_ci#
25462306a36Sopenharmony_ci# If the config variable does not exist, the ${X} will not
25562306a36Sopenharmony_ci# be evaluated. Thus:
25662306a36Sopenharmony_ci#
25762306a36Sopenharmony_ci# MAKE_CMD = PATH=/mypath:${PATH} make
25862306a36Sopenharmony_ci#
25962306a36Sopenharmony_ci# If PATH is not a config variable, then the ${PATH} in
26062306a36Sopenharmony_ci# the MAKE_CMD option will be evaluated by the shell when
26162306a36Sopenharmony_ci# the MAKE_CMD option is passed into shell processing.
26262306a36Sopenharmony_ci#
26362306a36Sopenharmony_ci# Shell commands can also be inserted with the ${shell <command>}
26462306a36Sopenharmony_ci# expression. Note, this is case sensitive, thus ${SHELL <command>}
26562306a36Sopenharmony_ci# will not work.
26662306a36Sopenharmony_ci#
26762306a36Sopenharmony_ci# HOSTNAME := ${shell hostname}
26862306a36Sopenharmony_ci# DEFAULTS IF "${HOSTNAME}" == "frodo"
26962306a36Sopenharmony_ci#
27062306a36Sopenharmony_ci
27162306a36Sopenharmony_ci#### Using options in other options ####
27262306a36Sopenharmony_ci#
27362306a36Sopenharmony_ci# Options that are defined in the config file may also be used
27462306a36Sopenharmony_ci# by other options. All options are evaluated at time of
27562306a36Sopenharmony_ci# use (except that config variables are evaluated at config
27662306a36Sopenharmony_ci# processing time).
27762306a36Sopenharmony_ci#
27862306a36Sopenharmony_ci# If an ktest option is used within another option, instead of
27962306a36Sopenharmony_ci# typing it again in that option you can simply use the option
28062306a36Sopenharmony_ci# just like you can config variables.
28162306a36Sopenharmony_ci#
28262306a36Sopenharmony_ci# MACHINE = mybox
28362306a36Sopenharmony_ci#
28462306a36Sopenharmony_ci# TEST = ssh root@${MACHINE} /path/to/test
28562306a36Sopenharmony_ci#
28662306a36Sopenharmony_ci# The option will be used per test case. Thus:
28762306a36Sopenharmony_ci#
28862306a36Sopenharmony_ci# TEST_TYPE = test
28962306a36Sopenharmony_ci# TEST = ssh root@{MACHINE}
29062306a36Sopenharmony_ci#
29162306a36Sopenharmony_ci# TEST_START
29262306a36Sopenharmony_ci# MACHINE = box1
29362306a36Sopenharmony_ci#
29462306a36Sopenharmony_ci# TEST_START
29562306a36Sopenharmony_ci# MACHINE = box2
29662306a36Sopenharmony_ci#
29762306a36Sopenharmony_ci# For both test cases, MACHINE will be evaluated at the time
29862306a36Sopenharmony_ci# of the test case. The first test will run ssh root@box1
29962306a36Sopenharmony_ci# and the second will run ssh root@box2.
30062306a36Sopenharmony_ci
30162306a36Sopenharmony_ci#### Mandatory Default Options ####
30262306a36Sopenharmony_ci
30362306a36Sopenharmony_ci# These options must be in the default section, although most
30462306a36Sopenharmony_ci# may be overridden by test options.
30562306a36Sopenharmony_ci
30662306a36Sopenharmony_ci# The machine hostname that you will test
30762306a36Sopenharmony_ci#MACHINE = target
30862306a36Sopenharmony_ci
30962306a36Sopenharmony_ci# The box is expected to have ssh on normal bootup, provide the user
31062306a36Sopenharmony_ci#  (most likely root, since you need privileged operations)
31162306a36Sopenharmony_ci#SSH_USER = root
31262306a36Sopenharmony_ci
31362306a36Sopenharmony_ci# The directory that contains the Linux source code
31462306a36Sopenharmony_ci#BUILD_DIR = /home/test/linux.git
31562306a36Sopenharmony_ci
31662306a36Sopenharmony_ci# The directory that the objects will be built
31762306a36Sopenharmony_ci# (can not be same as BUILD_DIR)
31862306a36Sopenharmony_ci#OUTPUT_DIR = /home/test/build/target
31962306a36Sopenharmony_ci
32062306a36Sopenharmony_ci# The location of the compiled file to copy to the target
32162306a36Sopenharmony_ci# (relative to OUTPUT_DIR)
32262306a36Sopenharmony_ci#BUILD_TARGET = arch/x86/boot/bzImage
32362306a36Sopenharmony_ci
32462306a36Sopenharmony_ci# The place to put your image on the test machine
32562306a36Sopenharmony_ci#TARGET_IMAGE = /boot/vmlinuz-test
32662306a36Sopenharmony_ci
32762306a36Sopenharmony_ci# A script or command to reboot the box
32862306a36Sopenharmony_ci#
32962306a36Sopenharmony_ci# Here is a digital loggers power switch example
33062306a36Sopenharmony_ci#POWER_CYCLE = wget --no-proxy -O /dev/null -q  --auth-no-challenge 'http://admin:admin@power/outlet?5=CCL'
33162306a36Sopenharmony_ci#
33262306a36Sopenharmony_ci# Here is an example to reboot a virtual box on the current host
33362306a36Sopenharmony_ci# with the name "Guest".
33462306a36Sopenharmony_ci#POWER_CYCLE = virsh destroy Guest; sleep 5; virsh start Guest
33562306a36Sopenharmony_ci
33662306a36Sopenharmony_ci# The script or command that reads the console
33762306a36Sopenharmony_ci#
33862306a36Sopenharmony_ci#  If you use ttywatch server, something like the following would work.
33962306a36Sopenharmony_ci#CONSOLE = nc -d localhost 3001
34062306a36Sopenharmony_ci#
34162306a36Sopenharmony_ci# For a virtual machine with guest name "Guest".
34262306a36Sopenharmony_ci#CONSOLE =  virsh console Guest
34362306a36Sopenharmony_ci
34462306a36Sopenharmony_ci# Signal to send to kill console.
34562306a36Sopenharmony_ci# ktest.pl will create a child process to monitor the console.
34662306a36Sopenharmony_ci# When the console is finished, ktest will kill the child process
34762306a36Sopenharmony_ci# with this signal.
34862306a36Sopenharmony_ci# (default INT)
34962306a36Sopenharmony_ci#CLOSE_CONSOLE_SIGNAL = HUP
35062306a36Sopenharmony_ci
35162306a36Sopenharmony_ci# Required version ending to differentiate the test
35262306a36Sopenharmony_ci# from other linux builds on the system.
35362306a36Sopenharmony_ci#LOCALVERSION = -test
35462306a36Sopenharmony_ci
35562306a36Sopenharmony_ci# For REBOOT_TYPE = grub2, you must specify where the grub.cfg
35662306a36Sopenharmony_ci# file is. This is the file that is searched to find the menu
35762306a36Sopenharmony_ci# option to boot to with GRUB_REBOOT
35862306a36Sopenharmony_ci#GRUB_FILE = /boot/grub2/grub.cfg
35962306a36Sopenharmony_ci
36062306a36Sopenharmony_ci# The tool for REBOOT_TYPE = grub2 or grub2bls to set the next reboot kernel
36162306a36Sopenharmony_ci# to boot into (one shot mode).
36262306a36Sopenharmony_ci# (default grub2_reboot)
36362306a36Sopenharmony_ci#GRUB_REBOOT = grub2_reboot
36462306a36Sopenharmony_ci
36562306a36Sopenharmony_ci# The grub title name for the test kernel to boot
36662306a36Sopenharmony_ci# (Only mandatory if REBOOT_TYPE = grub or grub2 or grub2bls)
36762306a36Sopenharmony_ci#
36862306a36Sopenharmony_ci# Note, ktest.pl will not update the grub menu.lst, you need to
36962306a36Sopenharmony_ci# manually add an option for the test. ktest.pl will search
37062306a36Sopenharmony_ci# the grub menu.lst for this option to find what kernel to
37162306a36Sopenharmony_ci# reboot into.
37262306a36Sopenharmony_ci#
37362306a36Sopenharmony_ci# For example, if in the /boot/grub/menu.lst the test kernel title has:
37462306a36Sopenharmony_ci# title Test Kernel
37562306a36Sopenharmony_ci# kernel vmlinuz-test
37662306a36Sopenharmony_ci#
37762306a36Sopenharmony_ci# For grub2, a search of top level "menuentry"s are done. No
37862306a36Sopenharmony_ci# submenu is searched. The menu is found by searching for the
37962306a36Sopenharmony_ci# contents of GRUB_MENU in the line that starts with "menuentry".
38062306a36Sopenharmony_ci# You may want to include the quotes around the option. For example:
38162306a36Sopenharmony_ci# for: menuentry 'Test Kernel'
38262306a36Sopenharmony_ci# do a: GRUB_MENU = 'Test Kernel'
38362306a36Sopenharmony_ci# For customizing, add your entry in /etc/grub.d/40_custom.
38462306a36Sopenharmony_ci#
38562306a36Sopenharmony_ci# For grub2bls, a search of "title"s are done. The menu is found
38662306a36Sopenharmony_ci# by searching for the contents of GRUB_MENU in the line that starts
38762306a36Sopenharmony_ci# with "title".
38862306a36Sopenharmony_ci#
38962306a36Sopenharmony_ci#GRUB_MENU = Test Kernel
39062306a36Sopenharmony_ci
39162306a36Sopenharmony_ci# For REBOOT_TYPE = syslinux, the name of the syslinux executable
39262306a36Sopenharmony_ci# (on the target) to use to set up the next reboot to boot the
39362306a36Sopenharmony_ci# test kernel.
39462306a36Sopenharmony_ci# (default extlinux)
39562306a36Sopenharmony_ci#SYSLINUX = syslinux
39662306a36Sopenharmony_ci
39762306a36Sopenharmony_ci# For REBOOT_TYPE = syslinux, the path that is passed to to the
39862306a36Sopenharmony_ci# syslinux command where syslinux is installed.
39962306a36Sopenharmony_ci# (default /boot/extlinux)
40062306a36Sopenharmony_ci#SYSLINUX_PATH = /boot/syslinux
40162306a36Sopenharmony_ci
40262306a36Sopenharmony_ci# For REBOOT_TYPE = syslinux, the syslinux label that references the
40362306a36Sopenharmony_ci# test kernel in the syslinux config file.
40462306a36Sopenharmony_ci# (default undefined)
40562306a36Sopenharmony_ci#SYSLINUX_LABEL = "test-kernel"
40662306a36Sopenharmony_ci
40762306a36Sopenharmony_ci# A script to reboot the target into the test kernel
40862306a36Sopenharmony_ci# This and SWITCH_TO_TEST are about the same, except
40962306a36Sopenharmony_ci# SWITCH_TO_TEST is run even for REBOOT_TYPE = grub.
41062306a36Sopenharmony_ci# This may be left undefined.
41162306a36Sopenharmony_ci# (default undefined)
41262306a36Sopenharmony_ci#REBOOT_SCRIPT =
41362306a36Sopenharmony_ci
41462306a36Sopenharmony_ci#### Optional Config Options (all have defaults) ####
41562306a36Sopenharmony_ci
41662306a36Sopenharmony_ci# Email options for receiving notifications. Users must setup
41762306a36Sopenharmony_ci# the specified mailer prior to using this feature.
41862306a36Sopenharmony_ci#
41962306a36Sopenharmony_ci# (default undefined)
42062306a36Sopenharmony_ci#MAILTO =
42162306a36Sopenharmony_ci#
42262306a36Sopenharmony_ci# Supported mailers: sendmail, mail, mailx
42362306a36Sopenharmony_ci# (default sendmail)
42462306a36Sopenharmony_ci#MAILER = sendmail
42562306a36Sopenharmony_ci#
42662306a36Sopenharmony_ci# The executable to run
42762306a36Sopenharmony_ci# (default: for sendmail "/usr/sbin/sendmail", otherwise equals ${MAILER})
42862306a36Sopenharmony_ci#MAIL_EXEC = /usr/sbin/sendmail
42962306a36Sopenharmony_ci#
43062306a36Sopenharmony_ci# The command used to send mail, which uses the above options
43162306a36Sopenharmony_ci# can be modified. By default if the mailer is "sendmail" then
43262306a36Sopenharmony_ci#  MAIL_COMMAND = echo \'Subject: $SUBJECT\n\n$MESSAGE\' | $MAIL_PATH/$MAILER -t $MAILTO
43362306a36Sopenharmony_ci# For mail or mailx:
43462306a36Sopenharmony_ci#  MAIL_COMMAND = "$MAIL_PATH/$MAILER -s \'$SUBJECT\' $MAILTO <<< \'$MESSAGE\'
43562306a36Sopenharmony_ci# ktest.pl will do the substitution for MAIL_PATH, MAILER, MAILTO at the time
43662306a36Sopenharmony_ci#    it sends the mail if "$FOO" format is used. If "${FOO}" format is used,
43762306a36Sopenharmony_ci#    then the substitutions will occur at the time the config file is read.
43862306a36Sopenharmony_ci#    But note, MAIL_PATH and MAILER require being set by the config file if
43962306a36Sopenharmony_ci#     ${MAIL_PATH} or ${MAILER} are used, but not if $MAIL_PATH or $MAILER are.
44062306a36Sopenharmony_ci#MAIL_COMMAND = echo \'Subject: $SUBJECT\n\n$MESSAGE\' | $MAIL_PATH/$MAILER -t $MAILTO
44162306a36Sopenharmony_ci#
44262306a36Sopenharmony_ci# Errors are defined as those would terminate the script
44362306a36Sopenharmony_ci# (default 1)
44462306a36Sopenharmony_ci#EMAIL_ON_ERROR = 1
44562306a36Sopenharmony_ci# (default 1)
44662306a36Sopenharmony_ci#EMAIL_WHEN_FINISHED = 1
44762306a36Sopenharmony_ci# (default 0)
44862306a36Sopenharmony_ci#EMAIL_WHEN_STARTED = 1
44962306a36Sopenharmony_ci#
45062306a36Sopenharmony_ci# Users can cancel the test by Ctrl^C
45162306a36Sopenharmony_ci# (default 0)
45262306a36Sopenharmony_ci#EMAIL_WHEN_CANCELED = 1
45362306a36Sopenharmony_ci#
45462306a36Sopenharmony_ci# If a test ends with an error and EMAIL_ON_ERROR is set as well
45562306a36Sopenharmony_ci# as a LOG_FILE is defined, then the log of the failing test will
45662306a36Sopenharmony_ci# be included in the email that is sent.
45762306a36Sopenharmony_ci# It is possible that the log may be very large, in which case,
45862306a36Sopenharmony_ci# only the last amount of the log should be sent. To limit how
45962306a36Sopenharmony_ci# much of the log is sent, set MAIL_MAX_SIZE. This will be the
46062306a36Sopenharmony_ci# size in bytes of the last portion of the log of the failed
46162306a36Sopenharmony_ci# test file. That is, if this is set to 100000, then only the
46262306a36Sopenharmony_ci# last 100 thousand bytes of the log file will be included in
46362306a36Sopenharmony_ci# the email.
46462306a36Sopenharmony_ci# (default undef)
46562306a36Sopenharmony_ci#MAIL_MAX_SIZE = 1000000
46662306a36Sopenharmony_ci
46762306a36Sopenharmony_ci# Start a test setup. If you leave this off, all options
46862306a36Sopenharmony_ci# will be default and the test will run once.
46962306a36Sopenharmony_ci# This is a label and not really an option (it takes no value).
47062306a36Sopenharmony_ci# You can append ITERATE and a number after it to iterate the
47162306a36Sopenharmony_ci# test a number of times, or SKIP to ignore this test.
47262306a36Sopenharmony_ci#
47362306a36Sopenharmony_ci#TEST_START
47462306a36Sopenharmony_ci#TEST_START ITERATE 5
47562306a36Sopenharmony_ci#TEST_START SKIP
47662306a36Sopenharmony_ci
47762306a36Sopenharmony_ci# Have the following options as default again. Used after tests
47862306a36Sopenharmony_ci# have already been defined by TEST_START. Optionally, you can
47962306a36Sopenharmony_ci# just define all default options before the first TEST_START
48062306a36Sopenharmony_ci# and you do not need this option.
48162306a36Sopenharmony_ci#
48262306a36Sopenharmony_ci# This is a label and not really an option (it takes no value).
48362306a36Sopenharmony_ci# You can append SKIP to this label and the options within this
48462306a36Sopenharmony_ci# section will be ignored.
48562306a36Sopenharmony_ci#
48662306a36Sopenharmony_ci# DEFAULTS
48762306a36Sopenharmony_ci# DEFAULTS SKIP
48862306a36Sopenharmony_ci
48962306a36Sopenharmony_ci# If you want to execute some command before the first test runs
49062306a36Sopenharmony_ci# you can set this option. Note, it can be set as a default option
49162306a36Sopenharmony_ci# or an option in the first test case. All other test cases will
49262306a36Sopenharmony_ci# ignore it. If both the default and first test have this option
49362306a36Sopenharmony_ci# set, then the first test will take precedence.
49462306a36Sopenharmony_ci#
49562306a36Sopenharmony_ci# default (undefined)
49662306a36Sopenharmony_ci#PRE_KTEST = ${SSH} ~/set_up_test
49762306a36Sopenharmony_ci
49862306a36Sopenharmony_ci# If you want to execute some command after all the tests have
49962306a36Sopenharmony_ci# completed, you can set this option. Note, it can be set as a
50062306a36Sopenharmony_ci# default or any test case can override it. If multiple test cases
50162306a36Sopenharmony_ci# set this option, then the last test case that set it will take
50262306a36Sopenharmony_ci# precedence
50362306a36Sopenharmony_ci#
50462306a36Sopenharmony_ci# default (undefined)
50562306a36Sopenharmony_ci#POST_KTEST = ${SSH} ~/dismantle_test
50662306a36Sopenharmony_ci
50762306a36Sopenharmony_ci# If you want to remove the kernel entry in Boot Loader Specification (BLS)
50862306a36Sopenharmony_ci# environment, use kernel-install command.
50962306a36Sopenharmony_ci# Here's the example:
51062306a36Sopenharmony_ci#POST_KTEST = ssh root@Test "/usr/bin/kernel-install remove $KERNEL_VERSION"
51162306a36Sopenharmony_ci
51262306a36Sopenharmony_ci# The default test type (default test)
51362306a36Sopenharmony_ci# The test types may be:
51462306a36Sopenharmony_ci#   build   - only build the kernel, do nothing else
51562306a36Sopenharmony_ci#   install - build and install, but do nothing else (does not reboot)
51662306a36Sopenharmony_ci#   boot    - build, install, and boot the kernel
51762306a36Sopenharmony_ci#   test    - build, boot and if TEST is set, run the test script
51862306a36Sopenharmony_ci#          (If TEST is not set, it defaults back to boot)
51962306a36Sopenharmony_ci#   bisect - Perform a bisect on the kernel (see BISECT_TYPE below)
52062306a36Sopenharmony_ci#   patchcheck - Do a test on a series of commits in git (see PATCHCHECK below)
52162306a36Sopenharmony_ci#TEST_TYPE = test
52262306a36Sopenharmony_ci
52362306a36Sopenharmony_ci# Test to run if there is a successful boot and TEST_TYPE is test.
52462306a36Sopenharmony_ci# Must exit with 0 on success and non zero on error
52562306a36Sopenharmony_ci# default (undefined)
52662306a36Sopenharmony_ci#TEST = ssh user@machine /root/run_test
52762306a36Sopenharmony_ci
52862306a36Sopenharmony_ci# The build type is any make config type or special command
52962306a36Sopenharmony_ci#  (default oldconfig)
53062306a36Sopenharmony_ci#   nobuild - skip the clean and build step
53162306a36Sopenharmony_ci#   useconfig:/path/to/config - use the given config and run
53262306a36Sopenharmony_ci#              oldconfig on it.
53362306a36Sopenharmony_ci# This option is ignored if TEST_TYPE is patchcheck or bisect
53462306a36Sopenharmony_ci#BUILD_TYPE = randconfig
53562306a36Sopenharmony_ci
53662306a36Sopenharmony_ci# The make command (default make)
53762306a36Sopenharmony_ci# If you are building a 32bit x86 on a 64 bit host
53862306a36Sopenharmony_ci#MAKE_CMD = CC=i386-gcc AS=i386-as make ARCH=i386
53962306a36Sopenharmony_ci
54062306a36Sopenharmony_ci# Any build options for the make of the kernel (not for other makes, like configs)
54162306a36Sopenharmony_ci# (default "")
54262306a36Sopenharmony_ci#BUILD_OPTIONS = -j20
54362306a36Sopenharmony_ci
54462306a36Sopenharmony_ci# If you need to do some special handling before installing
54562306a36Sopenharmony_ci# you can add a script with this option.
54662306a36Sopenharmony_ci# The environment variable KERNEL_VERSION will be set to the
54762306a36Sopenharmony_ci# kernel version that is used.
54862306a36Sopenharmony_ci#
54962306a36Sopenharmony_ci# default (undefined)
55062306a36Sopenharmony_ci#PRE_INSTALL = ssh user@target rm -rf '/lib/modules/*-test*'
55162306a36Sopenharmony_ci
55262306a36Sopenharmony_ci# If you need an initrd, you can add a script or code here to install
55362306a36Sopenharmony_ci# it. The environment variable KERNEL_VERSION will be set to the
55462306a36Sopenharmony_ci# kernel version that is used. Remember to add the initrd line
55562306a36Sopenharmony_ci# to your grub menu.lst file.
55662306a36Sopenharmony_ci#
55762306a36Sopenharmony_ci# Here's a couple of examples to use:
55862306a36Sopenharmony_ci#POST_INSTALL = ssh user@target /sbin/mkinitrd --allow-missing -f /boot/initramfs-test.img $KERNEL_VERSION
55962306a36Sopenharmony_ci#
56062306a36Sopenharmony_ci# or on some systems:
56162306a36Sopenharmony_ci#POST_INSTALL = ssh user@target /sbin/dracut -f /boot/initramfs-test.img $KERNEL_VERSION
56262306a36Sopenharmony_ci
56362306a36Sopenharmony_ci# If you want to add the kernel entry in Boot Loader Specification (BLS)
56462306a36Sopenharmony_ci# environment, use kernel-install command.
56562306a36Sopenharmony_ci# Here's the example:
56662306a36Sopenharmony_ci#POST_INSTALL = ssh root@Test "/usr/bin/kernel-install add $KERNEL_VERSION /boot/vmlinuz-$KERNEL_VERSION"
56762306a36Sopenharmony_ci
56862306a36Sopenharmony_ci# If for some reason you just want to boot the kernel and you do not
56962306a36Sopenharmony_ci# want the test to install anything new. For example, you may just want
57062306a36Sopenharmony_ci# to boot test the same kernel over and over and do not want to go through
57162306a36Sopenharmony_ci# the hassle of installing anything, you can set this option to 1
57262306a36Sopenharmony_ci# (default 0)
57362306a36Sopenharmony_ci#NO_INSTALL = 1
57462306a36Sopenharmony_ci
57562306a36Sopenharmony_ci# If there is a command that you want to run before the individual test
57662306a36Sopenharmony_ci# case executes, then you can set this option
57762306a36Sopenharmony_ci#
57862306a36Sopenharmony_ci# default (undefined)
57962306a36Sopenharmony_ci#PRE_TEST = ${SSH} reboot_to_special_kernel
58062306a36Sopenharmony_ci
58162306a36Sopenharmony_ci# To kill the entire test if PRE_TEST is defined but fails set this
58262306a36Sopenharmony_ci# to 1.
58362306a36Sopenharmony_ci# (default 0)
58462306a36Sopenharmony_ci#PRE_TEST_DIE = 1
58562306a36Sopenharmony_ci
58662306a36Sopenharmony_ci# If there is a command you want to run after the individual test case
58762306a36Sopenharmony_ci# completes, then you can set this option.
58862306a36Sopenharmony_ci#
58962306a36Sopenharmony_ci# default (undefined)
59062306a36Sopenharmony_ci#POST_TEST = cd ${BUILD_DIR}; git reset --hard
59162306a36Sopenharmony_ci
59262306a36Sopenharmony_ci# If there is a script that you require to run before the build is done
59362306a36Sopenharmony_ci# you can specify it with PRE_BUILD.
59462306a36Sopenharmony_ci#
59562306a36Sopenharmony_ci# One example may be if you must add a temporary patch to the build to
59662306a36Sopenharmony_ci# fix a unrelated bug to perform a patchcheck test. This will apply the
59762306a36Sopenharmony_ci# patch before each build that is made. Use the POST_BUILD to do a git reset --hard
59862306a36Sopenharmony_ci# to remove the patch.
59962306a36Sopenharmony_ci#
60062306a36Sopenharmony_ci# (default undef)
60162306a36Sopenharmony_ci#PRE_BUILD = cd ${BUILD_DIR} && patch -p1 < /tmp/temp.patch
60262306a36Sopenharmony_ci
60362306a36Sopenharmony_ci# To specify if the test should fail if the PRE_BUILD fails,
60462306a36Sopenharmony_ci# PRE_BUILD_DIE needs to be set to 1. Otherwise the PRE_BUILD
60562306a36Sopenharmony_ci# result is ignored.
60662306a36Sopenharmony_ci# (default 0)
60762306a36Sopenharmony_ci# PRE_BUILD_DIE = 1
60862306a36Sopenharmony_ci
60962306a36Sopenharmony_ci# If there is a script that should run after the build is done
61062306a36Sopenharmony_ci# you can specify it with POST_BUILD.
61162306a36Sopenharmony_ci#
61262306a36Sopenharmony_ci# As the example in PRE_BUILD, POST_BUILD can be used to reset modifications
61362306a36Sopenharmony_ci# made by the PRE_BUILD.
61462306a36Sopenharmony_ci#
61562306a36Sopenharmony_ci# (default undef)
61662306a36Sopenharmony_ci#POST_BUILD = cd ${BUILD_DIR} && git reset --hard
61762306a36Sopenharmony_ci
61862306a36Sopenharmony_ci# To specify if the test should fail if the POST_BUILD fails,
61962306a36Sopenharmony_ci# POST_BUILD_DIE needs to be set to 1. Otherwise the POST_BUILD
62062306a36Sopenharmony_ci# result is ignored.
62162306a36Sopenharmony_ci# (default 0)
62262306a36Sopenharmony_ci#POST_BUILD_DIE = 1
62362306a36Sopenharmony_ci
62462306a36Sopenharmony_ci# Way to reboot the box to the test kernel.
62562306a36Sopenharmony_ci# Only valid options so far are "grub", "grub2", "syslinux" and "script"
62662306a36Sopenharmony_ci# (default grub)
62762306a36Sopenharmony_ci# If you specify grub, it will assume grub version 1
62862306a36Sopenharmony_ci# and will search in /boot/grub/menu.lst for the title $GRUB_MENU
62962306a36Sopenharmony_ci# and select that target to reboot to the kernel. If this is not
63062306a36Sopenharmony_ci# your setup, then specify "script" and have a command or script
63162306a36Sopenharmony_ci# specified in REBOOT_SCRIPT to boot to the target.
63262306a36Sopenharmony_ci#
63362306a36Sopenharmony_ci# For REBOOT_TYPE = grub2, you must define both GRUB_MENU and
63462306a36Sopenharmony_ci# GRUB_FILE.
63562306a36Sopenharmony_ci#
63662306a36Sopenharmony_ci# For REBOOT_TYPE = grub2bls, you must define GRUB_MENU.
63762306a36Sopenharmony_ci#
63862306a36Sopenharmony_ci# For REBOOT_TYPE = syslinux, you must define SYSLINUX_LABEL, and
63962306a36Sopenharmony_ci# perhaps modify SYSLINUX (default extlinux) and SYSLINUX_PATH
64062306a36Sopenharmony_ci# (default /boot/extlinux)
64162306a36Sopenharmony_ci#
64262306a36Sopenharmony_ci# The entry in /boot/grub/menu.lst must be entered in manually.
64362306a36Sopenharmony_ci# The test will not modify that file.
64462306a36Sopenharmony_ci#REBOOT_TYPE = grub
64562306a36Sopenharmony_ci
64662306a36Sopenharmony_ci# If you are using a machine that doesn't boot with grub, and
64762306a36Sopenharmony_ci# perhaps gets its kernel from a remote server (tftp), then
64862306a36Sopenharmony_ci# you can use this option to update the target image with the
64962306a36Sopenharmony_ci# test image.
65062306a36Sopenharmony_ci#
65162306a36Sopenharmony_ci# You could also do the same with POST_INSTALL, but the difference
65262306a36Sopenharmony_ci# between that option and this option is that POST_INSTALL runs
65362306a36Sopenharmony_ci# after the install, where this one runs just before a reboot.
65462306a36Sopenharmony_ci# (default undefined)
65562306a36Sopenharmony_ci#SWITCH_TO_TEST = cp ${OUTPUT_DIR}/${BUILD_TARGET} ${TARGET_IMAGE}
65662306a36Sopenharmony_ci
65762306a36Sopenharmony_ci# If you are using a machine that doesn't boot with grub, and
65862306a36Sopenharmony_ci# perhaps gets its kernel from a remote server (tftp), then
65962306a36Sopenharmony_ci# you can use this option to update the target image with the
66062306a36Sopenharmony_ci# the known good image to reboot safely back into.
66162306a36Sopenharmony_ci#
66262306a36Sopenharmony_ci# This option holds a command that will execute before needing
66362306a36Sopenharmony_ci# to reboot to a good known image.
66462306a36Sopenharmony_ci# (default undefined)
66562306a36Sopenharmony_ci#SWITCH_TO_GOOD = ssh ${SSH_USER}/${MACHINE} cp good_image ${TARGET_IMAGE}
66662306a36Sopenharmony_ci
66762306a36Sopenharmony_ci# The min config that is needed to build for the machine
66862306a36Sopenharmony_ci# A nice way to create this is with the following:
66962306a36Sopenharmony_ci#
67062306a36Sopenharmony_ci#   $ ssh target
67162306a36Sopenharmony_ci#   $ lsmod > mymods
67262306a36Sopenharmony_ci#   $ scp mymods host:/tmp
67362306a36Sopenharmony_ci#   $ exit
67462306a36Sopenharmony_ci#   $ cd linux.git
67562306a36Sopenharmony_ci#   $ rm .config
67662306a36Sopenharmony_ci#   $ make LSMOD=mymods localyesconfig
67762306a36Sopenharmony_ci#   $ grep '^CONFIG' .config > /home/test/config-min
67862306a36Sopenharmony_ci#
67962306a36Sopenharmony_ci# If you want even less configs:
68062306a36Sopenharmony_ci#
68162306a36Sopenharmony_ci#   log in directly to target (do not ssh)
68262306a36Sopenharmony_ci#
68362306a36Sopenharmony_ci#   $ su
68462306a36Sopenharmony_ci#   # lsmod | cut -d' ' -f1 | xargs rmmod
68562306a36Sopenharmony_ci#
68662306a36Sopenharmony_ci#   repeat the above several times
68762306a36Sopenharmony_ci#
68862306a36Sopenharmony_ci#   # lsmod > mymods
68962306a36Sopenharmony_ci#   # reboot
69062306a36Sopenharmony_ci#
69162306a36Sopenharmony_ci# May need to reboot to get your network back to copy the mymods
69262306a36Sopenharmony_ci# to the host, and then remove the previous .config and run the
69362306a36Sopenharmony_ci# localyesconfig again. The CONFIG_MIN generated like this will
69462306a36Sopenharmony_ci# not guarantee network activity to the box so the TEST_TYPE of
69562306a36Sopenharmony_ci# test may fail.
69662306a36Sopenharmony_ci#
69762306a36Sopenharmony_ci# You might also want to set:
69862306a36Sopenharmony_ci#   CONFIG_CMDLINE="<your options here>"
69962306a36Sopenharmony_ci#  randconfig may set the above and override your real command
70062306a36Sopenharmony_ci#  line options.
70162306a36Sopenharmony_ci# (default undefined)
70262306a36Sopenharmony_ci#MIN_CONFIG = /home/test/config-min
70362306a36Sopenharmony_ci
70462306a36Sopenharmony_ci# Sometimes there's options that just break the boot and
70562306a36Sopenharmony_ci# you do not care about. Here are a few:
70662306a36Sopenharmony_ci#   # CONFIG_STAGING is not set
70762306a36Sopenharmony_ci#  Staging drivers are horrible, and can break the build.
70862306a36Sopenharmony_ci#   # CONFIG_SCSI_DEBUG is not set
70962306a36Sopenharmony_ci#  SCSI_DEBUG may change your root partition
71062306a36Sopenharmony_ci#   # CONFIG_KGDB_SERIAL_CONSOLE is not set
71162306a36Sopenharmony_ci#  KGDB may cause oops waiting for a connection that's not there.
71262306a36Sopenharmony_ci# This option points to the file containing config options that will be prepended
71362306a36Sopenharmony_ci# to the MIN_CONFIG (or be the MIN_CONFIG if it is not set)
71462306a36Sopenharmony_ci#
71562306a36Sopenharmony_ci# Note, config options in MIN_CONFIG will override these options.
71662306a36Sopenharmony_ci#
71762306a36Sopenharmony_ci# (default undefined)
71862306a36Sopenharmony_ci#ADD_CONFIG = /home/test/config-broken
71962306a36Sopenharmony_ci
72062306a36Sopenharmony_ci# The location on the host where to write temp files
72162306a36Sopenharmony_ci# (default /tmp/ktest/${MACHINE})
72262306a36Sopenharmony_ci#TMP_DIR = /tmp/ktest/${MACHINE}
72362306a36Sopenharmony_ci
72462306a36Sopenharmony_ci# Optional log file to write the status (recommended)
72562306a36Sopenharmony_ci#  Note, this is a DEFAULT section only option.
72662306a36Sopenharmony_ci# (default undefined)
72762306a36Sopenharmony_ci#LOG_FILE = /home/test/logfiles/target.log
72862306a36Sopenharmony_ci
72962306a36Sopenharmony_ci# Remove old logfile if it exists before starting all tests.
73062306a36Sopenharmony_ci#  Note, this is a DEFAULT section only option.
73162306a36Sopenharmony_ci# (default 0)
73262306a36Sopenharmony_ci#CLEAR_LOG = 0
73362306a36Sopenharmony_ci
73462306a36Sopenharmony_ci# Line to define a successful boot up in console output.
73562306a36Sopenharmony_ci# This is what the line contains, not the entire line. If you need
73662306a36Sopenharmony_ci# the entire line to match, then use regular expression syntax like:
73762306a36Sopenharmony_ci#  (do not add any quotes around it)
73862306a36Sopenharmony_ci#
73962306a36Sopenharmony_ci#  SUCCESS_LINE = ^MyBox Login:$
74062306a36Sopenharmony_ci#
74162306a36Sopenharmony_ci# (default "login:")
74262306a36Sopenharmony_ci#SUCCESS_LINE = login:
74362306a36Sopenharmony_ci
74462306a36Sopenharmony_ci# To speed up between reboots, defining a line that the
74562306a36Sopenharmony_ci# default kernel produces that represents that the default
74662306a36Sopenharmony_ci# kernel has successfully booted and can be used to pass
74762306a36Sopenharmony_ci# a new test kernel to it. Otherwise ktest.pl will wait till
74862306a36Sopenharmony_ci# SLEEP_TIME to continue.
74962306a36Sopenharmony_ci# (default undefined)
75062306a36Sopenharmony_ci#REBOOT_SUCCESS_LINE = login:
75162306a36Sopenharmony_ci
75262306a36Sopenharmony_ci# In case the console constantly fills the screen, having
75362306a36Sopenharmony_ci# a specified time to stop the test after success is recommended.
75462306a36Sopenharmony_ci# (in seconds)
75562306a36Sopenharmony_ci# (default 10)
75662306a36Sopenharmony_ci#STOP_AFTER_SUCCESS = 10
75762306a36Sopenharmony_ci
75862306a36Sopenharmony_ci# In case the console constantly fills the screen, having
75962306a36Sopenharmony_ci# a specified time to stop the test after failure is recommended.
76062306a36Sopenharmony_ci# (in seconds)
76162306a36Sopenharmony_ci# (default 60)
76262306a36Sopenharmony_ci#STOP_AFTER_FAILURE = 60
76362306a36Sopenharmony_ci
76462306a36Sopenharmony_ci# In case the console constantly fills the screen, having
76562306a36Sopenharmony_ci# a specified time to stop the test if it never succeeds nor fails
76662306a36Sopenharmony_ci# is recommended.
76762306a36Sopenharmony_ci# Note: this is ignored if a success or failure is detected.
76862306a36Sopenharmony_ci# (in seconds)
76962306a36Sopenharmony_ci# (default 600, -1 is to never stop)
77062306a36Sopenharmony_ci#STOP_TEST_AFTER = 600
77162306a36Sopenharmony_ci
77262306a36Sopenharmony_ci# Stop testing if a build fails. If set, the script will end if
77362306a36Sopenharmony_ci# a failure is detected, otherwise it will save off the .config,
77462306a36Sopenharmony_ci# dmesg and bootlog in a directory called
77562306a36Sopenharmony_ci# MACHINE-TEST_TYPE_BUILD_TYPE-fail-yyyymmddhhmmss
77662306a36Sopenharmony_ci# if the STORE_FAILURES directory is set.
77762306a36Sopenharmony_ci# (default 1)
77862306a36Sopenharmony_ci# Note, even if this is set to zero, there are some errors that still
77962306a36Sopenharmony_ci# stop the tests.
78062306a36Sopenharmony_ci#DIE_ON_FAILURE = 1
78162306a36Sopenharmony_ci
78262306a36Sopenharmony_ci# Directory to store failure directories on failure. If this is not
78362306a36Sopenharmony_ci# set, DIE_ON_FAILURE=0 will not save off the .config, dmesg and
78462306a36Sopenharmony_ci# bootlog. This option is ignored if DIE_ON_FAILURE is not set.
78562306a36Sopenharmony_ci# (default undefined)
78662306a36Sopenharmony_ci#STORE_FAILURES = /home/test/failures
78762306a36Sopenharmony_ci
78862306a36Sopenharmony_ci# Directory to store success directories on success. If this is not
78962306a36Sopenharmony_ci# set, the .config, dmesg and bootlog will not be saved if a
79062306a36Sopenharmony_ci# test succeeds.
79162306a36Sopenharmony_ci# (default undefined)
79262306a36Sopenharmony_ci#STORE_SUCCESSES = /home/test/successes
79362306a36Sopenharmony_ci
79462306a36Sopenharmony_ci# Build without doing a make mrproper, or removing .config
79562306a36Sopenharmony_ci# (default 0)
79662306a36Sopenharmony_ci#BUILD_NOCLEAN = 0
79762306a36Sopenharmony_ci
79862306a36Sopenharmony_ci# As the test reads the console, after it hits the SUCCESS_LINE
79962306a36Sopenharmony_ci# the time it waits for the monitor to settle down between reads
80062306a36Sopenharmony_ci# can usually be lowered.
80162306a36Sopenharmony_ci# (in seconds) (default 1)
80262306a36Sopenharmony_ci#BOOTED_TIMEOUT = 1
80362306a36Sopenharmony_ci
80462306a36Sopenharmony_ci# The timeout in seconds when we consider the box hung after
80562306a36Sopenharmony_ci# the console stop producing output. Be sure to leave enough
80662306a36Sopenharmony_ci# time here to get pass a reboot. Some machines may not produce
80762306a36Sopenharmony_ci# any console output for a long time during a reboot. You do
80862306a36Sopenharmony_ci# not want the test to fail just because the system was in
80962306a36Sopenharmony_ci# the process of rebooting to the test kernel.
81062306a36Sopenharmony_ci# (default 120)
81162306a36Sopenharmony_ci#TIMEOUT = 120
81262306a36Sopenharmony_ci
81362306a36Sopenharmony_ci# The timeout in seconds when to test if the box can be rebooted
81462306a36Sopenharmony_ci# or not. Before issuing the reboot command, a ssh connection
81562306a36Sopenharmony_ci# is attempted to see if the target machine is still active.
81662306a36Sopenharmony_ci# If the target does not connect within this timeout, a power cycle
81762306a36Sopenharmony_ci# is issued instead of a reboot.
81862306a36Sopenharmony_ci# CONNECT_TIMEOUT = 25
81962306a36Sopenharmony_ci
82062306a36Sopenharmony_ci# The timeout in seconds for how long to wait for any running command
82162306a36Sopenharmony_ci# to timeout. If not defined, it will let it go indefinitely.
82262306a36Sopenharmony_ci# (default undefined)
82362306a36Sopenharmony_ci#RUN_TIMEOUT = 600
82462306a36Sopenharmony_ci
82562306a36Sopenharmony_ci# In between tests, a reboot of the box may occur, and this
82662306a36Sopenharmony_ci# is the time to wait for the console after it stops producing
82762306a36Sopenharmony_ci# output. Some machines may not produce a large lag on reboot
82862306a36Sopenharmony_ci# so this should accommodate it.
82962306a36Sopenharmony_ci# The difference between this and TIMEOUT, is that TIMEOUT happens
83062306a36Sopenharmony_ci# when rebooting to the test kernel. This sleep time happens
83162306a36Sopenharmony_ci# after a test has completed and we are about to start running
83262306a36Sopenharmony_ci# another test. If a reboot to the reliable kernel happens,
83362306a36Sopenharmony_ci# we wait SLEEP_TIME for the console to stop producing output
83462306a36Sopenharmony_ci# before starting the next test.
83562306a36Sopenharmony_ci#
83662306a36Sopenharmony_ci# You can speed up reboot times even more by setting REBOOT_SUCCESS_LINE.
83762306a36Sopenharmony_ci# (default 60)
83862306a36Sopenharmony_ci#SLEEP_TIME = 60
83962306a36Sopenharmony_ci
84062306a36Sopenharmony_ci# The time in between bisects to sleep (in seconds)
84162306a36Sopenharmony_ci# (default 60)
84262306a36Sopenharmony_ci#BISECT_SLEEP_TIME = 60
84362306a36Sopenharmony_ci
84462306a36Sopenharmony_ci# The max wait time (in seconds) for waiting for the console to finish.
84562306a36Sopenharmony_ci# If for some reason, the console is outputting content without
84662306a36Sopenharmony_ci# ever finishing, this will cause ktest to get stuck. This
84762306a36Sopenharmony_ci# option is the max time ktest will wait for the monitor (console)
84862306a36Sopenharmony_ci# to settle down before continuing.
84962306a36Sopenharmony_ci# (default 1800)
85062306a36Sopenharmony_ci#MAX_MONITOR_WAIT
85162306a36Sopenharmony_ci
85262306a36Sopenharmony_ci# The time in between patch checks to sleep (in seconds)
85362306a36Sopenharmony_ci# (default 60)
85462306a36Sopenharmony_ci#PATCHCHECK_SLEEP_TIME = 60
85562306a36Sopenharmony_ci
85662306a36Sopenharmony_ci# Reboot the target box on error (default 0)
85762306a36Sopenharmony_ci#REBOOT_ON_ERROR = 0
85862306a36Sopenharmony_ci
85962306a36Sopenharmony_ci# Power off the target on error (ignored if REBOOT_ON_ERROR is set)
86062306a36Sopenharmony_ci#  Note, this is a DEFAULT section only option.
86162306a36Sopenharmony_ci# (default 0)
86262306a36Sopenharmony_ci#POWEROFF_ON_ERROR = 0
86362306a36Sopenharmony_ci
86462306a36Sopenharmony_ci# Power off the target after all tests have completed successfully
86562306a36Sopenharmony_ci#  Note, this is a DEFAULT section only option.
86662306a36Sopenharmony_ci# (default 0)
86762306a36Sopenharmony_ci#POWEROFF_ON_SUCCESS = 0
86862306a36Sopenharmony_ci
86962306a36Sopenharmony_ci# Reboot the target after all test completed successfully (default 1)
87062306a36Sopenharmony_ci# (ignored if POWEROFF_ON_SUCCESS is set)
87162306a36Sopenharmony_ci#REBOOT_ON_SUCCESS = 1
87262306a36Sopenharmony_ci
87362306a36Sopenharmony_ci# In case there are issues with rebooting, you can specify this
87462306a36Sopenharmony_ci# to always powercycle after this amount of time after calling
87562306a36Sopenharmony_ci# reboot.
87662306a36Sopenharmony_ci# Note, POWERCYCLE_AFTER_REBOOT = 0 does NOT disable it. It just
87762306a36Sopenharmony_ci# makes it powercycle immediately after rebooting. Do not define
87862306a36Sopenharmony_ci# it if you do not want it.
87962306a36Sopenharmony_ci# (default undefined)
88062306a36Sopenharmony_ci#POWERCYCLE_AFTER_REBOOT = 5
88162306a36Sopenharmony_ci
88262306a36Sopenharmony_ci# In case there's issues with halting, you can specify this
88362306a36Sopenharmony_ci# to always poweroff after this amount of time after calling
88462306a36Sopenharmony_ci# halt.
88562306a36Sopenharmony_ci# Note, POWEROFF_AFTER_HALT = 0 does NOT disable it. It just
88662306a36Sopenharmony_ci# makes it poweroff immediately after halting. Do not define
88762306a36Sopenharmony_ci# it if you do not want it.
88862306a36Sopenharmony_ci# (default undefined)
88962306a36Sopenharmony_ci#POWEROFF_AFTER_HALT = 20
89062306a36Sopenharmony_ci
89162306a36Sopenharmony_ci# A script or command to power off the box (default undefined)
89262306a36Sopenharmony_ci# Needed for POWEROFF_ON_ERROR and SUCCESS
89362306a36Sopenharmony_ci#
89462306a36Sopenharmony_ci# Example for digital loggers power switch:
89562306a36Sopenharmony_ci#POWER_OFF = wget --no-proxy -O /dev/null -q  --auth-no-challenge 'http://admin:admin@power/outlet?5=OFF'
89662306a36Sopenharmony_ci#
89762306a36Sopenharmony_ci# Example for a virtual guest call "Guest".
89862306a36Sopenharmony_ci#POWER_OFF = virsh destroy Guest
89962306a36Sopenharmony_ci
90062306a36Sopenharmony_ci# To have the build fail on "new" warnings, create a file that
90162306a36Sopenharmony_ci# contains a list of all known warnings (they must match exactly
90262306a36Sopenharmony_ci# to the line with 'warning:', 'error:' or 'Error:'. If the option
90362306a36Sopenharmony_ci# WARNINGS_FILE is set, then that file will be read, and if the
90462306a36Sopenharmony_ci# build detects a warning, it will examine this file and if the
90562306a36Sopenharmony_ci# warning does not exist in it, it will fail the build.
90662306a36Sopenharmony_ci#
90762306a36Sopenharmony_ci# Note, if this option is defined to a file that does not exist
90862306a36Sopenharmony_ci# then any warning will fail the build.
90962306a36Sopenharmony_ci#  (see make_warnings_file below)
91062306a36Sopenharmony_ci#
91162306a36Sopenharmony_ci# (optional, default undefined)
91262306a36Sopenharmony_ci#WARNINGS_FILE = ${OUTPUT_DIR}/warnings_file
91362306a36Sopenharmony_ci
91462306a36Sopenharmony_ci# The way to execute a command on the target
91562306a36Sopenharmony_ci# (default ssh $SSH_USER@$MACHINE $SSH_COMMAND";)
91662306a36Sopenharmony_ci# The variables SSH_USER, MACHINE and SSH_COMMAND are defined
91762306a36Sopenharmony_ci#SSH_EXEC = ssh $SSH_USER@$MACHINE $SSH_COMMAND";
91862306a36Sopenharmony_ci
91962306a36Sopenharmony_ci# The way to copy a file to the target (install and modules)
92062306a36Sopenharmony_ci# (default scp $SRC_FILE $SSH_USER@$MACHINE:$DST_FILE)
92162306a36Sopenharmony_ci# The variables SSH_USER, MACHINE are defined by the config
92262306a36Sopenharmony_ci# SRC_FILE and DST_FILE are ktest internal variables and
92362306a36Sopenharmony_ci# should only have '$' and not the '${}' notation.
92462306a36Sopenharmony_ci# (default scp $SRC_FILE ${SSH_USER}@${MACHINE}:$DST_FILE)
92562306a36Sopenharmony_ci#SCP_TO_TARGET = echo skip scp for $SRC_FILE $DST_FILE
92662306a36Sopenharmony_ci
92762306a36Sopenharmony_ci# If install needs to be different than modules, then this
92862306a36Sopenharmony_ci# option will override the SCP_TO_TARGET for installation.
92962306a36Sopenharmony_ci# (default ${SCP_TO_TARGET} )
93062306a36Sopenharmony_ci#SCP_TO_TARGET_INSTALL = scp $SRC_FILE tftp@tftpserver:$DST_FILE
93162306a36Sopenharmony_ci
93262306a36Sopenharmony_ci# The nice way to reboot the target
93362306a36Sopenharmony_ci# (default ssh $SSH_USER@$MACHINE reboot)
93462306a36Sopenharmony_ci# The variables SSH_USER and MACHINE are defined.
93562306a36Sopenharmony_ci#REBOOT = ssh $SSH_USER@$MACHINE reboot
93662306a36Sopenharmony_ci
93762306a36Sopenharmony_ci# The return code of REBOOT
93862306a36Sopenharmony_ci# (default 255)
93962306a36Sopenharmony_ci#REBOOT_RETURN_CODE = 255
94062306a36Sopenharmony_ci
94162306a36Sopenharmony_ci# The way triple faults are detected is by testing the kernel
94262306a36Sopenharmony_ci# banner. If the kernel banner for the kernel we are testing is
94362306a36Sopenharmony_ci# found, and then later a kernel banner for another kernel version
94462306a36Sopenharmony_ci# is found, it is considered that we encountered a triple fault,
94562306a36Sopenharmony_ci# and there is no panic or callback, but simply a reboot.
94662306a36Sopenharmony_ci# To disable this (because it did a false positive) set the following
94762306a36Sopenharmony_ci# to 0.
94862306a36Sopenharmony_ci# (default 1)
94962306a36Sopenharmony_ci#DETECT_TRIPLE_FAULT = 0
95062306a36Sopenharmony_ci
95162306a36Sopenharmony_ci# All options in the config file should be either used by ktest
95262306a36Sopenharmony_ci# or could be used within a value of another option. If an option
95362306a36Sopenharmony_ci# in the config file is not used, ktest will warn about it and ask
95462306a36Sopenharmony_ci# if you want to continue.
95562306a36Sopenharmony_ci#
95662306a36Sopenharmony_ci# If you don't care if there are non-used options, enable this
95762306a36Sopenharmony_ci# option. Be careful though, a non-used option is usually a sign
95862306a36Sopenharmony_ci# of an option name being typed incorrectly.
95962306a36Sopenharmony_ci# (default 0)
96062306a36Sopenharmony_ci#IGNORE_UNUSED = 1
96162306a36Sopenharmony_ci
96262306a36Sopenharmony_ci# When testing a kernel that happens to have WARNINGs, and call
96362306a36Sopenharmony_ci# traces, ktest.pl will detect these and fail a boot or test run
96462306a36Sopenharmony_ci# due to warnings. By setting this option, ktest will ignore
96562306a36Sopenharmony_ci# call traces, and will not fail a test if the kernel produces
96662306a36Sopenharmony_ci# an oops. Use this option with care.
96762306a36Sopenharmony_ci# (default 0)
96862306a36Sopenharmony_ci#IGNORE_ERRORS = 1
96962306a36Sopenharmony_ci
97062306a36Sopenharmony_ci#### Per test run options ####
97162306a36Sopenharmony_ci# The following options are only allowed in TEST_START sections.
97262306a36Sopenharmony_ci# They are ignored in the DEFAULTS sections.
97362306a36Sopenharmony_ci#
97462306a36Sopenharmony_ci# All of these are optional and undefined by default, although
97562306a36Sopenharmony_ci#  some of these options are required for TEST_TYPE of patchcheck
97662306a36Sopenharmony_ci#  and bisect.
97762306a36Sopenharmony_ci#
97862306a36Sopenharmony_ci#
97962306a36Sopenharmony_ci# CHECKOUT = branch
98062306a36Sopenharmony_ci#
98162306a36Sopenharmony_ci#  If the BUILD_DIR is a git repository, then you can set this option
98262306a36Sopenharmony_ci#  to checkout the given branch before running the TEST. If you
98362306a36Sopenharmony_ci#  specify this for the first run, that branch will be used for
98462306a36Sopenharmony_ci#  all preceding tests until a new CHECKOUT is set.
98562306a36Sopenharmony_ci#
98662306a36Sopenharmony_ci#
98762306a36Sopenharmony_ci# TEST_NAME = name
98862306a36Sopenharmony_ci#
98962306a36Sopenharmony_ci#  If you want the test to have a name that is displayed in
99062306a36Sopenharmony_ci#  the test result banner at the end of the test, then use this
99162306a36Sopenharmony_ci#  option. This is useful to search for the RESULT keyword and
99262306a36Sopenharmony_ci#  not have to translate a test number to a test in the config.
99362306a36Sopenharmony_ci#
99462306a36Sopenharmony_ci# For TEST_TYPE = patchcheck
99562306a36Sopenharmony_ci#
99662306a36Sopenharmony_ci#  This expects the BUILD_DIR to be a git repository, and
99762306a36Sopenharmony_ci#  will checkout the PATCHCHECK_START commit.
99862306a36Sopenharmony_ci#
99962306a36Sopenharmony_ci#  The option BUILD_TYPE will be ignored.
100062306a36Sopenharmony_ci#
100162306a36Sopenharmony_ci#  The MIN_CONFIG will be used for all builds of the patchcheck. The build type
100262306a36Sopenharmony_ci#  used for patchcheck is oldconfig.
100362306a36Sopenharmony_ci#
100462306a36Sopenharmony_ci#  PATCHCHECK_START is required and is the first patch to
100562306a36Sopenharmony_ci#   test (the SHA1 of the commit). You may also specify anything
100662306a36Sopenharmony_ci#   that git checkout allows (branch name, tag, HEAD~3).
100762306a36Sopenharmony_ci#
100862306a36Sopenharmony_ci#  PATCHCHECK_END is the last patch to check (default HEAD)
100962306a36Sopenharmony_ci#
101062306a36Sopenharmony_ci#  PATCHCHECK_CHERRY if set to non zero, then git cherry will be
101162306a36Sopenharmony_ci#      performed against PATCHCHECK_START and PATCHCHECK_END. That is
101262306a36Sopenharmony_ci#
101362306a36Sopenharmony_ci#      git cherry ${PATCHCHECK_START} ${PATCHCHECK_END}
101462306a36Sopenharmony_ci#
101562306a36Sopenharmony_ci#      Then the changes found will be tested.
101662306a36Sopenharmony_ci#
101762306a36Sopenharmony_ci#      Note, PATCHCHECK_CHERRY requires PATCHCHECK_END to be defined.
101862306a36Sopenharmony_ci#      (default 0)
101962306a36Sopenharmony_ci#
102062306a36Sopenharmony_ci#  PATCHCHECK_TYPE is required and is the type of test to run:
102162306a36Sopenharmony_ci#      build, boot, test.
102262306a36Sopenharmony_ci#
102362306a36Sopenharmony_ci#   Note, the build test will look for warnings, if a warning occurred
102462306a36Sopenharmony_ci#     in a file that a commit touches, the build will fail, unless
102562306a36Sopenharmony_ci#     IGNORE_WARNINGS is set for the given commit's sha1
102662306a36Sopenharmony_ci#
102762306a36Sopenharmony_ci#   IGNORE_WARNINGS can be used to disable the failure of patchcheck
102862306a36Sopenharmony_ci#     on a particular commit (SHA1). You can add more than one commit
102962306a36Sopenharmony_ci#     by adding a list of SHA1s that are space delimited.
103062306a36Sopenharmony_ci#
103162306a36Sopenharmony_ci#   If BUILD_NOCLEAN is set, then make mrproper will not be run on
103262306a36Sopenharmony_ci#   any of the builds, just like all other TEST_TYPE tests. But
103362306a36Sopenharmony_ci#   what makes patchcheck different from the other tests, is if
103462306a36Sopenharmony_ci#   BUILD_NOCLEAN is not set, only the first and last patch run
103562306a36Sopenharmony_ci#   make mrproper. This helps speed up the test.
103662306a36Sopenharmony_ci#
103762306a36Sopenharmony_ci# Example:
103862306a36Sopenharmony_ci#   TEST_START
103962306a36Sopenharmony_ci#   TEST_TYPE = patchcheck
104062306a36Sopenharmony_ci#   CHECKOUT = mybranch
104162306a36Sopenharmony_ci#   PATCHCHECK_TYPE = boot
104262306a36Sopenharmony_ci#   PATCHCHECK_START = 747e94ae3d1b4c9bf5380e569f614eb9040b79e7
104362306a36Sopenharmony_ci#   PATCHCHECK_END = HEAD~2
104462306a36Sopenharmony_ci#   IGNORE_WARNINGS = 42f9c6b69b54946ffc0515f57d01dc7f5c0e4712 0c17ca2c7187f431d8ffc79e81addc730f33d128
104562306a36Sopenharmony_ci#
104662306a36Sopenharmony_ci#
104762306a36Sopenharmony_ci#
104862306a36Sopenharmony_ci# For TEST_TYPE = bisect
104962306a36Sopenharmony_ci#
105062306a36Sopenharmony_ci#  You can specify a git bisect if the BUILD_DIR is a git repository.
105162306a36Sopenharmony_ci#  The MIN_CONFIG will be used for all builds of the bisect. The build type
105262306a36Sopenharmony_ci#  used for bisecting is oldconfig.
105362306a36Sopenharmony_ci#
105462306a36Sopenharmony_ci#  The option BUILD_TYPE will be ignored.
105562306a36Sopenharmony_ci#
105662306a36Sopenharmony_ci#  BISECT_TYPE is the type of test to perform:
105762306a36Sopenharmony_ci#	build	- bad fails to build
105862306a36Sopenharmony_ci#	boot	- bad builds but fails to boot
105962306a36Sopenharmony_ci#	test	- bad boots but fails a test
106062306a36Sopenharmony_ci#
106162306a36Sopenharmony_ci# BISECT_GOOD is the commit (SHA1) to label as good (accepts all git good commit types)
106262306a36Sopenharmony_ci# BISECT_BAD is the commit to label as bad (accepts all git bad commit types)
106362306a36Sopenharmony_ci#
106462306a36Sopenharmony_ci# The above three options are required for a bisect operation.
106562306a36Sopenharmony_ci#
106662306a36Sopenharmony_ci# BISECT_REPLAY = /path/to/replay/file (optional, default undefined)
106762306a36Sopenharmony_ci#
106862306a36Sopenharmony_ci#   If an operation failed in the bisect that was not expected to
106962306a36Sopenharmony_ci#   fail. Then the test ends. The state of the BUILD_DIR will be
107062306a36Sopenharmony_ci#   left off at where the failure occurred. You can examine the
107162306a36Sopenharmony_ci#   reason for the failure, and perhaps even find a git commit
107262306a36Sopenharmony_ci#   that would work to continue with. You can run:
107362306a36Sopenharmony_ci#
107462306a36Sopenharmony_ci#   git bisect log > /path/to/replay/file
107562306a36Sopenharmony_ci#
107662306a36Sopenharmony_ci#   The adding:
107762306a36Sopenharmony_ci#
107862306a36Sopenharmony_ci#    BISECT_REPLAY= /path/to/replay/file
107962306a36Sopenharmony_ci#
108062306a36Sopenharmony_ci#   And running the test again. The test will perform the initial
108162306a36Sopenharmony_ci#    git bisect start, git bisect good, and git bisect bad, and
108262306a36Sopenharmony_ci#    then it will run git bisect replay on this file, before
108362306a36Sopenharmony_ci#    continuing with the bisect.
108462306a36Sopenharmony_ci#
108562306a36Sopenharmony_ci# BISECT_START = commit (optional, default undefined)
108662306a36Sopenharmony_ci#
108762306a36Sopenharmony_ci#   As with BISECT_REPLAY, if the test failed on a commit that
108862306a36Sopenharmony_ci#   just happen to have a bad commit in the middle of the bisect,
108962306a36Sopenharmony_ci#   and you need to skip it. If BISECT_START is defined, it
109062306a36Sopenharmony_ci#   will checkout that commit after doing the initial git bisect start,
109162306a36Sopenharmony_ci#   git bisect good, git bisect bad, and running the git bisect replay
109262306a36Sopenharmony_ci#   if the BISECT_REPLAY is set.
109362306a36Sopenharmony_ci#
109462306a36Sopenharmony_ci# BISECT_SKIP = 1 (optional, default 0)
109562306a36Sopenharmony_ci#
109662306a36Sopenharmony_ci#   If BISECT_TYPE is set to test but the build fails, ktest will
109762306a36Sopenharmony_ci#   simply fail the test and end their. You could use BISECT_REPLAY
109862306a36Sopenharmony_ci#   and BISECT_START to resume after you found a new starting point,
109962306a36Sopenharmony_ci#   or you could set BISECT_SKIP to 1. If BISECT_SKIP is set to 1,
110062306a36Sopenharmony_ci#   when something other than the BISECT_TYPE fails, ktest.pl will
110162306a36Sopenharmony_ci#   run "git bisect skip" and try again.
110262306a36Sopenharmony_ci#
110362306a36Sopenharmony_ci# BISECT_FILES = <path> (optional, default undefined)
110462306a36Sopenharmony_ci#
110562306a36Sopenharmony_ci#   To just run the git bisect on a specific path, set BISECT_FILES.
110662306a36Sopenharmony_ci#   For example:
110762306a36Sopenharmony_ci#
110862306a36Sopenharmony_ci#     BISECT_FILES = arch/x86 kernel/time
110962306a36Sopenharmony_ci#
111062306a36Sopenharmony_ci#   Will run the bisect with "git bisect start -- arch/x86 kernel/time"
111162306a36Sopenharmony_ci#
111262306a36Sopenharmony_ci# BISECT_REVERSE = 1 (optional, default 0)
111362306a36Sopenharmony_ci#
111462306a36Sopenharmony_ci#   In those strange instances where it was broken forever
111562306a36Sopenharmony_ci#   and you are trying to find where it started to work!
111662306a36Sopenharmony_ci#   Set BISECT_GOOD to the commit that was last known to fail
111762306a36Sopenharmony_ci#   Set BISECT_BAD to the commit that is known to start working.
111862306a36Sopenharmony_ci#   With BISECT_REVERSE = 1, The test will consider failures as
111962306a36Sopenharmony_ci#   good, and success as bad.
112062306a36Sopenharmony_ci#
112162306a36Sopenharmony_ci# BISECT_MANUAL = 1 (optional, default 0)
112262306a36Sopenharmony_ci#
112362306a36Sopenharmony_ci#   In case there's a problem with automating the bisect for
112462306a36Sopenharmony_ci#   whatever reason. (Can't reboot, want to inspect each iteration)
112562306a36Sopenharmony_ci#   Doing a BISECT_MANUAL will have the test wait for you to
112662306a36Sopenharmony_ci#   tell it if the test passed or failed after each iteration.
112762306a36Sopenharmony_ci#   This is basically the same as running git bisect yourself
112862306a36Sopenharmony_ci#   but ktest will rebuild and install the kernel for you.
112962306a36Sopenharmony_ci#
113062306a36Sopenharmony_ci# BISECT_CHECK = 1 (optional, default 0)
113162306a36Sopenharmony_ci#
113262306a36Sopenharmony_ci#   Just to be sure the good is good and bad is bad, setting
113362306a36Sopenharmony_ci#   BISECT_CHECK to 1 will start the bisect by first checking
113462306a36Sopenharmony_ci#   out BISECT_BAD and makes sure it fails, then it will check
113562306a36Sopenharmony_ci#   out BISECT_GOOD and makes sure it succeeds before starting
113662306a36Sopenharmony_ci#   the bisect (it works for BISECT_REVERSE too).
113762306a36Sopenharmony_ci#
113862306a36Sopenharmony_ci#   You can limit the test to just check BISECT_GOOD or
113962306a36Sopenharmony_ci#   BISECT_BAD with BISECT_CHECK = good or
114062306a36Sopenharmony_ci#   BISECT_CHECK = bad, respectively.
114162306a36Sopenharmony_ci#
114262306a36Sopenharmony_ci# BISECT_TRIES = 5 (optional, default 1)
114362306a36Sopenharmony_ci#
114462306a36Sopenharmony_ci#   For those cases that it takes several tries to hit a bug,
114562306a36Sopenharmony_ci#   the BISECT_TRIES is useful. It is the number of times the
114662306a36Sopenharmony_ci#   test is ran before it says the kernel is good. The first failure
114762306a36Sopenharmony_ci#   will stop trying and mark the current SHA1 as bad.
114862306a36Sopenharmony_ci#
114962306a36Sopenharmony_ci#   Note, as with all race bugs, there's no guarantee that if
115062306a36Sopenharmony_ci#   it succeeds, it is really a good bisect. But it helps in case
115162306a36Sopenharmony_ci#   the bug is some what reliable.
115262306a36Sopenharmony_ci#
115362306a36Sopenharmony_ci#   You can set BISECT_TRIES to zero, and all tests will be considered
115462306a36Sopenharmony_ci#   good, unless you also set BISECT_MANUAL.
115562306a36Sopenharmony_ci#
115662306a36Sopenharmony_ci# BISECT_RET_GOOD = 0 (optional, default undefined)
115762306a36Sopenharmony_ci#
115862306a36Sopenharmony_ci#   In case the specificed test returns something other than just
115962306a36Sopenharmony_ci#   0 for good, and non-zero for bad, you can override 0 being
116062306a36Sopenharmony_ci#   good by defining BISECT_RET_GOOD.
116162306a36Sopenharmony_ci#
116262306a36Sopenharmony_ci# BISECT_RET_BAD = 1 (optional, default undefined)
116362306a36Sopenharmony_ci#
116462306a36Sopenharmony_ci#   In case the specificed test returns something other than just
116562306a36Sopenharmony_ci#   0 for good, and non-zero for bad, you can override non-zero being
116662306a36Sopenharmony_ci#   bad by defining BISECT_RET_BAD.
116762306a36Sopenharmony_ci#
116862306a36Sopenharmony_ci# BISECT_RET_ABORT = 255 (optional, default undefined)
116962306a36Sopenharmony_ci#
117062306a36Sopenharmony_ci#   If you need to abort the bisect if the test discovers something
117162306a36Sopenharmony_ci#   that was wrong, you can define BISECT_RET_ABORT to be the error
117262306a36Sopenharmony_ci#   code returned by the test in order to abort the bisect.
117362306a36Sopenharmony_ci#
117462306a36Sopenharmony_ci# BISECT_RET_SKIP = 2 (optional, default undefined)
117562306a36Sopenharmony_ci#
117662306a36Sopenharmony_ci#   If the test detects that the current commit is neither good
117762306a36Sopenharmony_ci#   nor bad, but something else happened (another bug detected)
117862306a36Sopenharmony_ci#   you can specify BISECT_RET_SKIP to an error code that the
117962306a36Sopenharmony_ci#   test returns when it should skip the current commit.
118062306a36Sopenharmony_ci#
118162306a36Sopenharmony_ci# BISECT_RET_DEFAULT = good (optional, default undefined)
118262306a36Sopenharmony_ci#
118362306a36Sopenharmony_ci#   You can override the default of what to do when the above
118462306a36Sopenharmony_ci#   options are not hit. This may be one of, "good", "bad",
118562306a36Sopenharmony_ci#   "abort" or "skip" (without the quotes).
118662306a36Sopenharmony_ci#
118762306a36Sopenharmony_ci#   Note, if you do not define any of the previous BISECT_RET_*
118862306a36Sopenharmony_ci#   and define BISECT_RET_DEFAULT, all bisects results will do
118962306a36Sopenharmony_ci#   what the BISECT_RET_DEFAULT has.
119062306a36Sopenharmony_ci#
119162306a36Sopenharmony_ci#
119262306a36Sopenharmony_ci# Example:
119362306a36Sopenharmony_ci#   TEST_START
119462306a36Sopenharmony_ci#   TEST_TYPE = bisect
119562306a36Sopenharmony_ci#   BISECT_GOOD = v2.6.36
119662306a36Sopenharmony_ci#   BISECT_BAD = b5153163ed580e00c67bdfecb02b2e3843817b3e
119762306a36Sopenharmony_ci#   BISECT_TYPE = build
119862306a36Sopenharmony_ci#   MIN_CONFIG = /home/test/config-bisect
119962306a36Sopenharmony_ci#
120062306a36Sopenharmony_ci#
120162306a36Sopenharmony_ci#
120262306a36Sopenharmony_ci# For TEST_TYPE = config_bisect
120362306a36Sopenharmony_ci#
120462306a36Sopenharmony_ci#  In those cases that you have two different configs. One of them
120562306a36Sopenharmony_ci#  work, the other does not, and you do not know what config causes
120662306a36Sopenharmony_ci#  the problem.
120762306a36Sopenharmony_ci#  The TEST_TYPE config_bisect will bisect the bad config looking for
120862306a36Sopenharmony_ci#  what config causes the failure.
120962306a36Sopenharmony_ci#
121062306a36Sopenharmony_ci#  The way it works is this:
121162306a36Sopenharmony_ci#
121262306a36Sopenharmony_ci#   You can specify a good config with CONFIG_BISECT_GOOD, otherwise it
121362306a36Sopenharmony_ci#   will use the MIN_CONFIG, and if that's not specified, it will use
121462306a36Sopenharmony_ci#   the config that comes with "make defconfig".
121562306a36Sopenharmony_ci#
121662306a36Sopenharmony_ci#   It runs both the good and bad configs through a make oldconfig to
121762306a36Sopenharmony_ci#   make sure that they are set up for the kernel that is checked out.
121862306a36Sopenharmony_ci#
121962306a36Sopenharmony_ci#   It then reads the configs that are set, as well as the ones that are
122062306a36Sopenharmony_ci#   not set for both the good and bad configs, and then compares them.
122162306a36Sopenharmony_ci#   It will set half of the good configs within the bad config (note,
122262306a36Sopenharmony_ci#   "set" means to make the bad config match the good config, a config
122362306a36Sopenharmony_ci#   in the good config that is off, will be turned off in the bad
122462306a36Sopenharmony_ci#   config. That is considered a "set").
122562306a36Sopenharmony_ci#
122662306a36Sopenharmony_ci#   It tests this new config and if it works, it becomes the new good
122762306a36Sopenharmony_ci#   config, otherwise it becomes the new bad config. It continues this
122862306a36Sopenharmony_ci#   process until there's only one config left and it will report that
122962306a36Sopenharmony_ci#   config.
123062306a36Sopenharmony_ci#
123162306a36Sopenharmony_ci#   The "bad config" can also be a config that is needed to boot but was
123262306a36Sopenharmony_ci#   disabled because it depended on something that wasn't set.
123362306a36Sopenharmony_ci#
123462306a36Sopenharmony_ci#   During this process, it saves the current good and bad configs in
123562306a36Sopenharmony_ci#   ${TMP_DIR}/good_config and ${TMP_DIR}/bad_config respectively.
123662306a36Sopenharmony_ci#   If you stop the test, you can copy them to a new location to
123762306a36Sopenharmony_ci#   reuse them again.
123862306a36Sopenharmony_ci#
123962306a36Sopenharmony_ci#   Although the MIN_CONFIG may be the config it starts with, the
124062306a36Sopenharmony_ci#   MIN_CONFIG is ignored.
124162306a36Sopenharmony_ci#
124262306a36Sopenharmony_ci#  The option BUILD_TYPE will be ignored.
124362306a36Sopenharmony_ci#
124462306a36Sopenharmony_ci#  CONFIG_BISECT_TYPE is the type of test to perform:
124562306a36Sopenharmony_ci#	build	- bad fails to build
124662306a36Sopenharmony_ci#	boot	- bad builds but fails to boot
124762306a36Sopenharmony_ci#	test	- bad boots but fails a test
124862306a36Sopenharmony_ci#
124962306a36Sopenharmony_ci#  CONFIG_BISECT is the config that failed to boot
125062306a36Sopenharmony_ci#
125162306a36Sopenharmony_ci#  If BISECT_MANUAL is set, it will pause between iterations.
125262306a36Sopenharmony_ci#  This is useful to use just ktest.pl just for the config bisect.
125362306a36Sopenharmony_ci#  If you set it to build, it will run the bisect and you can
125462306a36Sopenharmony_ci#  control what happens in between iterations. It will ask you if
125562306a36Sopenharmony_ci#  the test succeeded or not and continue the config bisect.
125662306a36Sopenharmony_ci#
125762306a36Sopenharmony_ci# CONFIG_BISECT_GOOD (optional)
125862306a36Sopenharmony_ci#  If you have a good config to start with, then you
125962306a36Sopenharmony_ci#  can specify it with CONFIG_BISECT_GOOD. Otherwise
126062306a36Sopenharmony_ci#  the MIN_CONFIG is the base, if MIN_CONFIG is not set
126162306a36Sopenharmony_ci#  It will build a config with "make defconfig"
126262306a36Sopenharmony_ci#
126362306a36Sopenharmony_ci# CONFIG_BISECT_CHECK (optional)
126462306a36Sopenharmony_ci#  Set this to 1 if you want to confirm that the config ktest
126562306a36Sopenharmony_ci#  generates (the bad config with the min config) is still bad.
126662306a36Sopenharmony_ci#  It may be that the min config fixes what broke the bad config
126762306a36Sopenharmony_ci#  and the test will not return a result.
126862306a36Sopenharmony_ci#  Set it to "good" to test only the good config and set it
126962306a36Sopenharmony_ci#  to "bad" to only test the bad config.
127062306a36Sopenharmony_ci#
127162306a36Sopenharmony_ci# CONFIG_BISECT_EXEC (optional)
127262306a36Sopenharmony_ci#  The config bisect is a separate program that comes with ktest.pl.
127362306a36Sopenharmony_ci#  By default, it will look for:
127462306a36Sopenharmony_ci#    `pwd`/config-bisect.pl # the location ktest.pl was executed from.
127562306a36Sopenharmony_ci#  If it does not find it there, it will look for:
127662306a36Sopenharmony_ci#    `dirname <ktest.pl>`/config-bisect.pl # The directory that holds ktest.pl
127762306a36Sopenharmony_ci#  If it does not find it there, it will look for:
127862306a36Sopenharmony_ci#    ${BUILD_DIR}/tools/testing/ktest/config-bisect.pl
127962306a36Sopenharmony_ci#  Setting CONFIG_BISECT_EXEC will override where it looks.
128062306a36Sopenharmony_ci#
128162306a36Sopenharmony_ci# Example:
128262306a36Sopenharmony_ci#   TEST_START
128362306a36Sopenharmony_ci#   TEST_TYPE = config_bisect
128462306a36Sopenharmony_ci#   CONFIG_BISECT_TYPE = build
128562306a36Sopenharmony_ci#   CONFIG_BISECT = /home/test/config-bad
128662306a36Sopenharmony_ci#   MIN_CONFIG = /home/test/config-min
128762306a36Sopenharmony_ci#   BISECT_MANUAL = 1
128862306a36Sopenharmony_ci#
128962306a36Sopenharmony_ci#
129062306a36Sopenharmony_ci#
129162306a36Sopenharmony_ci# For TEST_TYPE = make_min_config
129262306a36Sopenharmony_ci#
129362306a36Sopenharmony_ci#  After doing a make localyesconfig, your kernel configuration may
129462306a36Sopenharmony_ci#  not be the most useful minimum configuration. Having a true minimum
129562306a36Sopenharmony_ci#  config that you can use against other configs is very useful if
129662306a36Sopenharmony_ci#  someone else has a config that breaks on your code. By only forcing
129762306a36Sopenharmony_ci#  those configurations that are truly required to boot your machine
129862306a36Sopenharmony_ci#  will give you less of a chance that one of your set configurations
129962306a36Sopenharmony_ci#  will make the bug go away. This will give you a better chance to
130062306a36Sopenharmony_ci#  be able to reproduce the reported bug matching the broken config.
130162306a36Sopenharmony_ci#
130262306a36Sopenharmony_ci#  Note, this does take some time, and may require you to run the
130362306a36Sopenharmony_ci#  test over night, or perhaps over the weekend. But it also allows
130462306a36Sopenharmony_ci#  you to interrupt it, and gives you the current minimum config
130562306a36Sopenharmony_ci#  that was found till that time.
130662306a36Sopenharmony_ci#
130762306a36Sopenharmony_ci#  Note, this test automatically assumes a BUILD_TYPE of oldconfig
130862306a36Sopenharmony_ci#  and its test type acts like boot.
130962306a36Sopenharmony_ci#  TODO: add a test version that makes the config do more than just
131062306a36Sopenharmony_ci#   boot, like having network access.
131162306a36Sopenharmony_ci#
131262306a36Sopenharmony_ci#  To save time, the test does not just grab any option and test
131362306a36Sopenharmony_ci#  it. The Kconfig files are examined to determine the dependencies
131462306a36Sopenharmony_ci#  of the configs. If a config is chosen that depends on another
131562306a36Sopenharmony_ci#  config, that config will be checked first. By checking the
131662306a36Sopenharmony_ci#  parents first, we can eliminate whole groups of configs that
131762306a36Sopenharmony_ci#  may have been enabled.
131862306a36Sopenharmony_ci#
131962306a36Sopenharmony_ci#  For example, if a USB device config is chosen and depends on CONFIG_USB,
132062306a36Sopenharmony_ci#  the CONFIG_USB will be tested before the device. If CONFIG_USB is
132162306a36Sopenharmony_ci#  found not to be needed, it, as well as all configs that depend on
132262306a36Sopenharmony_ci#  it, will be disabled and removed from the current min_config.
132362306a36Sopenharmony_ci#
132462306a36Sopenharmony_ci#  OUTPUT_MIN_CONFIG is the path and filename of the file that will
132562306a36Sopenharmony_ci#   be created from the MIN_CONFIG. If you interrupt the test, set
132662306a36Sopenharmony_ci#   this file as your new min config, and use it to continue the test.
132762306a36Sopenharmony_ci#   This file does not need to exist on start of test.
132862306a36Sopenharmony_ci#   This file is not created until a config is found that can be removed.
132962306a36Sopenharmony_ci#   If this file exists, you will be prompted if you want to use it
133062306a36Sopenharmony_ci#   as the min_config (overriding MIN_CONFIG) if START_MIN_CONFIG
133162306a36Sopenharmony_ci#   is not defined.
133262306a36Sopenharmony_ci#   (required field)
133362306a36Sopenharmony_ci#
133462306a36Sopenharmony_ci#  START_MIN_CONFIG is the config to use to start the test with.
133562306a36Sopenharmony_ci#   you can set this as the same OUTPUT_MIN_CONFIG, but if you do
133662306a36Sopenharmony_ci#   the OUTPUT_MIN_CONFIG file must exist.
133762306a36Sopenharmony_ci#   (default MIN_CONFIG)
133862306a36Sopenharmony_ci#
133962306a36Sopenharmony_ci#  IGNORE_CONFIG is used to specify a config file that has configs that
134062306a36Sopenharmony_ci#   you already know must be set. Configs are written here that have
134162306a36Sopenharmony_ci#   been tested and proved to be required. It is best to define this
134262306a36Sopenharmony_ci#   file if you intend on interrupting the test and running it where
134362306a36Sopenharmony_ci#   it left off. New configs that it finds will be written to this file
134462306a36Sopenharmony_ci#   and will not be tested again in later runs.
134562306a36Sopenharmony_ci#   (optional)
134662306a36Sopenharmony_ci#
134762306a36Sopenharmony_ci#  MIN_CONFIG_TYPE can be either 'boot' or 'test'. With 'boot' it will
134862306a36Sopenharmony_ci#   test if the created config can just boot the machine. If this is
134962306a36Sopenharmony_ci#   set to 'test', then the TEST option must be defined and the created
135062306a36Sopenharmony_ci#   config will not only boot the target, but also make sure that the
135162306a36Sopenharmony_ci#   config lets the test succeed. This is useful to make sure the final
135262306a36Sopenharmony_ci#   config that is generated allows network activity (ssh).
135362306a36Sopenharmony_ci#   (optional)
135462306a36Sopenharmony_ci#
135562306a36Sopenharmony_ci#  USE_OUTPUT_MIN_CONFIG set this to 1 if you do not want to be prompted
135662306a36Sopenharmony_ci#   about using the OUTPUT_MIN_CONFIG as the MIN_CONFIG as the starting
135762306a36Sopenharmony_ci#   point. Set it to 0 if you want to always just use the given MIN_CONFIG.
135862306a36Sopenharmony_ci#   If it is not defined, it will prompt you to pick which config
135962306a36Sopenharmony_ci#   to start with (MIN_CONFIG or OUTPUT_MIN_CONFIG).
136062306a36Sopenharmony_ci#
136162306a36Sopenharmony_ci# Example:
136262306a36Sopenharmony_ci#
136362306a36Sopenharmony_ci#  TEST_TYPE = make_min_config
136462306a36Sopenharmony_ci#  OUTPUT_MIN_CONFIG = /path/to/config-new-min
136562306a36Sopenharmony_ci#  START_MIN_CONFIG = /path/to/config-min
136662306a36Sopenharmony_ci#  IGNORE_CONFIG = /path/to/config-tested
136762306a36Sopenharmony_ci#  MIN_CONFIG_TYPE = test
136862306a36Sopenharmony_ci#  TEST = ssh ${USER}@${MACHINE} echo hi
136962306a36Sopenharmony_ci#
137062306a36Sopenharmony_ci#
137162306a36Sopenharmony_ci#
137262306a36Sopenharmony_ci#
137362306a36Sopenharmony_ci# For TEST_TYPE = make_warnings_file
137462306a36Sopenharmony_ci#
137562306a36Sopenharmony_ci# If you want the build to fail when a new warning is discovered
137662306a36Sopenharmony_ci# you set the WARNINGS_FILE to point to a file of known warnings.
137762306a36Sopenharmony_ci#
137862306a36Sopenharmony_ci# The test "make_warnings_file" will let you create a new warnings
137962306a36Sopenharmony_ci# file before you run other tests, like patchcheck.
138062306a36Sopenharmony_ci#
138162306a36Sopenharmony_ci# What this test does is to run just a build, you still need to
138262306a36Sopenharmony_ci# specify BUILD_TYPE to tell the test what type of config to use.
138362306a36Sopenharmony_ci# A BUILD_TYPE of nobuild will fail this test.
138462306a36Sopenharmony_ci#
138562306a36Sopenharmony_ci# The test will do the build and scan for all warnings. Any warning
138662306a36Sopenharmony_ci# it discovers will be saved in the WARNINGS_FILE (required) option.
138762306a36Sopenharmony_ci#
138862306a36Sopenharmony_ci# It is recommended (but not necessary) to make sure BUILD_NOCLEAN is
138962306a36Sopenharmony_ci# off, so that a full build is done (make mrproper is performed).
139062306a36Sopenharmony_ci# That way, all warnings will be captured.
139162306a36Sopenharmony_ci#
139262306a36Sopenharmony_ci# Example:
139362306a36Sopenharmony_ci#
139462306a36Sopenharmony_ci#  TEST_TYPE = make_warnings_file
139562306a36Sopenharmony_ci#  WARNINGS_FILE = ${OUTPUT_DIR}
139662306a36Sopenharmony_ci#  BUILD_TYPE = useconfig:oldconfig
139762306a36Sopenharmony_ci#  CHECKOUT = v3.8
139862306a36Sopenharmony_ci#  BUILD_NOCLEAN = 0
139962306a36Sopenharmony_ci#
1400