TPTP Platform Project

Project description

The Top-Level TPTP project consists of a large amount of common infrastructure in the areas of user interface, EMF based data models, data collection and communications control, as well as remote execution environments. All of these subsystems are included in the Hyades platform.

The TPTP Platform Project provides these common subsystems as well as all the extension points for leveraging or extending them in solution specific tooling or runtime. This includes Eclipse workbench plug-ins as well as runtime plug-ins on a target and optionally remote system.

The following subsystems are described briefly below:

For more information on the TPTP project, refer to the project overview.

Subsystem descriptions

User Interface
User interfaces are provided to manage and access resources used by the Test and Performance Top Level Project. The interfaces also provide the basic user metaphors desired for interacting with remote systems and the resources involved in order to have consistent end user experiences. A basic navigator and many extension points are provided as well as user preferences and facilities to preserve session user state. Along with the basic navigation and extension points, several controls, viewers and editors are also provided in order to give access to all the resources and make common behavior easier.
The User Interface subsystem has the following components:
Name Description
Log View A list and property viewer for Common Base Events.
Probe Editor An Editor of the detailed description of a probe content as well as itís intended insertion point
Sequence Diagrams A read only UML 2 sequence diagram that can be bound to any appropriate data source, such as call graphs or machine interactions.
Charting Service A service that when fed the proper data can be used to render in SWT or SVG standard business graphs for purposes such as reporting test histories or CPU utilization over time.
Trace and Profiling perspective A single perspective and navigator where trace and monitoring data are shown in the context they were collected in.
EMF models

Data models are intended to be a key integration point in the project and are provided in 5 basic areas.

  1. Trace for the collection of local or distributed execution stacks as well as heap information.
  2. Definition models for the creation and management of test cases as well as behavioral models for tests, and/or related activities.
  3. Test execution histories for the collection of test executions over time.
  4. Generic statistical model for the capturing of arbitrary numerical data over time.
  5. Log model that can hold associated Common Base Events or any logged message that can be transformed into a Common Base Event.

All these models can be cross-linked and made persistent using XMI or in some cases a relational database back end is optionally used.

The Rational Rose generated web based documentation of the data models can be found here.

Analysis and rules

A basic framework is provided to run a query oriented rule against a resource and have it result in user messages and optionally a "quick fix" to the resource. The platform provide this set of interfaces, extension points as well as some simple rules.

Data Collection and Agents

An infrastructure is provided to collect data for the various models. This includes the XML fragment specifications that need to be created as well as the model loaders that will load those fragments into the specific model. Where meaningful, service function is provided to assist in creating the instances of these fragments. For example, a correlation service is provided to assist in creating data that can be correlated across machine boundaries. A set of classes to create Common Base Event instances is also provided.
The data collection and agents are made up of the following components:

Name Description
Framework The basic control flow infrastructure complete with interfaces for the management of an agent an the data it collects. This includes a large set of predefined XML fragment based events that can be sent and will be loaded into the model as appropriate.
JVMPI A JVMPI agent used for profiling a JVM as well as sharing class load events for BCI engines.
JVMTI The Java1.5 replacement for JVMPI. Implementation is TBD.
Logging A default logging agent for this framework as well as an implementation of a Common Base Event.
Communication

Although the actual communication layer can be replaced via plug-in, a default TCP/IP based infrastructure is provided that has an optional security plug-in. Wrapped around the actual communication layer is a generic interface to facilitate the movement of commands and data between the workbench and one or more agents. The agents reside in the system being monitored and shared memory pipes are provided to the common communications infrastructure.

There is also a full management system for agents. This includes registration so they can be shared across process and transaction boundaries on a given machine. The data communication and control interfaces are being exposed with C, Java, and Web services bindings.

Execution Environment

A method for controlling an execution environment for a system under test is often needed. From the basics of attaching, starting, and stopping a remote process as well as providing a predefined link to the communication layer is provided in this subsystem of the platform.

A generic runtime that can be driven by a process description is also provided. The initial intent is to use this environment as a generic test behavior implementation that can be used to drive any public interface, especially a web service binding.

The execution environment has the following components:

Name Description
Correlation Engine An extension point implementation that associates Common Base Events based on various data value oriented algorithms such as URI and timestamps.
Probekit and Byte Code Insertion The technology to instrument a class with byte code based on a specification created using the Probekit editor
Common Base Event and Logging A set of logging interface implementations to match JSR 47, Apache Commons etc. that also support the use of common base events, as well as base Eclipse workbench logging.
Framework A set of APIs and interfaces used to control a separate application. Particularly test execution and monitored applications.
Choreography Engine A dynamically scriptable engine used to run tests without the requirement of generated code. BPEL is used to define the behavioural flow across the various test services.