= Autotest: Fully automated tests under the linux platform =

Autotest is a framework for fully automated testing. It is designed primarily to
test the Linux kernel, though it is useful for many other functions such as
qualifying new hardware. It's an open-source project under the GPL and is used
and developed by a number of organizations, including Google, IBM, Red Hat, and
many others.

Autotest is composed of a number of modules that will help you to do stand alone
tests or setup a fully automated test grid, depending on what you are up to.
A non extensive list of modules is:

* Autotest client: The engine that executes the tests (dir client). Each
autotest test is a a directory inside (client/tests) and it is represented
by a python class that implements a minimum number of methods. The client
is what you need if you are a single developer trying out autotest and executing
some tests. Autotest client executes ''client side control files'', which are
regular python programs, and leverage the API of the client.

* Autotest server: A program that copies the client to remote machines and
controls their execution. Autotest server executes ''server side control files'',
which are also regular python programs, but leverage a higher level API, since
the autotest server can control test execution in multiple machines. If you
want to perform tests slightly more complex involving more than one machine you
might want the autotest server

* Autotest database: For test grids, we need a way to store test results, and
that is the purpose of the database component. This DB is used by the autotest
scheduler and the frontends to store and visualize test results.

* Autotest scheduler: For test grids, we need an utility that can schedule and
trigger job execution in test machines, the autotest scheduler is that utility.

* Autotest web frontend: For test grids, A web app, whose backend is written in
django (http://www.djangoproject.com/) and UI written in gwt
(http://code.google.com/webtoolkit/), lets users to trigger jobs and visualize
test results

* Autotest command line interface: Alternatively, users also can use the
autotest CLI, written in python

== Getting started with autotest client ==

For the impatient:

http://autotest.kernel.org/wiki/QuickStart

== Check out the main project documentation source ==

You can find plenty of information on the autotest wiki

http://autotest.kernel.org/

That also contains references to the project activity

http://autotest.kernel.org/timeline

Links to an online view of the version control system

http://autotest.kernel.org/browser

== Grabbing the latest source ==

http://autotest.kernel.org/wiki/DownloadSource

== Hacking and submitting patches ==

http://autotest.kernel.org/wiki/SubmissionChecklist

== Downloading stable versions ==

http://autotest.kernel.org/wiki/Download

