2010-11-02 21:58:27 +03:00
#
2010-11-02 22:13:54 +03:00
# Config file for ktest.pl
2010-11-02 21:58:27 +03:00
#
# Note, all paths must be absolute
#
2010-11-02 22:13:54 +03:00
# Options set in the beginning of the file are considered to be
# default options. These options can be overriden by test specific
# options, with the following exceptions:
2010-11-02 21:58:27 +03:00
#
# LOG_FILE
# CLEAR_LOG
# POWEROFF_ON_SUCCESS
# REBOOT_ON_SUCCESS
#
2010-11-02 22:13:54 +03:00
# Test specific options are set after the label:
#
# TEST_START
#
# The options after a TEST_START label are specific to that test.
# Each TEST_START label will set up a new test. If you want to
# perform a test more than once, you can add the ITERATE label
# to it followed by the number of times you want that test
# to iterate. If the ITERATE is left off, the test will only
# be performed once.
#
# TEST_START ITERATE 10
#
# You can skip a test by adding SKIP (before or after the ITERATE
# and number)
#
# TEST_START SKIP
#
# TEST_START SKIP ITERATE 10
#
# TEST_START ITERATE 10 SKIP
#
# The SKIP label causes the options and the test itself to be ignored.
# This is useful to set up several different tests in one config file, and
# only enabling the ones you want to use for a current test run.
#
# You can add default options anywhere in the file as well
# with the DEFAULTS tag. This allows you to have default options
# after the test options to keep the test options at the top
# of the file. You can even place the DEFAULTS tag between
# test cases (but not in the middle of a single test case)
#
# TEST_START
# MIN_CONFIG = /home/test/config-test1
#
# DEFAULTS
# MIN_CONFIG = /home/test/config-default
#
# TEST_START ITERATE 10
#
# The above will run the first test with MIN_CONFIG set to
# /home/test/config-test-1. Then 10 tests will be executed
# with MIN_CONFIG with /home/test/config-default.
#
# You can also disable defaults with the SKIP option
#
# DEFAULTS SKIP
# MIN_CONFIG = /home/test/config-use-sometimes
#
# DEFAULTS
# MIN_CONFIG = /home/test/config-most-times
#
# The above will ignore the first MIN_CONFIG. If you want to
# use the first MIN_CONFIG, remove the SKIP from the first
# DEFAULTS tag and add it to the second. Be careful, options
# may only be declared once per test or default. If you have
# the same option name under the same test or as default
# ktest will fail to execute, and no tests will run.
#
2011-10-01 06:14:21 +04:00
# DEFAULTS OVERRIDE
#
# Options defined in the DEFAULTS section can not be duplicated
# even if they are defined in two different DEFAULT sections.
# This is done to catch mistakes where an option is added but
# the previous option was forgotten about and not commented.
#
# The OVERRIDE keyword can be added to a section to allow this
# section to override other DEFAULT sections values that have
# been defined previously. It will only override options that
# have been defined before its use. Options defined later
# in a non override section will still error. The same option
# can not be defined in the same section even if that section
# is marked OVERRIDE.
#
2011-10-01 04:24:07 +04:00
#
#
2011-10-01 03:44:53 +04:00
# Both TEST_START and DEFAULTS sections can also have the IF keyword
# The value after the IF must evaluate into a 0 or non 0 positive
# integer, and can use the config variables (explained below).
#
# DEFAULTS IF ${IS_X86_32}
#
# The above will process the DEFAULTS section if the config
# variable IS_X86_32 evaluates to a non zero positive integer
# otherwise if it evaluates to zero, it will act the same
# as if the SKIP keyword was used.
#
# The ELSE keyword can be used directly after a section with
# a IF statement.
#
# TEST_START IF ${RUN_NET_TESTS}
# BUILD_TYPE = useconfig:${CONFIG_DIR}/config-network
#
# ELSE
#
# BUILD_TYPE = useconfig:${CONFIG_DIR}/config-normal
#
#
# The ELSE keyword can also contain an IF statement to allow multiple
# if then else sections. But all the sections must be either
# DEFAULT or TEST_START, they can not be a mixture.
#
# TEST_START IF ${RUN_NET_TESTS}
# BUILD_TYPE = useconfig:${CONFIG_DIR}/config-network
#
# ELSE IF ${RUN_DISK_TESTS}
# BUILD_TYPE = useconfig:${CONFIG_DIR}/config-tests
#
# ELSE IF ${RUN_CPU_TESTS}
# BUILD_TYPE = useconfig:${CONFIG_DIR}/config-cpu
#
# ELSE
# BUILD_TYPE = useconfig:${CONFIG_DIR}/config-network
#
2011-10-01 04:24:07 +04:00
# The if statement may also have comparisons that will and for
# == and !=, strings may be used for both sides.
#
# BOX_TYPE := x86_32
#
# DEFAULTS IF ${BOX_TYPE} == x86_32
# BUILD_TYPE = useconfig:${CONFIG_DIR}/config-32
# ELSE
# BUILD_TYPE = useconfig:${CONFIG_DIR}/config-64
#
2011-10-01 06:41:14 +04:00
# The DEFINED keyword can be used by the IF statements too.
# It returns true if the given config variable or option has been defined
# or false otherwise.
#
#
# DEFAULTS IF DEFINED USE_CC
# CC := ${USE_CC}
# ELSE
# CC := gcc
#
#
# As well as NOT DEFINED.
#
# DEFAULTS IF NOT DEFINED MAKE_CMD
# MAKE_CMD := make ARCH=x86
#
#
2011-10-17 19:36:44 +04:00
# And/or ops (&&,||) may also be used to make complex conditionals.
#
# TEST_START IF (DEFINED ALL_TESTS || ${MYTEST} == boottest) && ${MACHINE} == gandalf
#
# Notice the use of paranthesis. Without any paranthesis the above would be
# processed the same as:
#
# TEST_START IF DEFINED ALL_TESTS || (${MYTEST} == boottest && ${MACHINE} == gandalf)
#
#
2011-10-01 05:00:00 +04:00
#
# INCLUDE file
#
# The INCLUDE keyword may be used in DEFAULT sections. This will
# read another config file and process that file as well. The included
# file can include other files, add new test cases or default
# statements. Config variables will be passed to these files and changes
# to config variables will be seen by top level config files. Including
# a file is processed just like the contents of the file was cut and pasted
# into the top level file, except, that include files that end with
# TEST_START sections will have that section ended at the end of
# the include file. That is, an included file is included followed
# by another DEFAULT keyword.
#
# Unlike other files referenced in this config, the file path does not need
# to be absolute. If the file does not start with '/', then the directory
# that the current config file was located in is used. If no config by the
# given name is found there, then the current directory is searched.
#
# INCLUDE myfile
# DEFAULT
#
# is the same as:
#
# INCLUDE myfile
#
# Note, if the include file does not contain a full path, the file is
# searched first by the location of the original include file, and then
# by the location that ktest.pl was executed in.
#
2010-11-02 22:13:54 +03:00
2011-05-20 21:36:58 +04:00
#### Config variables ####
#
# This config file can also contain "config variables".
# These are assigned with ":=" instead of the ktest option
# assigment "=".
#
# The difference between ktest options and config variables
# is that config variables can be used multiple times,
# where each instance will override the previous instance.
# And that they only live at time of processing this config.
#
# The advantage to config variables are that they can be used
# by any option or any other config variables to define thing
# that you may use over and over again in the options.
#
# For example:
#
# USER := root
# TARGET := mybox
# TEST_CASE := ssh ${USER}@${TARGET} /path/to/my/test
#
# TEST_START
# MIN_CONFIG = config1
# TEST = ${TEST_CASE}
#
# TEST_START
# MIN_CONFIG = config2
# TEST = ${TEST_CASE}
#
# TEST_CASE := ssh ${USER}@${TARGET} /path/to/my/test2
#
# TEST_START
# MIN_CONFIG = config1
# TEST = ${TEST_CASE}
#
# TEST_START
# MIN_CONFIG = config2
# TEST = ${TEST_CASE}
#
# TEST_DIR := /home/me/test
#
# BUILD_DIR = ${TEST_DIR}/linux.git
# OUTPUT_DIR = ${TEST_DIR}/test
#
# Note, the config variables are evaluated immediately, thus
# updating TARGET after TEST_CASE has been assigned does nothing
# to TEST_CASE.
#
# As shown in the example, to evaluate a config variable, you
# use the ${X} convention. Simple $X will not work.
#
# If the config variable does not exist, the ${X} will not
# be evaluated. Thus:
#
# MAKE_CMD = PATH=/mypath:${PATH} make
#
# If PATH is not a config variable, then the ${PATH} in
# the MAKE_CMD option will be evaluated by the shell when
# the MAKE_CMD option is passed into shell processing.
2010-11-02 22:13:54 +03:00
2011-05-20 23:48:59 +04:00
#### Using options in other options ####
#
# Options that are defined in the config file may also be used
# by other options. All options are evaulated at time of
# use (except that config variables are evaluated at config
# processing time).
#
# If an ktest option is used within another option, instead of
# typing it again in that option you can simply use the option
# just like you can config variables.
#
# MACHINE = mybox
#
# TEST = ssh root@${MACHINE} /path/to/test
#
# The option will be used per test case. Thus:
#
# TEST_TYPE = test
# TEST = ssh root@{MACHINE}
#
# TEST_START
# MACHINE = box1
#
# TEST_START
# MACHINE = box2
#
# For both test cases, MACHINE will be evaluated at the time
# of the test case. The first test will run ssh root@box1
# and the second will run ssh root@box2.
2010-11-02 22:13:54 +03:00
#### Mandatory Default Options ####
2010-11-02 21:58:27 +03:00
2010-11-02 22:13:54 +03:00
# These options must be in the default section, although most
# may be overridden by test options.
2010-11-02 21:58:27 +03:00
# The machine hostname that you will test
#MACHINE = target
# The box is expected to have ssh on normal bootup, provide the user
# (most likely root, since you need privileged operations)
#SSH_USER = root
# The directory that contains the Linux source code
#BUILD_DIR = /home/test/linux.git
# The directory that the objects will be built
# (can not be same as BUILD_DIR)
#OUTPUT_DIR = /home/test/build/target
# The location of the compiled file to copy to the target
# (relative to OUTPUT_DIR)
#BUILD_TARGET = arch/x86/boot/bzImage
# The place to put your image on the test machine
#TARGET_IMAGE = /boot/vmlinuz-test
# A script or command to reboot the box
2010-11-02 22:13:54 +03:00
#
2010-11-02 21:58:27 +03:00
# Here is a digital loggers power switch example
#POWER_CYCLE = wget --no-proxy -O /dev/null -q --auth-no-challenge 'http://admin:admin@power/outlet?5=CCL'
2010-11-02 22:13:54 +03:00
#
2010-11-02 21:58:27 +03:00
# Here is an example to reboot a virtual box on the current host
# with the name "Guest".
2010-11-02 22:13:54 +03:00
#POWER_CYCLE = virsh destroy Guest; sleep 5; virsh start Guest
2010-11-02 21:58:27 +03:00
# The script or command that reads the console
2010-11-02 22:13:54 +03:00
#
2010-11-02 21:58:27 +03:00
# If you use ttywatch server, something like the following would work.
#CONSOLE = nc -d localhost 3001
2010-11-02 22:13:54 +03:00
#
2010-11-02 21:58:27 +03:00
# For a virtual machine with guest name "Guest".
2010-11-02 22:13:54 +03:00
#CONSOLE = virsh console Guest
2010-11-02 21:58:27 +03:00
# Required version ending to differentiate the test
# from other linux builds on the system.
#LOCALVERSION = -test
# The grub title name for the test kernel to boot
# (Only mandatory if REBOOT_TYPE = grub)
#
2010-11-02 22:13:54 +03:00
# Note, ktest.pl will not update the grub menu.lst, you need to
# manually add an option for the test. ktest.pl will search
# the grub menu.lst for this option to find what kernel to
# reboot into.
#
2010-11-02 21:58:27 +03:00
# For example, if in the /boot/grub/menu.lst the test kernel title has:
# title Test Kernel
2010-11-02 22:13:54 +03:00
# kernel vmlinuz-test
2010-11-02 21:58:27 +03:00
#GRUB_MENU = Test Kernel
# A script to reboot the target into the test kernel
2011-12-23 09:24:51 +04:00
# This and SWITCH_TO_TEST are about the same, except
# SWITCH_TO_TEST is run even for REBOOT_TYPE = grub.
# This may be left undefined.
# (default undefined)
2010-11-02 21:58:27 +03:00
#REBOOT_SCRIPT =
#### Optional Config Options (all have defaults) ####
2010-11-02 22:13:54 +03:00
# Start a test setup. If you leave this off, all options
# will be default and the test will run once.
# This is a label and not really an option (it takes no value).
# You can append ITERATE and a number after it to iterate the
# test a number of times, or SKIP to ignore this test.
#
#TEST_START
#TEST_START ITERATE 5
#TEST_START SKIP
2010-11-02 21:58:27 +03:00
2010-11-02 22:22:53 +03:00
# Have the following options as default again. Used after tests
# have already been defined by TEST_START. Optionally, you can
# just define all default options before the first TEST_START
# and you do not need this option.
#
# This is a label and not really an option (it takes no value).
# You can append SKIP to this label and the options within this
# section will be ignored.
#
# DEFAULTS
# DEFAULTS SKIP
2010-11-02 21:58:27 +03:00
# The default test type (default test)
# The test types may be:
2011-08-19 00:35:44 +04:00
# build - only build the kernel, do nothing else
# install - build and install, but do nothing else (does not reboot)
# boot - build, install, and boot the kernel
# test - build, boot and if TEST is set, run the test script
2010-11-02 22:13:54 +03:00
# (If TEST is not set, it defaults back to boot)
2010-11-02 21:58:27 +03:00
# bisect - Perform a bisect on the kernel (see BISECT_TYPE below)
# patchcheck - Do a test on a series of commits in git (see PATCHCHECK below)
#TEST_TYPE = test
2010-11-02 22:13:54 +03:00
# Test to run if there is a successful boot and TEST_TYPE is test.
# Must exit with 0 on success and non zero on error
# default (undefined)
#TEST = ssh user@machine /root/run_test
# The build type is any make config type or special command
2010-11-02 21:58:27 +03:00
# (default randconfig)
# nobuild - skip the clean and build step
2010-11-02 22:13:54 +03:00
# useconfig:/path/to/config - use the given config and run
# oldconfig on it.
# This option is ignored if TEST_TYPE is patchcheck or bisect
2010-11-02 21:58:27 +03:00
#BUILD_TYPE = randconfig
# The make command (default make)
# If you are building a 32bit x86 on a 64 bit host
#MAKE_CMD = CC=i386-gcc AS=i386-as make ARCH=i386
2010-11-02 22:22:53 +03:00
# Any build options for the make of the kernel (not for other makes, like configs)
# (default "")
#BUILD_OPTIONS = -j20
2010-11-02 21:58:33 +03:00
# If you need an initrd, you can add a script or code here to install
# it. The environment variable KERNEL_VERSION will be set to the
2010-11-02 22:13:54 +03:00
# kernel version that is used. Remember to add the initrd line
# to your grub menu.lst file.
#
# Here's a couple of examples to use:
2010-11-02 21:58:33 +03:00
#POST_INSTALL = ssh user@target /sbin/mkinitrd --allow-missing -f /boot/initramfs-test.img $KERNEL_VERSION
2010-11-02 22:13:54 +03:00
#
# or on some systems:
#POST_INSTALL = ssh user@target /sbin/dracut -f /boot/initramfs-test.img $KERNEL_VERSION
2010-11-02 21:58:33 +03:00
2011-10-01 01:50:48 +04:00
# If for some reason you just want to boot the kernel and you do not
# want the test to install anything new. For example, you may just want
# to boot test the same kernel over and over and do not want to go through
# the hassle of installing anything, you can set this option to 1
# (default 0)
#NO_INSTALL = 1
2011-06-15 04:39:31 +04:00
# If there is a script that you require to run before the build is done
# you can specify it with PRE_BUILD.
#
# One example may be if you must add a temporary patch to the build to
# fix a unrelated bug to perform a patchcheck test. This will apply the
# patch before each build that is made. Use the POST_BUILD to do a git reset --hard
# to remove the patch.
#
# (default undef)
#PRE_BUILD = cd ${BUILD_DIR} && patch -p1 < /tmp/temp.patch
# To specify if the test should fail if the PRE_BUILD fails,
# PRE_BUILD_DIE needs to be set to 1. Otherwise the PRE_BUILD
# result is ignored.
# (default 0)
# PRE_BUILD_DIE = 1
# If there is a script that should run after the build is done
# you can specify it with POST_BUILD.
#
# As the example in PRE_BUILD, POST_BUILD can be used to reset modifications
# made by the PRE_BUILD.
#
# (default undef)
#POST_BUILD = cd ${BUILD_DIR} && git reset --hard
# To specify if the test should fail if the POST_BUILD fails,
# POST_BUILD_DIE needs to be set to 1. Otherwise the POST_BUILD
# result is ignored.
# (default 0)
#POST_BUILD_DIE = 1
2010-11-02 21:58:27 +03:00
# Way to reboot the box to the test kernel.
# Only valid options so far are "grub" and "script"
# (default grub)
# If you specify grub, it will assume grub version 1
# and will search in /boot/grub/menu.lst for the title $GRUB_MENU
# and select that target to reboot to the kernel. If this is not
# your setup, then specify "script" and have a command or script
# specified in REBOOT_SCRIPT to boot to the target.
2010-11-02 22:13:54 +03:00
#
# The entry in /boot/grub/menu.lst must be entered in manually.
# The test will not modify that file.
2010-11-02 21:58:27 +03:00
#REBOOT_TYPE = grub
2011-12-23 01:29:10 +04:00
# If you are using a machine that doesn't boot with grub, and
# perhaps gets its kernel from a remote server (tftp), then
# you can use this option to update the target image with the
# test image.
#
# You could also do the same with POST_INSTALL, but the difference
# between that option and this option is that POST_INSTALL runs
# after the install, where this one runs just before a reboot.
# (default undefined)
#SWITCH_TO_TEST = cp ${OUTPUT_DIR}/${BUILD_TARGET} ${TARGET_IMAGE}
# If you are using a machine that doesn't boot with grub, and
# perhaps gets its kernel from a remote server (tftp), then
# you can use this option to update the target image with the
# the known good image to reboot safely back into.
#
# This option holds a command that will execute before needing
# to reboot to a good known image.
# (default undefined)
#SWITCH_TO_GOOD = ssh ${SSH_USER}/${MACHINE} cp good_image ${TARGET_IMAGE}
2010-11-02 22:22:53 +03:00
# The min config that is needed to build for the machine
# A nice way to create this is with the following:
#
# $ ssh target
# $ lsmod > mymods
# $ scp mymods host:/tmp
# $ exit
# $ cd linux.git
# $ rm .config
# $ make LSMOD=mymods localyesconfig
# $ grep '^CONFIG' .config > /home/test/config-min
#
# If you want even less configs:
#
# log in directly to target (do not ssh)
#
# $ su
# # lsmod | cut -d' ' -f1 | xargs rmmod
#
# repeat the above several times
#
# # lsmod > mymods
# # reboot
#
# May need to reboot to get your network back to copy the mymods
# to the host, and then remove the previous .config and run the
# localyesconfig again. The CONFIG_MIN generated like this will
# not guarantee network activity to the box so the TEST_TYPE of
# test may fail.
#
# You might also want to set:
# CONFIG_CMDLINE="<your options here>"
# randconfig may set the above and override your real command
# line options.
# (default undefined)
#MIN_CONFIG = /home/test/config-min
# Sometimes there's options that just break the boot and
# you do not care about. Here are a few:
# # CONFIG_STAGING is not set
# Staging drivers are horrible, and can break the build.
# # CONFIG_SCSI_DEBUG is not set
# SCSI_DEBUG may change your root partition
# # CONFIG_KGDB_SERIAL_CONSOLE is not set
# KGDB may cause oops waiting for a connection that's not there.
# This option points to the file containing config options that will be prepended
# to the MIN_CONFIG (or be the MIN_CONFIG if it is not set)
#
# Note, config options in MIN_CONFIG will override these options.
#
# (default undefined)
#ADD_CONFIG = /home/test/config-broken
# The location on the host where to write temp files
2011-06-15 04:42:19 +04:00
# (default /tmp/ktest/${MACHINE})
#TMP_DIR = /tmp/ktest/${MACHINE}
2010-11-02 22:22:53 +03:00
# Optional log file to write the status (recommended)
# Note, this is a DEFAULT section only option.
# (default undefined)
#LOG_FILE = /home/test/logfiles/target.log
# Remove old logfile if it exists before starting all tests.
# Note, this is a DEFAULT section only option.
# (default 0)
#CLEAR_LOG = 0
2010-11-02 22:13:54 +03:00
# Line to define a successful boot up in console output.
2010-11-02 21:58:27 +03:00
# This is what the line contains, not the entire line. If you need
2010-11-02 22:13:54 +03:00
# the entire line to match, then use regural expression syntax like:
# (do not add any quotes around it)
#
# SUCCESS_LINE = ^MyBox Login:$
#
# (default "login:")
2010-11-02 21:58:27 +03:00
#SUCCESS_LINE = login:
2011-10-01 02:00:23 +04:00
# To speed up between reboots, defining a line that the
# default kernel produces that represents that the default
# kernel has successfully booted and can be used to pass
# a new test kernel to it. Otherwise ktest.pl will wait till
# SLEEP_TIME to continue.
# (default undefined)
#REBOOT_SUCCESS_LINE = login:
2010-11-09 20:55:40 +03:00
# In case the console constantly fills the screen, having
# a specified time to stop the test after success is recommended.
# (in seconds)
# (default 10)
#STOP_AFTER_SUCCESS = 10
# In case the console constantly fills the screen, having
# a specified time to stop the test after failure is recommended.
# (in seconds)
# (default 60)
#STOP_AFTER_FAILURE = 60
2011-03-08 17:47:54 +03:00
# In case the console constantly fills the screen, having
# a specified time to stop the test if it never succeeds nor fails
# is recommended.
# Note: this is ignored if a success or failure is detected.
# (in seconds)
# (default 600, -1 is to never stop)
#STOP_TEST_AFTER = 600
2010-11-02 22:22:53 +03:00
# Stop testing if a build fails. If set, the script will end if
# a failure is detected, otherwise it will save off the .config,
# dmesg and bootlog in a directory called
# MACHINE-TEST_TYPE_BUILD_TYPE-fail-yyyymmddhhmmss
# if the STORE_FAILURES directory is set.
# (default 1)
# Note, even if this is set to zero, there are some errors that still
# stop the tests.
#DIE_ON_FAILURE = 1
# Directory to store failure directories on failure. If this is not
# set, DIE_ON_FAILURE=0 will not save off the .config, dmesg and
# bootlog. This option is ignored if DIE_ON_FAILURE is not set.
# (default undefined)
#STORE_FAILURES = /home/test/failures
2011-11-18 15:35:31 +04:00
# Directory to store success directories on success. If this is not
# set, the .config, dmesg and bootlog will not be saved if a
# test succeeds.
# (default undefined)
#STORE_SUCCESSES = /home/test/successes
2010-11-02 22:22:53 +03:00
# Build without doing a make mrproper, or removing .config
# (default 0)
#BUILD_NOCLEAN = 0
2010-11-02 21:58:27 +03:00
# As the test reads the console, after it hits the SUCCESS_LINE
# the time it waits for the monitor to settle down between reads
# can usually be lowered.
# (in seconds) (default 1)
#BOOTED_TIMEOUT = 1
# The timeout in seconds when we consider the box hung after
2010-11-02 22:13:54 +03:00
# the console stop producing output. Be sure to leave enough
# time here to get pass a reboot. Some machines may not produce
# any console output for a long time during a reboot. You do
# not want the test to fail just because the system was in
# the process of rebooting to the test kernel.
2010-11-02 21:58:27 +03:00
# (default 120)
#TIMEOUT = 120
# In between tests, a reboot of the box may occur, and this
# is the time to wait for the console after it stops producing
# output. Some machines may not produce a large lag on reboot
# so this should accommodate it.
2010-11-02 22:13:54 +03:00
# The difference between this and TIMEOUT, is that TIMEOUT happens
# when rebooting to the test kernel. This sleep time happens
# after a test has completed and we are about to start running
# another test. If a reboot to the reliable kernel happens,
# we wait SLEEP_TIME for the console to stop producing output
# before starting the next test.
2011-10-01 02:00:23 +04:00
#
# You can speed up reboot times even more by setting REBOOT_SUCCESS_LINE.
2010-11-02 21:58:27 +03:00
# (default 60)
#SLEEP_TIME = 60
# The time in between bisects to sleep (in seconds)
2010-11-02 22:13:54 +03:00
# (default 60)
2010-11-02 21:58:27 +03:00
#BISECT_SLEEP_TIME = 60
2011-05-20 17:18:18 +04:00
# The time in between patch checks to sleep (in seconds)
# (default 60)
#PATCHCHECK_SLEEP_TIME = 60
2010-11-02 21:58:27 +03:00
# Reboot the target box on error (default 0)
#REBOOT_ON_ERROR = 0
# Power off the target on error (ignored if REBOOT_ON_ERROR is set)
2010-11-02 22:13:54 +03:00
# Note, this is a DEFAULT section only option.
2010-11-02 21:58:27 +03:00
# (default 0)
#POWEROFF_ON_ERROR = 0
# Power off the target after all tests have completed successfully
2010-11-02 22:13:54 +03:00
# Note, this is a DEFAULT section only option.
2010-11-02 21:58:27 +03:00
# (default 0)
#POWEROFF_ON_SUCCESS = 0
# Reboot the target after all test completed successfully (default 1)
# (ignored if POWEROFF_ON_SUCCESS is set)
#REBOOT_ON_SUCCESS = 1
2010-11-02 22:13:54 +03:00
# In case there are isses with rebooting, you can specify this
2010-11-02 21:58:38 +03:00
# to always powercycle after this amount of time after calling
# reboot.
# Note, POWERCYCLE_AFTER_REBOOT = 0 does NOT disable it. It just
# makes it powercycle immediately after rebooting. Do not define
# it if you do not want it.
# (default undefined)
#POWERCYCLE_AFTER_REBOOT = 5
# In case there's isses with halting, you can specify this
# to always poweroff after this amount of time after calling
# halt.
# Note, POWEROFF_AFTER_HALT = 0 does NOT disable it. It just
# makes it poweroff immediately after halting. Do not define
# it if you do not want it.
# (default undefined)
#POWEROFF_AFTER_HALT = 20
2010-11-02 22:13:54 +03:00
# A script or command to power off the box (default undefined)
2010-11-02 21:58:27 +03:00
# Needed for POWEROFF_ON_ERROR and SUCCESS
2010-11-02 22:13:54 +03:00
#
2010-11-02 21:58:27 +03:00
# Example for digital loggers power switch:
#POWER_OFF = wget --no-proxy -O /dev/null -q --auth-no-challenge 'http://admin:admin@power/outlet?5=OFF'
2010-11-02 22:13:54 +03:00
#
2010-11-02 21:58:27 +03:00
# Example for a virtual guest call "Guest".
2010-11-02 22:13:54 +03:00
#POWER_OFF = virsh destroy Guest
2010-11-02 21:58:27 +03:00
2010-11-09 01:41:37 +03:00
# The way to execute a command on the target
# (default ssh $SSH_USER@$MACHINE $SSH_COMMAND";)
# The variables SSH_USER, MACHINE and SSH_COMMAND are defined
#SSH_EXEC = ssh $SSH_USER@$MACHINE $SSH_COMMAND";
2012-03-21 16:21:24 +04:00
# The way to copy a file to the target (install and modules)
2010-11-09 01:41:37 +03:00
# (default scp $SRC_FILE $SSH_USER@$MACHINE:$DST_FILE)
2012-03-21 16:21:24 +04:00
# The variables SSH_USER, MACHINE are defined by the config
# SRC_FILE and DST_FILE are ktest internal variables and
# should only have '$' and not the '${}' notation.
# (default scp $SRC_FILE ${SSH_USER}@${MACHINE}:$DST_FILE)
#SCP_TO_TARGET = echo skip scp for $SRC_FILE $DST_FILE
# If install needs to be different than modules, then this
# option will override the SCP_TO_TARGET for installation.
# (default ${SCP_TO_TARGET} )
#SCP_TO_TARGET_INSTALL = scp $SRC_FILE tftp@tftpserver:$DST_FILE
2010-11-09 01:41:37 +03:00
# The nice way to reboot the target
# (default ssh $SSH_USER@$MACHINE reboot)
# The variables SSH_USER and MACHINE are defined.
#REBOOT = ssh $SSH_USER@$MACHINE reboot
2011-06-13 18:30:00 +04:00
# The way triple faults are detected is by testing the kernel
# banner. If the kernel banner for the kernel we are testing is
# found, and then later a kernel banner for another kernel version
# is found, it is considered that we encountered a triple fault,
# and there is no panic or callback, but simply a reboot.
# To disable this (because it did a false positive) set the following
# to 0.
# (default 1)
#DETECT_TRIPLE_FAULT = 0
2011-12-23 06:37:22 +04:00
# All options in the config file should be either used by ktest
# or could be used within a value of another option. If an option
# in the config file is not used, ktest will warn about it and ask
# if you want to continue.
#
# If you don't care if there are non-used options, enable this
# option. Be careful though, a non-used option is usually a sign
# of an option name being typed incorrectly.
# (default 0)
#IGNORE_UNUSED = 1
2012-01-05 06:51:59 +04:00
# When testing a kernel that happens to have WARNINGs, and call
# traces, ktest.pl will detect these and fail a boot or test run
# due to warnings. By setting this option, ktest will ignore
# call traces, and will not fail a test if the kernel produces
# an oops. Use this option with care.
# (default 0)
#IGNORE_ERRORS = 1
2010-11-02 21:58:27 +03:00
#### Per test run options ####
2010-11-02 22:13:54 +03:00
# The following options are only allowed in TEST_START sections.
# They are ignored in the DEFAULTS sections.
2010-11-02 21:58:27 +03:00
#
2010-11-02 22:13:54 +03:00
# All of these are optional and undefined by default, although
# some of these options are required for TEST_TYPE of patchcheck
# and bisect.
2010-11-02 21:58:27 +03:00
#
2010-11-02 22:13:54 +03:00
#
# CHECKOUT = branch
2010-11-02 21:58:27 +03:00
#
# If the BUILD_DIR is a git repository, then you can set this option
# to checkout the given branch before running the TEST. If you
# specify this for the first run, that branch will be used for
2010-11-02 22:13:54 +03:00
# all preceding tests until a new CHECKOUT is set.
#
2010-11-02 21:58:27 +03:00
#
2011-06-13 18:38:48 +04:00
# TEST_NAME = name
#
# If you want the test to have a name that is displayed in
# the test result banner at the end of the test, then use this
# option. This is useful to search for the RESULT keyword and
# not have to translate a test number to a test in the config.
2010-11-02 22:13:54 +03:00
#
# For TEST_TYPE = patchcheck
2010-11-02 21:58:27 +03:00
#
# This expects the BUILD_DIR to be a git repository, and
2010-11-02 22:13:54 +03:00
# will checkout the PATCHCHECK_START commit.
#
# The option BUILD_TYPE will be ignored.
2010-11-02 21:58:27 +03:00
#
2010-11-02 22:13:54 +03:00
# The MIN_CONFIG will be used for all builds of the patchcheck. The build type
# used for patchcheck is oldconfig.
2010-11-02 21:58:27 +03:00
#
2010-11-02 22:13:54 +03:00
# PATCHCHECK_START is required and is the first patch to
# test (the SHA1 of the commit). You may also specify anything
# that git checkout allows (branch name, tage, HEAD~3).
2010-11-02 21:58:27 +03:00
#
2010-11-02 22:13:54 +03:00
# PATCHCHECK_END is the last patch to check (default HEAD)
#
# PATCHCHECK_TYPE is required and is the type of test to run:
2010-11-02 21:58:27 +03:00
# build, boot, test.
#
# Note, the build test will look for warnings, if a warning occurred
2011-06-15 04:46:25 +04:00
# in a file that a commit touches, the build will fail, unless
# IGNORE_WARNINGS is set for the given commit's sha1
#
# IGNORE_WARNINGS can be used to disable the failure of patchcheck
# on a particuler commit (SHA1). You can add more than one commit
# by adding a list of SHA1s that are space delimited.
2010-11-02 21:58:27 +03:00
#
# If BUILD_NOCLEAN is set, then make mrproper will not be run on
# any of the builds, just like all other TEST_TYPE tests. But
# what makes patchcheck different from the other tests, is if
# BUILD_NOCLEAN is not set, only the first and last patch run
# make mrproper. This helps speed up the test.
#
# Example:
2010-11-02 22:13:54 +03:00
# TEST_START
# TEST_TYPE = patchcheck
# CHECKOUT = mybranch
# PATCHCHECK_TYPE = boot
# PATCHCHECK_START = 747e94ae3d1b4c9bf5380e569f614eb9040b79e7
2010-11-09 01:41:37 +03:00
# PATCHCHECK_END = HEAD~2
2011-06-15 04:46:25 +04:00
# IGNORE_WARNINGS = 42f9c6b69b54946ffc0515f57d01dc7f5c0e4712 0c17ca2c7187f431d8ffc79e81addc730f33d128
2010-11-02 22:13:54 +03:00
#
2010-11-02 21:58:27 +03:00
#
#
2010-11-02 22:13:54 +03:00
# For TEST_TYPE = bisect
2010-11-02 21:58:27 +03:00
#
2010-11-02 22:13:54 +03:00
# You can specify a git bisect if the BUILD_DIR is a git repository.
# The MIN_CONFIG will be used for all builds of the bisect. The build type
# used for bisecting is oldconfig.
2010-11-02 21:58:27 +03:00
#
2010-11-02 22:13:54 +03:00
# The option BUILD_TYPE will be ignored.
#
# BISECT_TYPE is the type of test to perform:
2010-11-02 21:58:27 +03:00
# build - bad fails to build
# boot - bad builds but fails to boot
# test - bad boots but fails a test
#
2010-11-02 22:13:54 +03:00
# BISECT_GOOD is the commit (SHA1) to label as good (accepts all git good commit types)
# BISECT_BAD is the commit to label as bad (accepts all git bad commit types)
2010-11-02 21:58:27 +03:00
#
# The above three options are required for a bisect operation.
#
2010-11-02 22:13:54 +03:00
# BISECT_REPLAY = /path/to/replay/file (optional, default undefined)
2010-11-02 21:58:27 +03:00
#
# If an operation failed in the bisect that was not expected to
# fail. Then the test ends. The state of the BUILD_DIR will be
2010-11-02 22:13:54 +03:00
# left off at where the failure occurred. You can examine the
2010-11-02 21:58:27 +03:00
# reason for the failure, and perhaps even find a git commit
# that would work to continue with. You can run:
#
# git bisect log > /path/to/replay/file
#
2010-11-02 22:13:54 +03:00
# The adding:
2010-11-02 21:58:27 +03:00
#
2010-11-02 22:13:54 +03:00
# BISECT_REPLAY= /path/to/replay/file
2010-11-02 21:58:27 +03:00
#
2010-11-02 22:13:54 +03:00
# And running the test again. The test will perform the initial
# git bisect start, git bisect good, and git bisect bad, and
# then it will run git bisect replay on this file, before
# continuing with the bisect.
2010-11-02 21:58:27 +03:00
#
2010-11-02 22:13:54 +03:00
# BISECT_START = commit (optional, default undefined)
#
# As with BISECT_REPLAY, if the test failed on a commit that
# just happen to have a bad commit in the middle of the bisect,
# and you need to skip it. If BISECT_START is defined, it
# will checkout that commit after doing the initial git bisect start,
# git bisect good, git bisect bad, and running the git bisect replay
# if the BISECT_REPLAY is set.
2010-11-02 21:58:27 +03:00
#
2011-03-08 17:26:31 +03:00
# BISECT_SKIP = 1 (optional, default 0)
#
# If BISECT_TYPE is set to test but the build fails, ktest will
# simply fail the test and end their. You could use BISECT_REPLAY
# and BISECT_START to resume after you found a new starting point,
# or you could set BISECT_SKIP to 1. If BISECT_SKIP is set to 1,
# when something other than the BISECT_TYPE fails, ktest.pl will
# run "git bisect skip" and try again.
#
2011-03-08 17:38:12 +03:00
# BISECT_FILES = <path> (optional, default undefined)
#
# To just run the git bisect on a specific path, set BISECT_FILES.
# For example:
#
# BISECT_FILES = arch/x86 kernel/time
#
# Will run the bisect with "git bisect start -- arch/x86 kernel/time"
#
2010-11-02 22:13:54 +03:00
# BISECT_REVERSE = 1 (optional, default 0)
2010-11-02 21:58:27 +03:00
#
# In those strange instances where it was broken forever
# and you are trying to find where it started to work!
2010-11-02 22:13:54 +03:00
# Set BISECT_GOOD to the commit that was last known to fail
# Set BISECT_BAD to the commit that is known to start working.
# With BISECT_REVERSE = 1, The test will consider failures as
# good, and success as bad.
2010-11-02 21:58:27 +03:00
#
2011-03-08 17:22:39 +03:00
# BISECT_MANUAL = 1 (optional, default 0)
#
# In case there's a problem with automating the bisect for
# whatever reason. (Can't reboot, want to inspect each iteration)
# Doing a BISECT_MANUAL will have the test wait for you to
# tell it if the test passed or failed after each iteration.
# This is basicall the same as running git bisect yourself
# but ktest will rebuild and install the kernel for you.
#
2010-11-02 22:13:54 +03:00
# BISECT_CHECK = 1 (optional, default 0)
2010-11-02 21:58:27 +03:00
#
# Just to be sure the good is good and bad is bad, setting
2010-11-02 22:13:54 +03:00
# BISECT_CHECK to 1 will start the bisect by first checking
# out BISECT_BAD and makes sure it fails, then it will check
# out BISECT_GOOD and makes sure it succeeds before starting
# the bisect (it works for BISECT_REVERSE too).
2010-11-02 21:58:27 +03:00
#
2010-11-02 22:13:54 +03:00
# You can limit the test to just check BISECT_GOOD or
# BISECT_BAD with BISECT_CHECK = good or
# BISECT_CHECK = bad, respectively.
2010-11-02 21:58:27 +03:00
#
ktest: Allow overriding bisect test results
When running the ktest git bisect test, if the BISECT_TYPE is "test",
the bisect is determined to be good or bad based off of the error
code of the test that is run. Currently, if the test returns 0,
it is considered a pass (good), a non-zero is considered a fail (bad).
But it has been requested to add more options, and also change
the meanings of the error codes of the test. For example, one may
want the test to detect if the commit is not good or bad,
(maybe the bisect came to a point where the code in question
does not exist). The test could report an error code that should tell
ktest to skip the commit.
Also, a test could detect that something is horribly wrong and the
biscet should just be aborted.
The new options:
BISECT_RET_GOOD
BISECT_RET_BAD
BISECT_RET_SKIP
BISECT_RET_ABORT
BISECT_RET_DEFAULT
have been added. The first 4 take an integer value that will
represent if the test should be considered a pass, fail, neither
good nor bad, or abort respectively.
The BISECT_RET_DEFAULT will bo whatever is not defined by the
above codes. If only BISECT_RET_DEFAULT is defined, then all tests
will do the default.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
2011-12-22 21:43:57 +04:00
# BISECT_RET_GOOD = 0 (optional, default undefined)
#
# In case the specificed test returns something other than just
# 0 for good, and non-zero for bad, you can override 0 being
# good by defining BISECT_RET_GOOD.
#
# BISECT_RET_BAD = 1 (optional, default undefined)
#
# In case the specificed test returns something other than just
# 0 for good, and non-zero for bad, you can override non-zero being
# bad by defining BISECT_RET_BAD.
#
# BISECT_RET_ABORT = 255 (optional, default undefined)
#
# If you need to abort the bisect if the test discovers something
# that was wrong, you can define BISECT_RET_ABORT to be the error
# code returned by the test in order to abort the bisect.
#
# BISECT_RET_SKIP = 2 (optional, default undefined)
#
# If the test detects that the current commit is neither good
# nor bad, but something else happened (another bug detected)
# you can specify BISECT_RET_SKIP to an error code that the
# test returns when it should skip the current commit.
#
# BISECT_RET_DEFAULT = good (optional, default undefined)
#
# You can override the default of what to do when the above
# options are not hit. This may be one of, "good", "bad",
# "abort" or "skip" (without the quotes).
#
# Note, if you do not define any of the previous BISECT_RET_*
# and define BISECT_RET_DEFAULT, all bisects results will do
# what the BISECT_RET_DEFAULT has.
#
#
2010-11-02 21:58:27 +03:00
# Example:
2010-11-02 22:13:54 +03:00
# TEST_START
# TEST_TYPE = bisect
# BISECT_GOOD = v2.6.36
# BISECT_BAD = b5153163ed580e00c67bdfecb02b2e3843817b3e
# BISECT_TYPE = build
# MIN_CONFIG = /home/test/config-bisect
2010-11-09 01:41:37 +03:00
#
#
#
# For TEST_TYPE = config_bisect
#
# In those cases that you have two different configs. One of them
# work, the other does not, and you do not know what config causes
# the problem.
# The TEST_TYPE config_bisect will bisect the bad config looking for
# what config causes the failure.
#
# The way it works is this:
#
# First it finds a config to work with. Since a different version, or
# MIN_CONFIG may cause different dependecies, it must run through this
# preparation.
#
# Overwrites any config set in the bad config with a config set in
# either the MIN_CONFIG or ADD_CONFIG. Thus, make sure these configs
# are minimal and do not disable configs you want to test:
# (ie. # CONFIG_FOO is not set).
#
# An oldconfig is run on the bad config and any new config that
# appears will be added to the configs to test.
#
# Finally, it generates a config with the above result and runs it
# again through make oldconfig to produce a config that should be
# satisfied by kconfig.
#
# Then it starts the bisect.
#
# The configs to test are cut in half. If all the configs in this
# half depend on a config in the other half, then the other half
# is tested instead. If no configs are enabled by either half, then
# this means a circular dependency exists and the test fails.
#
# A config is created with the test half, and the bisect test is run.
#
# If the bisect succeeds, then all configs in the generated config
# are removed from the configs to test and added to the configs that
# will be enabled for all builds (they will be enabled, but not be part
# of the configs to examine).
#
# If the bisect fails, then all test configs that were not enabled by
# the config file are removed from the test. These configs will not
# be enabled in future tests. Since current config failed, we consider
# this to be a subset of the config that we started with.
#
# When we are down to one config, it is considered the bad config.
#
# Note, the config chosen may not be the true bad config. Due to
# dependencies and selections of the kbuild system, mulitple
# configs may be needed to cause a failure. If you disable the
# config that was found and restart the test, if the test fails
# again, it is recommended to rerun the config_bisect with a new
# bad config without the found config enabled.
#
# The option BUILD_TYPE will be ignored.
#
# CONFIG_BISECT_TYPE is the type of test to perform:
# build - bad fails to build
# boot - bad builds but fails to boot
# test - bad boots but fails a test
#
2011-06-13 18:35:35 +04:00
# CONFIG_BISECT is the config that failed to boot
#
# If BISECT_MANUAL is set, it will pause between iterations.
# This is useful to use just ktest.pl just for the config bisect.
# If you set it to build, it will run the bisect and you can
# control what happens in between iterations. It will ask you if
# the test succeeded or not and continue the config bisect.
#
# CONFIG_BISECT_GOOD (optional)
# If you have a good config to start with, then you
# can specify it with CONFIG_BISECT_GOOD. Otherwise
# the MIN_CONFIG is the base.
2011-03-08 17:22:39 +03:00
#
2010-11-09 01:41:37 +03:00
# Example:
# TEST_START
# TEST_TYPE = config_bisect
# CONFIG_BISECT_TYPE = build
2011-12-30 02:09:01 +04:00
# CONFIG_BISECT = /home/test/config-bad
2010-11-09 01:41:37 +03:00
# MIN_CONFIG = /home/test/config-min
2011-03-08 17:22:39 +03:00
# BISECT_MANUAL = 1
2010-11-09 01:41:37 +03:00
#
2011-07-16 05:16:17 +04:00
#
#
# For TEST_TYPE = make_min_config
#
# After doing a make localyesconfig, your kernel configuration may
# not be the most useful minimum configuration. Having a true minimum
# config that you can use against other configs is very useful if
# someone else has a config that breaks on your code. By only forcing
# those configurations that are truly required to boot your machine
# will give you less of a chance that one of your set configurations
# will make the bug go away. This will give you a better chance to
# be able to reproduce the reported bug matching the broken config.
#
# Note, this does take some time, and may require you to run the
# test over night, or perhaps over the weekend. But it also allows
# you to interrupt it, and gives you the current minimum config
# that was found till that time.
#
# Note, this test automatically assumes a BUILD_TYPE of oldconfig
# and its test type acts like boot.
# TODO: add a test version that makes the config do more than just
# boot, like having network access.
#
2011-07-16 05:25:24 +04:00
# To save time, the test does not just grab any option and test
# it. The Kconfig files are examined to determine the dependencies
# of the configs. If a config is chosen that depends on another
# config, that config will be checked first. By checking the
# parents first, we can eliminate whole groups of configs that
# may have been enabled.
#
# For example, if a USB device config is chosen and depends on CONFIG_USB,
# the CONFIG_USB will be tested before the device. If CONFIG_USB is
# found not to be needed, it, as well as all configs that depend on
# it, will be disabled and removed from the current min_config.
#
2011-07-16 05:16:17 +04:00
# OUTPUT_MIN_CONFIG is the path and filename of the file that will
# be created from the MIN_CONFIG. If you interrupt the test, set
# this file as your new min config, and use it to continue the test.
# This file does not need to exist on start of test.
# This file is not created until a config is found that can be removed.
2011-07-16 05:57:25 +04:00
# If this file exists, you will be prompted if you want to use it
# as the min_config (overriding MIN_CONFIG) if START_MIN_CONFIG
# is not defined.
2011-07-16 05:16:17 +04:00
# (required field)
#
# START_MIN_CONFIG is the config to use to start the test with.
# you can set this as the same OUTPUT_MIN_CONFIG, but if you do
# the OUTPUT_MIN_CONFIG file must exist.
# (default MIN_CONFIG)
#
# IGNORE_CONFIG is used to specify a config file that has configs that
# you already know must be set. Configs are written here that have
# been tested and proved to be required. It is best to define this
# file if you intend on interrupting the test and running it where
# it left off. New configs that it finds will be written to this file
# and will not be tested again in later runs.
# (optional)
#
2012-05-22 01:13:40 +04:00
# MIN_CONFIG_TYPE can be either 'boot' or 'test'. With 'boot' it will
# test if the created config can just boot the machine. If this is
# set to 'test', then the TEST option must be defined and the created
# config will not only boot the target, but also make sure that the
# config lets the test succeed. This is useful to make sure the final
# config that is generated allows network activity (ssh).
# (optional)
#
2011-07-16 05:16:17 +04:00
# Example:
#
# TEST_TYPE = make_min_config
# OUTPUT_MIN_CONFIG = /path/to/config-new-min
# START_MIN_CONFIG = /path/to/config-min
# IGNORE_CONFIG = /path/to/config-tested
2012-05-22 01:13:40 +04:00
# MIN_CONFIG_TYPE = test
# TEST = ssh ${USER}@${MACHINE} echo hi
2011-07-16 05:16:17 +04:00
#