Testing solutions

You test solutions by submitting events to an Insight Server. You can use event sequences or a Java class named TestDriver.

Establishing a development environment involves setting up hardware and other infrastructure resources, and the project structure that is required by the development activities. Similar to the development environment, the testing environment must be designed to emulate the production environment as closely as possible.

When your environments are set up, you can begin your solution testing work. In a proof of concept or in early development, you might want to create a Java test client or use Insight Designer to submit events. Your final test environment must use your day-to-day message providers of your deployment environment to access the necessary data that is required to run the associated test cases. When the testing environment is different from the target environment to a significant degree (typically, in terms of size or capacity), some testing can be planned in the deployment environment. However, if you do test in the deployment environment you must coordinate the testing closely. When the solution is successfully deployed, it is important to continuously monitor the actual performance against your projections.

The following figure shows the choice between using a TestDriver class and creating a set of test files; the files can be run independently or as a test scenario. The TestDriver API includes the DebugReceiver interface to help you capture information for debugging and problem determination. First failure data capture (FFDC) services can also be configured to capture FFDC output. Insight Inspector can be used to analyze a recording of a solution that processes the events that you submit.

Testing options

Before you use Insight Server in your test and target environments, consider the following issues to optimize your deployment.

Data capacity

Consider how many physical hosts and processors are needed in your environment. How many container servers and partitions are needed to host your object maps, and how much data you plan to store on each server. The amount of data that is stored in the maps is one factor in determining the appropriate number of partitions. If the data is vital, synchronous replication might be the best option. If performance is a higher priority, asynchronous replication might be the correct choice. For more information, see Planning environment capacity.

Caching topologies

The caching topology that you implement depends on the requirements of your environment and your solution. For more information, see Strategies for persisting system data.

Connectivity

To receive and emit events from an Insight Server, use the connectivity tier (gateway) to route an inbound event and connect the event to the runtime grid. The inbound and outbound binding is defined in the solution connectivity definition (a .cdef file). It is therefore important that you know all of the sending and receiving endpoints, and the type of binding the messages require when you write the descriptor of your solution.

Global aggregation

A solution that uses global aggregates can require large amounts of memory and computer processing capacity. To determine your infrastructure requirements, you must consider many variables, including the extent of event processing that your solution uses and the frequency and complexity of your aggregations. You must also consider the interaction between events and global aggregates, and the size and configuration of your cluster and Insight Server.