Residing on Control Host node, are a set of tools for
authoring and executing injection campaigns, and for collecting and analyzing
error-detection and performance data. The principle tool is the ControlHost
application. The ControlHost has two versions: a GUI front-end, and
a command-line utility. The GUI defines an IDE (integrated developers
environment) for writing, editing, and executing campaign scripts, and for
observing, collecting, and analyzing results data. The command-line utility
allows for batch-mode processing: the user uses her/his favorite editor for
editing the campaign script and launches the command-line utility in a shell.
A fault injection "campaign" specifies the behavior for a single
injection experiment. A campaign defines a single experiment as a state
machine. Each state in the machine declares a Jython function
to be executed upon transition to that state. Changes in the the targeted
system can trigger state transitions. Each state transition constitutes a
phase in the experiment. Campaigns can have state machines of arbitrary
complexity and number of iterations (loops).
A campaign is defined as a script written the Jython programming
language, a subset of the Python language. Jython campaign
scripts are interpreted and executed by the ControlHost during runtime.
The ControlHost maintains updates the state transitions, and executes the
state functions, defined within a particular campaign.
The campaign scripting language offers numerous benefits:
- Ease-of-use: campaign
scripting language is based on a standard language;
- Language features such
as control structures (loops, etc.), functions, classes;
- Library features such
as file I/O, IPC, networking, threads, processes, etc;
- Ability to import
commonly used modules, also written in Jython;
- Scalability: the
language and library features built into Jython become available to the