Index Changes
This is version 5. It is not the current version, and thus it cannot be edited.
[Back to current version]   [Restore this version]
The IEPSE team has developed tests for testing the basic functionality of IEP operators. These are located in the open-esb java.net repository at {OpenESB Root}\open-jbi-components\driver-tests\iepse\. The tests are organized into different folders. For example, the folder open-jbi-components\driver-tests\iepse\IEPRelationAggregator has tests for RelationAggregator.

These tests are continuouly being run against the IEP codebase (usually trunk) to test for regression. Following combinations of OS and database are currently being tested: NT/Derby, Solaris/Oracle, NT/DB2. We are working towards making the test results available of java.net.

To test an individual project

  1. Open the comp app project (e.g. open-jbi-components\driver-tests\iepse\IEPDeleteStream\DeleteStreamApp)
  2. Right click on the comp app project node and select "Clean and Build". The build should show a message that it was successful.
  3. Right click on the comp app project node and select "Test". The Netbeans "JUnits Test Results" window will show the results. The right side will have the name of the test that failed and right side will have the logs from the Netbeans Composite App Test Manager (the module that executes the tests).

Important notes on the tests

  • The tests have been written using N2M test framework. Please see for details
  • Many test have wait statements (in the test script). These waits are used to introduce time lags between sending of events. These waits are useful to make the test outputs predictable in some case. This is required in some cases like TupleBasedWindow may treat these events sent together differently than the events sent with some time lag. For example, if the size of the window is 1 and five events are sent simultaneously, then only one event can occupy the window because the size is 1. The event which gets retained in the window could be any one of the five events. So, to make the test more predicatable it is better to send the five events with a log of 1 second between each event. Other examples are cases where the operator has some time relatd property, for example, TimeBasedWindow, TimeBasedAggregator, NotificationWindow and BatchedOutputStream. There could be other reasons why the time lags help. We found that a large number of test cases could be made predictable by adding appropriate lags.
  • The tests can be run using any database that IEP supports. In a handful of cases, the output for a test can differ based on the database being used. The N2M framework's "Context based configuration" was used to support such test cases. For example, see the test case open-jbi-components\driver-tests\iepse\IEPRelationAggregator\RelationAggregatorBApp\test\TupleBasedWindowInput. The test has a TupleBasedAggregator that uses AVG function. The AVG is applied to intergers which are part of the incoming events. The result of the operation is different for Derby and Oracle because each uses a differnt rounding off scheme. This results in different output file for Derby and Oracle. Both are valid outputs and "Context based configuration" was used to specify the different output files based on the context (in this case the database being used). Other cases where the outputs can differ is when the RelationOutput is used as the output operator. There could be other cases which needs to be evaluated carefully.
  • Some tests pass with one database and fail with others. At this point more tests pass on Derby than on Oracle. In such cases, the test has been marked as in progress for the plaform on which it fails (featurestatus=progress) and a bug filed. For example, see open-jbi-components\driver-tests\iepse\IEPRelationAggregator\RelationAggregatorApp\test\GapWindowInput. The corresponding bug is https://open-esb.dev.java.net/issues/show_bug.cgi?id=1311
  • The N2M framework supports a special wait command for testing TimeBasedAggregators. Please see the section "Special wait command for IEP" for details
  • During test development, we found that sometimes, the test definition needed to be changed to make the test workable/predictable for a particular database. In such cases, it is important to ensure that the changed test case works for all platforms.

JSPWiki v2.4.100
[RSS]
« Home Index Changes Prefs
This particular version was published on 12-Feb-09 17:58 PM, -0800 by Prashant Bhagat