摘要 |
A method and apparatus for a fault injection tool having greater flexibility, ease and portability in realizing the basic functionality of the fault injection. The basic functionality of the fault injection process is abstracted into three base classes, namely, a fault injector (FI), a workload generator (WG) and a data collector (DC). A control class performs configuration and management of the objects that are instantiated from the base classes. The control class also implements a graphical user interface. For each base class there is a corresponding core class that performs control and management of a so-called associated "plugin". Each of the core classes can be implemented as a single class or as a pair of distributed classes. If a core class is implemented as a pair, the FI, WG, or DC object controls operation of the FIRemote, WGRemote or DCRemote object, respectively. For each core class, the associated plugin performs the actual functionality. A plugin is a dynamically loaded object that can be linked with the object instantiated from the core class without recompilation of the core class. Each plugin includes at least a corresponding base class and, possibly, hierarchical derived custom classes from the base class. Many actions performed by plugins are identical or similar for a wide range of fault injection, workload and data collection processes. These identical and similar actions are implemented in the abstract base classes. Intermediate classes can be derived from the base classes, and additional intermediate classes or the final end classes are derived from these intermediate classes.
|