#LyX 1.1 created this file. For more info see http://www.lyx.org/
\lyxformat 2.16
\textclass docbook
\begin_preamble
<!entity header system "header.sgml">
\end_preamble
\language default
\inputencoding default
\fontscheme default
\graphics default
\paperfontsize default
\spacing single
\papersize Default
\paperpackage a4
\use_geometry 0
\use_amsmath 0
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\defskip medskip
\quotes_language english
\quotes_times 2
\papercolumns 1
\papersides 1
\paperpagestyle default

\layout Title
\added_space_top vfill \added_space_bottom vfill
Linux Test Project HOWTO
\layout Date

10 October 2000
\layout Author

Nate Straz
\layout Abstract

This document explains some of the more in depth topics of the Linux Test
 Project and related testing issues.
 It does not cover basic installation procedures.
 See the INSTALL and README files in the tarball for that information.
\layout Section

Preface
\layout Standard

This document was written to help bring the community up to speed on the
 ins and outs of the Linux Test Project.
\layout Subsection

Copyright
\layout Standard

Copyright (c) 2000 by SGI, Inc.

\layout Standard

Please freely copy and distribute (sell or give away) this document in any
 format.
  It's requested that corrections and/or comments be fowarded to the document
 maintainer.
 You may create a derivative work and distribute it provided that you:
\layout Itemize

Send your derivative work (in the most suitable format such as sgml) to
 the LDP (Linux Documentation Project) or the like for posting on the Internet.
  If not the LDP, then let the LDP know where it is available.

\layout Itemize

License the derivative work with this same license or use GPL.
 Include a copyright notice and at least a pointer to the license used.

\layout Itemize

Give due credit to previous authors and major contributors.

\layout Standard

If you're considering making a derived work other than a translation, it's
 requested that you discuss your plans with the current maintainer.

\layout Subsection

Disclaimer
\layout Standard

Use the information in this document at your own risk.
 I disavow any potential liability for the contents of this document.
 Use of the concepts, examples, and/or other content of this document is
 entirely at your own risk.

\layout Standard

All copyrights are owned by their owners, unless specifically noted otherwise.
  Use of a term in this document should not be regarded as affecting the
 validity of any trademark or service mark.

\layout Standard

Naming of particular products or brands should not be seen as endorsements.

\layout Standard

You are strongly recommended to take a backup of your system before major
 installation and backups at regular intervals.

\layout Section

Introduction
\layout Subsection

What is the Linux Test Project?
\layout Standard

The Linux Test Project (LTP) is an effort to create a set of tools and tests
 to verify the functionality and stability of the Linux kernel.
 We hope this will support Linux development by making unit testing more
 complete and minimizing user impact by building a barrier to keep bugs
 from making it to the user.

\layout Subsection

What is wrong with the current testing model?
\layout Standard

The Linux development community utilizes two important (some out argue most
 important) testing techniques in its normal operations: Design and Code
 Inspections.
 The intent of LTP is to support this by giving developers an ever growing
 set of tools to help identify any operational problems in their code that
 may be missed by human review.
 One of the toughest categories of problems to catch with inspection is
 that of interaction of features.
 With a continuously improving set of tests and tools, developers can get
 an indication of whether their changes may have broken some other functionality.

\layout Standard

There is no such thing as a perfect test base.
  It is only useful it if keeps up with new and changing functionality,
 and if it actually gets used.

\layout Subsection

Are you doing benchmarking?
\layout Standard

Not at  this time.
 We are more interested in functional, regression, and stress testing the
 Linux kernel.
 Benchmarking may be workable to compare the performance among kernel versions.

\layout Subsection

Are you doing standards testing?
\layout Standard

No, we are leaving that to the Linux Standards Base (LSB).
  See the Linux Standards Base
\begin_inset LatexCommand \htmlurl[web site]{http://www.linuxbase.org/}

\end_inset

 for more information.

\layout Section

Structure
\layout Standard

The basic building block of the test project is a
\series bold
test case
\series default
 that consists of a single action and a verification that the action worked.
  The result of the test case is usually restricted to PASS/FAIL.

\layout Standard

A
\series bold
test program
\series default
 is a runnable program that contains one or more test cases.
 Test programs often understand command line options which alter their behavior.
 The options could determine the amount of memory tested, the location of
 temporary files, the type of network packet used, or any other useful parameter.
\layout Standard


\series bold
Test tags
\series default
 are used to pair a unique identifier with a test program and a set of command
 line options.
 Test tags are the basis for test suites.
\layout Section

Writing Tests
\layout Standard

Writing a test case is a lot easier than most people think.
  Any code that you write to examine how a part of the kernel works can
 be adapted into a test case.
  All that is needed is a way to report the result of the action to the
 rest of the world.
  There are several ways of doing this, some more involved than others.

\layout Subsection

Exit Style Tests
\layout Standard

Probably the simplest way of reporting the results of a test case is the
 exit status of your program.
  If your test program encounters unexpected or incorrect results, exit
 the test program with a non-zero exit status, i.e.

\family typewriter
exit(1)
\family default
.
 Conversely, if your program completes as expected, return a zero exit status,
 i.e.

\family typewriter
exit(0)
\family default
.
 Any test driver should be able to handle this type of error reporting.
 If a test program has multiple test cases you won't know which test case
 failed, but you will know the program that failed.

\layout Subsection

Formatted Output Tests
\layout Standard

The next easiest way of reporting the results is to write the results of
 each test case to standard output.
 This allows for the testing results to be more understandable to both the
 tester and the analysis tools.
 When the results are written in a standard way, tools can be used to analyze
 the results.

\layout Section

Testing Tools
\layout Standard

The Linux Test Project has not yet decided on a "final" test harness.
  We have provided a simple solution with
\family typewriter
ltp-pan
\family default
 to make due until a complete solution has been found/created that compliments
 the Linux kernel development process.
  Several people have said we should use such and such a test harness.
 Until we find we need a large complex test harness, we will apply the KISS
 concept.

\layout Subsection

Ltp-pan
\layout Standard


\family typewriter
ltp-pan
\family default
 is a simple test driver with the ability to keep track of orphaned processes
 and capture test output.
 It works by reading a list of test tags and command lines and runs them.
 By default ltp-pan will select a command randomly from the list of test tags,
 wait for it to finish.
 Through command line options you can run through the entire list sequentially,
 run n tests, keep n test running at all times, and buffer test output.
 Ltp-pan can be nested to create very complex test environments.
\layout Standard

Ltp-pan uses an
\emph on
active file
\emph default
, also called a
\emph on
zoo file
\emph default
 to keep track of which tests are currently running.
 This file holds the pid, tag, and a portion of the command line.
 When you start ltp-pan it becomes a test tag in itself, thus it requires a
 name for itself.
 Ltp-pan updates the active file to show which test tags are currently running.
 When a test tag exits, ltp-pan will overwrite the first character with a '#'.
 The active file can be shared between multiple instances of ltp-pan so you
 know which tests were running when the system crashes by looking at one
 file.

\layout Standard

A
\emph on
ltp-pan file
\emph default
 contains a list of test tags for ltp-pan to run.
 The format of a ltp-pan file is as follows:
\layout Code


\latex no_latex
testtag testprogram -o one -p two other command line options
\layout Code


\latex no_latex
# This is a comment.
 It is a good idea to describe the test
\layout Code


\latex no_latex
# tags in your ltp-pan file.
 Tests programs can have different
\layout Code


\latex no_latex
# behaviors depending on the command line options so it is
\layout Code


\latex no_latex
# helpful to describe what each test tag is meant to verify or # provoke.
\layout Code


\latex no_latex
# Some more test cases
\layout Code


\latex no_latex
mm01 mmap001 -m 10000
\layout Code


\latex no_latex
# 40 Mb mmap() test.
\layout Code


\latex no_latex
# Creates a 10000 page mmap, touches all of the map, sync's
\layout Code


\latex no_latex
# it, and munmap()s it.
\layout Code


\latex no_latex
mm03 mmap001 -i 0 -I 1 -m 100
\layout Code


\latex no_latex
# repetitive mmapping test.
\layout Code


\latex no_latex
# Creates a one page map repetitively for one minute.
\layout Code


\latex no_latex
dup02 dup02
\layout Code


\latex no_latex
# Negative test for dup(2) with bad fd
\layout Code


\latex no_latex
kill09 kill09
\layout Code


\latex no_latex
# Basic test for kill(2)
\layout Code


\latex no_latex
fs-suite01 ltp-pan -e -a fs-suite01.zoo -n fs-suite01 -f runtest/fs
\layout Code


\latex no_latex
# run the entire set of file system tests
\layout Standard

The test tags are simple identifiers, no spaces are allowed.
 The test of the line is the program to run, which is done using execvp(3).
 Lines starting with '#' are comments and ignored by ltp-pan.
 It is a good practice to include descriptions with your test tags so you
 can have a reminder what a certain obscure test tag tries to do.
\layout Subsubsection

Examples
\layout Standard

The most basic way to run ltp-pan is by passing the test program and parameters
 on the command line.
 This will run the single program once and wrap the output.

\layout Code


\latex no_latex
$ ltp-pan -a ltp.zoo -n tutor sleep 4
\layout Code


\latex no_latex
<<<test_start>>>
\layout Code


\latex no_latex
tag=cmdln stime=971450564
\layout Code


\latex no_latex
cmdline="sleep 4"
\layout Code


\latex no_latex
contacts=""
\layout Code


\latex no_latex
analysis=exit
\layout Code


\latex no_latex
initiation_status="ok"
\layout Code


\latex no_latex
<<<test_output>>>
\layout Code


\latex no_latex
<<<execution_status>>>
\layout Code


\latex no_latex
duration=103341903 termination_type=exited termination_id=0 corefile=no
 cutime=0 cstime=0
\layout Code


\latex no_latex
<<<test_end>>>
\layout Code


\latex no_latex
$ cat ltp.zoo
\layout Code


\latex no_latex
#9357,tutor,pan/ltp-pan -a ltp.zoo -n tutor sleep 4
\layout Code


\latex no_latex
#9358,cmdln,sleep 4
\layout Code


\latex no_latex
$
\layout Paragraph

How it works
\layout Standard

This example shows the two parameters that are always required by ltp-pan, the
 active file and a test tag for ltp-pan.
 The
\begin_inset Quotes eld
\end_inset

sleep 4
\begin_inset Quotes erd
\end_inset

 on the end of the command line is a test program and parameters that ltp-pan
 should run.
 This test is given the tag
\begin_inset Quotes eld
\end_inset

cmdln.
\begin_inset Quotes erd
\end_inset

 Ltp-pan will run one test randomly, which ends up being cmdln since it is the
 only test that we told ltp-pan about.

\layout Standard

In the active file,
\family typewriter
ltp.zoo
\family default
, ltp-pan writes the pid, test tag, and part of the command line for the currently
 running tests.
 The command lines are truncated so each line will fit on an 80 column display.
 When a test tag finishes, ltp-pan will place a '#' at the beginning of the
 line to mark it as available.
 Here you can see that cmdln and tutor, the name we gave ltp-pan, ran to completion.
 If the computer hangs, you can read this file to see which test programs
 were running.
\layout Standard

We have run one test once.
 Let's do something a little more exciting.
 Let's run one test several times, at the same time.

\layout Code


\latex no_latex
$ ltp-pan -a ltp.zoo -n tutor -x 3 -s 3 -O /tmp sleep 1
\layout Code


\latex no_latex
<<<test_start>>>
\layout Code


\latex no_latex
tag=cmdln stime=971465653
\layout Code


\latex no_latex
cmdline="sleep 1"
\layout Code


\latex no_latex
contacts=""
\layout Code


\latex no_latex
analysis=exit
\layout Code


\latex no_latex
initiation_status="ok"
\layout Code


\latex no_latex
<<<test_output>>>
\layout Code


\latex no_latex

\layout Code


\latex no_latex
<<<execution_status>>>
\layout Code


\latex no_latex
duration=103326814 termination_type=exited termination_id=0 corefile=no
\layout Code


\latex no_latex
cutime=1 cstime=0
\layout Code


\latex no_latex
<<<test_end>>>
\layout Code


\latex no_latex
<<<test_start>>>
\layout Code


\latex no_latex
tag=cmdln stime=971465653
\layout Code


\latex no_latex
cmdline="sleep 1"
\layout Code


\latex no_latex
contacts=""
\layout Code


\latex no_latex
analysis=exit
\layout Code


\latex no_latex
initiation_status="ok"
\layout Code


\latex no_latex
<<<test_output>>>
\layout Code


\latex no_latex

\layout Code


\latex no_latex
<<<execution_status>>>
\layout Code


\latex no_latex
duration=103326814 termination_type=exited termination_id=0 corefile=no
\layout Code


\latex no_latex
cutime=0 cstime=1
\layout Code


\latex no_latex
<<<test_end>>>
\layout Code


\latex no_latex
<<<test_start>>>
\layout Code


\latex no_latex
tag=cmdln stime=971465653
\layout Code


\latex no_latex
cmdline="sleep 1"
\layout Code


\latex no_latex
contacts=""
\layout Code


\latex no_latex
analysis=exit
\layout Code


\latex no_latex
initiation_status="ok"
\layout Code


\latex no_latex
<<<test_output>>>
\layout Code


\latex no_latex

\layout Code


\latex no_latex
<<<execution_status>>>
\layout Code


\latex no_latex
duration=103326814 termination_type=exited termination_id=0 corefile=no
\layout Code


\latex no_latex
cutime=0 cstime=0
\layout Code


\latex no_latex
<<<test_end>>>
\layout Paragraph

How it works
\layout Standard

In this example we run another fake test from the command line, but we run
 it three times (-s 3) and keep three test tags active at the same time
 (-x 3).
 The -O parameter is a directory where temporary files can be created to
 buffer the output of each test tag.
 You can see in the output that cmdln ran three times.
 If the -O option were omitted, your test output would be mixed, making
 it almost worthless.

\layout Itemize

Using a ltp-pan file to run multiple tests
\layout Itemize

Nesting ltp-pan
\layout Standard

For more information on ltp-pan see the man page
\family typewriter
doc/man1/ltp-pan.1
\family default
.
\layout Subsection

Scanner
\layout Standard


\family typewriter
Ltp-scanner
\family default
 is a results analysis tool that understands the
\emph on
rts
\emph default
 style output which
\family typewriter
ltp-pan
\family default
 generates by default.
 It will produce a table summarizing which tests passed and which failed.

\layout Subsection

The Quick-hitter Package
\layout Standard

Many of the tests released use the Quick-hitter test package to perform
 tasks like create and move to a temporary directory, handle some common
 command line parameters, loop, run in parallel, handle signals, and clean
 up.

\layout Standard

There is an example test case,
\family typewriter
doc/examples/quickhit.c
\family default
, which shows how the quick-hitter package can be used.
 The file is meant to be a supplement to the documentation, not a working
 test case.
 Use any of the tests in
\family typewriter
tests/
\family default
 as a template.
\layout Section

To Do
\layout Standard

There are a lot of things that still need to be done to make this a complete
 kernel testing system.
 The following sections will discuss some of the to do items in detail.

\layout Subsection

Configuration Analysis
\layout Standard

While the number of configuration options for the Linux kernel is seen as
 a strength to developers and users alike, it is a curse to testers.
  To create a powerful automated testing system, we need to be able to determine
 what the configuration on the booted box is and then determine which tests
 should be run on that box.

\layout Standard

The Linux kernel has hundreds of configuration options that can be set to
 compile the kernel.
  There are more options that can be set when you boot the kernel and while
 it is running.
  There are also many patches that can be applied to the kernel to add functiona
lity or change behavior.

\layout Subsection

Result Comparison
\layout Standard

A lot of testing will be done in the life of the Linux Test Project.
 Keeping track of the results from all the testing will require some infrastruct
ure.
 It would be nice to take that output from a test machine, feed it to a
 program and receive a list of items that broke since the last run on that
 machine, or were fixed, or work on another test machine but not on this
 one.

\layout Section

Contact information and updates
\layout Literal

URL: http://ltp.sourceforge.net/
\layout Literal

mailing list: ltp@lists.linux.it
\layout Literal

list archive: http://lists.linux.it/pipermail/ltp/
\layout Standard

Questions and comments should be sent to the LTP mailing
 list at ltp@lists.linux.it. To subscribe, please go to
 http://lists.linux.it/pipermail/ltp/.

\layout Standard

The source is also available via CVS.
  See the web site for a web interface and check out instructions.

\layout Section

Glossary
\layout Description

Test IEEE/ANSI
\begin_float footnote
\layout Standard

Kit, Edward, Software Testing in the Real World: Improving the Process.
 P.
 82.
 ACM Press, 1995.
\end_float
:
\shape italic

\newline

\shape default

\shape italic
(i)
\shape default
 An activity in which a system or component is executed under specified
 conditions, the results are observed or record, and an evaluation is made
 of some aspect of the system or component.

\shape italic

\newline

\shape default

\shape italic
(ii)
\shape default
 A set of one or more test cases.

\layout Description

Test\SpecialChar ~
Case A test assertion with a single result that is being verified.
 This allows designations such as PASS or FAIL to be applied to a single
 bit of functionality.
  A single test case may be one of many test cases for testing the complete
 functionality of a system.

\newline
IEEE/ANSI:
\shape italic

\newline
(i)
\shape default
A set of test inputs, execution conditions, and expected results developed
 for a particular objective.

\shape italic

\newline
(ii)
\shape default
 The smallest entity that is always executed as a unit, from beginning to
 end.

\layout Description

Test\SpecialChar ~
Driver A program that handles the execution of test programs.
 It is responsible for starting the test programs, capturing their output,
 and recording their results.
 Ltp-pan is an example of a test driver.
\layout Description

Test\SpecialChar ~
Framework A mechanism for organizing a group of tests.
  Frameworks may have complex or very simple API's, drivers and result logging
 mechanisms.
 Examples of frameworks are TETware and DejaGnu.

\layout Description

Test\SpecialChar ~
Harness A Test harness is the mechanism that connects a test program
 to a test framework.
  It may be a specification of exit codes,  or a set of libraries for formatting
 messages and determining exit codes.
  In TETware, the tet_result() API is the test harness.

\layout Description

Test\SpecialChar ~
Program A single invokable program.
  A test program can contain one or more test cases.
 The test harness's API allows for reporting/analysis of the individual
 test cases.

\layout Description

Test\SpecialChar ~
Suite A collection of tests programs, assertions, cases grouped together
 under a framework.

\layout Description

Test\SpecialChar ~
Tag An identifier that corresponds to a command line which runs a test.
  The tag is a single word that matches a test program with a set of command
 line arguments.

\the_end
