Tool Integration

Tool integration is a key ingredient of runtime tracing. It allows the tool to communicate at runtime with the FlowTracer server in order to describe the list of its inputs and its outputs.

There are several integration techniques, differing in terms of the effort and accuracy.

Regardless of the technique, the end result is always the same: enable the integrated tool to communicate its I/O behavior to FlowTracer. A good tool integration is the key for an optimal flow development.

The following table compares the available techniques:

Technique Features Effort
Interception Non-intrusive, system level operation (library based). Available on a limited number of platforms. Often detects more files than the users care for. Requires no effort on the part of the end user or administrator.
Instrumentation The best option for those who have access to a tool's source code. Maximum accuracy and low overhead. Requires some knowledge of the behavior of the tool. Superior to encapsulation. Requires access to tool's source. Most commonly used with scripts rather than with binaries.
Encapsulation Powerful because it does not require any modification of the tool. Also called black-box instrumentation. Requires the writing of a separate encapsulation script, one for each tool. The effort depends on tool. As little as a few minutes, typically a few hours per tool.
Encapsulation On-the-Fly Conceptually the same as encapsulation, except that the capsule code is embedded into the Flow description file, instead of being in a separate file. Useful for commands that defy encapsulation, and for simple input/output relationships. Attractive because it keeps all flow information in a single place.

Practical Considerations for Tool Integration

  • It is possible to build useful flows without any integration. Refer to Task Oriented Flows section for more information.
  • Interception with vrt is very powerful as a discovery tool, but it is somewhat risky in production flows due to the deep level of interaction with the tool. Interception reveals a lot of dependencies, many of which, although true, may be uninteresting in most cases, such as the dependencies with all files in the Perl or Python libraries. This then requires a cleanup using the exclude.tcl file mechanism.
  • A simple encapsulation, meaning one that lists a few of the obvious inputs and outputs, can go a long way. You can quickly arrive at a useful flow, and later you can go back and improve the accuracy of the dependencies by either enabling interception or by enhancing the capsule.

Also in this Section