Beaker is the primary test harness and test deck used to test RHEL. It can be divided into two parts: a test scheduler and individual tests.
At its most basic level, a Beaker test is a program that attempts to perform a task or a series of tasks, and upon completion, determines success or failure and reports the results provided by hooks in the API. Care should be taken when creating the test to make sure all test outcomes are reported properly. A test can consist of code, data and meta data, as well as defining dependencies on other packages (if necessary).The Beaker framework is provided by a series of packages where tools, API libraries, and template files will be installed to the local workstation.
The test scheduler manages the complex job of coordinating the farm machines set aside to run individual tests. It handles all aspects of test execution, ranging from machine selection, distribution installation, fencing (rebooting and reinstalling hosts that have exceeded their scheduled time), and coordinating tests which require multiple hosts to participate with each other. The scheduler also coordinates how tests are launched.
Tests make up one of the most important components of s/RHTS/Beaker. Individual tests are written in a format understood by the scheduler so that they can be automatically run by the scheduler on a variety of distributions, for example, RHEL3, RHEL4, RHEL5, and Fedora; and architectures, for example, i386, ia64, ppc, s390, s390x, and x86_64.
Tests written in the Beaker format can be launched from a lab controller or from a command line if the rhts-devel packages are installed on a local workstation.
Beaker has two major sub-divisions:
Beaker is an Open Source automated testing framework, consisting of the following core parts:
Lab Controller: The Lab Controller maintains inventory data about distros available to install and machines to install on. It can be used by itself or in conjunction with the Beaker server. The Lab Controller is the only conduit of communication between the Lab Machines and the Beaker Server. The Lab Controller is built on top of several existing tools:
Cobbler: Does the actul interations with the test systems (install distro etc).
Conserver: Provides console logging
Fence-agents: Power cycles machines to start PXE installs and to recover.
Smolt: Provides the inventory data. That is, the hardware data of the test systems.
Beaker server The Beaker server is the central point at which all Job related activity occurs. System inventory as well as the ability to provision Systems is also controlled from here. It also holds the repository of Tasks.
Beaker Client The shell based client (CLI) provides users with a subset of functions available in the Beaker web app, plus a few functions that the Beaker web app does not provide.
Beah test harness Beaker needs a test harness to be responsible for executing the tasks on the system, currently it uses Beah, although theoretically any test harness could be used. It runs locally on the provisioned Systems.