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 ==