This project is no longer active. It is replaced by Taskotron.

Welcome to autoqa!

Everything here is under heavy development so don't expect anything to
stay stable - modules, APIs, whatever. If it's expected to stay stable we
will mark it as such. This documentation will be kept as up-to-date as possible
but if you have questions please feel free to contact us.

== Architecture ==

There's four main things in this tree: 'autoqa', 'events', 'watchers', and 'tests'.

'autoqa' is the main binary that kicks off tests (using the autotest framework -
see http://autotest.kernel.org/ for details). It's typically supposed to be
run by the 'watcher' scripts in reaction to certain events within the Fedora
development/build process.

Each directory under 'events' corresponds to an event that happens that should
cause each test listed in 'testlist' in that directory to run. These events are
also called 'triggers' or 'buckets'. Each event dir should contain the following:
README: explains the expected environment / arguments for the tests
event.py: An extension of the 'autoqa' script that adds parameter parsing options
specific for the event in question.

Each directory under 'watchers' contains watcher.py which is a script that checks
for a certain type or types of events happening anywhere within the Fedora system
or its development/build process. Every watcher has one or more events associated
with it. Watchers are run by cron or otherwise, and for every event detected they
run the autoqa script to schedule appropriate test.

The 'tests' subdirectory contains the tests. These tests are written for (and
run by) autotest - see http://autotest.kernel.org for more information, or the
(in-progress) Fedora docs at https://fedoraproject.org/wiki/Autotest for more
details about writing tests for autotest. When 'autoqa' script is run after an
event has been detected, all the tests are polled using the
tests/<test>/control.autoqa file to determine which ones are to be run for
an event in question.

== Links ==